Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon.

Pages: 1-

Challenge

Name: Anonymous 2013-10-01 2:22

Given 10000000 random 8bit signed integers, create the fastest program to sum them.
Assembly not allowed. Time is counted only at the process of summation.

Name: Anonymous 2013-10-01 13:56

Do your own homework.

Name: Anonymous 2013-10-01 15:14

(apply + integers)

Fastest to write.

Name: Anonymous 2013-10-01 16:11

>>2
This.
/prog/ challenges should not be thinly-veiled homework help threads.

Honestly, if you need to consult the internet for your homework, you're not cut out for programming anyway. Just learn to do it on your own. Having someone do your work might help you for an individual assignment, and ultimately help your class's grade, but it won't help you personally understand anything.

Name: Anonymous 2013-10-01 16:18

enterprise-level C, this should run in O(log(n))


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define LENGTH 10000000
#define MAX 128

int sum(int* arr, int len)
{
    if(len == 2)
        return (arr[0] + arr[1]);
    else if(len == 1)
        return arr[0];
    else
    {
        int len1 = (len / 2), len2 = (len / 2) + (len % 2);
        int* arr1 = (int*) malloc(sizeof(int) * len1);
        int* arr2 = (int*) malloc(sizeof(int) * len2);
        memcpy(arr1, arr, sizeof(int) * len1);
        memcpy(arr2, (arr + len1), sizeof(int) * len2);
        int toReturn = sum(arr1, len1) + sum(arr2, len2);
        free(arr1);
        free(arr2);
        return toReturn;
    }
}

int main()
{
    int* arr = (int*) malloc(sizeof(int) * LENGTH);

    for(int i = 0; i < LENGTH; i++)
        arr[i] = rand() % MAX;

    printf("Sum is: %d", sum(arr, LENGTH));
    free(arr);
    return 0;
}

Name: Anonymous 2013-10-01 16:32

>>5
OPTIMIZED enterprise-level C


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define LENGTH 10000000
#define MAX 128

int sum(int* arr, int len)
{
    if(len == 2)
        return (arr[0] + arr[1]);
    else if(len == 1)
        return arr[0];
    else
    {
        int len1 = (len / 2), len2 = (len / 2) + (len % 2);
        return (sum(arr, len1) + sum(arr + len1, len2));
    }
}

int main()
{
    int* arr = (int*) malloc(sizeof(int) * LENGTH);

    for(int i = 0; i < LENGTH; i++)
        arr[i] = rand() % MAX;

    printf("Sum is: %d", sum(arr, LENGTH));
    free(arr);
    return 0;
}

Name: Anonymous 2013-10-01 17:50

`>Hakase! Hakase! Hakase! Hakase!
`>Nano! Nano! Nano! Nano!

Don't change these.
Name: Email:
Entire Thread Thread List