aocc23

Advent of Code 2023
git clone git://www.tkruger.se/aocc23.git
Log | Files | Refs | README

common.c (478B)


      1 #include "common.h"
      2 
      3 uint64_t chrs_to_node(char *s) {
      4   return (((uint64_t)s[0] - 'A') * 26 * 26) + (((uint64_t)s[1] - 'A') * 26) +
      5          ((uint64_t)s[2] - 'A');
      6 }
      7 
      8 void read_graph(uint64_t *lefts, uint64_t *rights, char **lines,
      9                 size_t nlines) {
     10   size_t i;
     11   size_t n, l, r;
     12 
     13   for (i = 2; i < nlines; i++) {
     14     n = chrs_to_node(lines[i]);
     15     l = chrs_to_node(&lines[i][7]);
     16     r = chrs_to_node(&lines[i][12]);
     17     lefts[n] = l;
     18     rights[n] = r;
     19   }
     20 }