common.c (1225B)
1 #include "common.h" 2 3 void print_blueprint(blueprint *bp) { 4 size_t i, j; 5 for (i = 0; i < RTYPES; i++) { 6 printf("(%zu):\t", i); 7 for (j = 0; j < MTYPES; j++) { 8 printf("%llu\t", bp->c[i][j]); 9 } 10 printf("\n"); 11 } 12 } 13 14 blueprint *parse(char **lines, size_t nlines) { 15 uint64_t idx; 16 blueprint *bps = malloc(nlines * sizeof(*bps)); 17 18 size_t i; 19 for (i = 0; i < nlines; i++) { 20 char *line = lines[i]; 21 memset(bps[i].c, 0, RTYPES * MTYPES * sizeof(bps[i].c[0][0])); 22 line = sread_next_u64(&idx, line); 23 line = sread_next_u64(&bps[i].c[ORE][ORE], line); 24 line = sread_next_u64(&bps[i].c[CLA][ORE], line); 25 line = sread_next_u64(&bps[i].c[OBS][ORE], line); 26 line = sread_next_u64(&bps[i].c[OBS][CLA], line); 27 line = sread_next_u64(&bps[i].c[GEO][ORE], line); 28 line = sread_next_u64(&bps[i].c[GEO][OBS], line); 29 } 30 31 return bps; 32 } 33 34 state start_state() { 35 state s; 36 37 memset(s.nmin, 0, MTYPES * sizeof(s.nmin[0])); 38 s.nrob[ORE] = 1; 39 s.nrob[CLA] = 0; 40 s.nrob[OBS] = 0; 41 s.nrob[GEO] = 0; 42 43 return s; 44 } 45 46 state empty_state() { 47 state s; 48 49 memset(s.nmin, 0, MTYPES * sizeof(s.nmin[0])); 50 s.nrob[CLA] = 0; 51 s.nrob[OBS] = 0; 52 s.nrob[GEO] = 0; 53 s.nrob[ORE] = 0; 54 55 return s; 56 }