updated day 14
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Thu, 17 Dec 2020 15:04:01 +0000 (09:04 -0600)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Thu, 17 Dec 2020 15:04:01 +0000 (09:04 -0600)
day14.onyx

index 2dff0895f696309bd64fee77a8332414af22d76f..1dd7bfd0d9984b19ee120b49a1cfa75068834605 100644 (file)
@@ -24,7 +24,7 @@ bitmask_p1 :: proc (mask: Bitmask, val: u64) -> u64 {
 
 // Part 2
 BitmaskIter :: struct {
-       floating_indicies : [] u8;
+       floating_indicies : [..] u8;
        val               : u64;
        done              : bool;
 }
@@ -33,12 +33,9 @@ bitmask_iter_make :: proc (mask: Bitmask, val: u64) -> BitmaskIter {
        bmi : BitmaskIter;
        bmi.done = false;
 
-       floating_count := 0;
-       for m: mask do if m == 2 do floating_count += 1;
-       allocator.alloc_slice(^bmi.floating_indicies, floating_count);
+       array.init(^bmi.floating_indicies, 8);
 
        v := val;
-       j := 0;
        for i: 0 .. MASK_SIZE {
                if mask[i] == 1 {
                        v |= 1 << cast(u64) i;
@@ -47,8 +44,7 @@ bitmask_iter_make :: proc (mask: Bitmask, val: u64) -> BitmaskIter {
                if mask[i] == 2 {
                        v &= ~(1 << cast(u64) i);
 
-                       bmi.floating_indicies[j] = cast(u8) i;
-                       j += 1;
+                       array.push(^bmi.floating_indicies, cast(u8) i);
                }
        }
 
@@ -57,7 +53,7 @@ bitmask_iter_make :: proc (mask: Bitmask, val: u64) -> BitmaskIter {
 }
 
 bitmask_iter_free :: proc (use bmi: ^BitmaskIter) {
-       cfree(floating_indicies.data);  
+       array.free(^floating_indicies);
 }
 
 bitmask_iter_done :: proc (use bmi: ^BitmaskIter) -> bool do return done;
@@ -137,4 +133,4 @@ main :: proc (args: [] cstr) {
        for e: mem.entries do s += e.value;
 
        printf("Sum: %l\n", s);
-}
\ No newline at end of file
+}