/* ex1-c: Advent2020 game, day 8/game 1 */ #include #include #include struct list { unsigned size; unsigned last; unsigned long long *list; }; #define DEFNSUM 25 #define BLOCKSIZE 1024 /* number of elements for realloc() */ void print_list(list) struct list *list; { unsigned i, psize=list->last; unsigned long long *ptr=list->list; fprintf(stderr, "PROGRAM: address=%p pinstr=%p size=%d\n", list, ptr, psize); for (i=0; ilist=malloc(sizeof(unsigned long long)*BLOCKSIZE); list->size=BLOCKSIZE; list->last=0; } cur=list->last; size=list->size; if (cur == size) { size+=BLOCKSIZE; list->size=size; list->list=realloc(list->list, sizeof(unsigned long long)*size); fprintf(stderr, "realloc buf: cur=%d size=%d ptr=%p\n", cur, size, list->list); } ptr=list->list+cur; sscanf(line, "%d", &val); *ptr=val; list->last++; return list; } unsigned long long calc(list, cur, nsum) struct list *list; int cur; unsigned nsum; { unsigned long long *ptr=list->list; unsigned long long res=*(ptr+cur); int start=cur-nsum, i, j; for (i=start; ilast; ++i) { if (res=calc(list, i, nsum)) { printf("%s : res=%llu\n", *av, res); break; } } exit (0); }