cleanup
[advent21.git] / 16b.c
diff --git a/16b.c b/16b.c
index 4310a7b..437560e 100644 (file)
--- a/16b.c
+++ b/16b.c
@@ -38,13 +38,13 @@ unsigned long parse_packet(struct stream *f)
 {
        int packetversion  __attribute__((unused)) = bin2int(f, 3);
        int packettype = bin2int(f, 3);
-       unsigned long result = 0;
+       unsigned long r = 0;
 
        //literal
        if (packettype == 4) {
                while (next(f) == 1)
-                       result = result*16+bin2int(f, 4);
-               result = result*16+bin2int(f, 4);
+                       r = r*16+bin2int(f, 4);
+               r = r*16+bin2int(f, 4);
        //operator
        } else {
                int lengthtypeid = next(f);
@@ -64,45 +64,33 @@ unsigned long parse_packet(struct stream *f)
                                packets[i] = parse_packet(f);
                }
 
-               //sum
-               if (packettype == 0) {
+               if (packettype == 0) {        //sum
                        for (int i = 0; i<npackets; i++)
-                               result += packets[i];
-               //product
-               } else if (packettype == 1) {
-                       result = 1;
+                               r += packets[i];
+               } else if (packettype == 1) { //product
+                       r = 1;
                        for (int i = 0; i<npackets; i++)
-                               result *= packets[i];
-               //minimum
-               } else if (packettype == 2) {
-                       result = ULONG_MAX;
+                               r *= packets[i];
+               } else if (packettype == 2) { //minimum
+                       r = ULONG_MAX;
                        for (int i = 0; i<npackets; i++)
-                               result = packets[i] < result ? packets[i] : result;
-               //maximum
-               } else if (packettype == 3) {
-                       result = 0;
+                               r = packets[i] < r ? packets[i] : r;
+               } else if (packettype == 3) { //maximum
                        for (int i = 0; i<npackets; i++)
-                               result = packets[i] > result ? packets[i] : result;
-               //greater than
-               } else if (packettype == 5) {
-                       result = packets[0] > packets[1];
-               //less than
-               } else if (packettype == 6) {
-                       result = packets[0] < packets[1];
-               //equal to
-               } else if (packettype == 7) {
-                       result = packets[0] == packets[1];
-               //unknown
-               } else {
-                       fprintf(stderr, "unknown operator: %d\n", packettype);
-                       exit(1);
+                               r = packets[i] > r ? packets[i] : r;
+               } else if (packettype == 5) { //greater than
+                       r = packets[0] > packets[1];
+               } else if (packettype == 6) { //less than
+                       r = packets[0] < packets[1];
+               } else if (packettype == 7) { //equal to
+                       r = packets[0] == packets[1];
                }
        }
-       return result;
+       return r;
 }
 
 int main()
 {
        struct stream f = {.pos=0, .buf=""};
-       printf("r: %lu\n", parse_packet(&f));
+       printf("%lu\n", parse_packet(&f));
 }