From b8ba9942f5d9b1f395036dd87574a905ce47f23a Mon Sep 17 00:00:00 2001 From: Grant Horner Date: Mon, 22 Jun 2026 10:14:36 -0400 Subject: [PATCH] finish day2 --- day2.jai | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/day2.jai b/day2.jai index 189293c..b14d4b4 100644 --- a/day2.jai +++ b/day2.jai @@ -7,7 +7,21 @@ Chunk :: struct { original: string; } -solve_second :: (input: string, enable_debug_logging := false) { +main :: () { + content := read_entire_file("day2.input"); + solve_first(content); + solve_second(content); +} + +solve_first :: (input: string) { + solve(input, split_into_halves); +} + +solve_second :: (input: string) { + solve(input, split_into_even_chunks); +} + +solve :: (input: string, chunking_fn: (string) -> [..]Chunk, enable_debug_logging := false) { duplicate_sum := 0; int_sb: String_Builder; for range: split(input, ",") { @@ -19,7 +33,7 @@ solve_second :: (input: string, enable_debug_logging := false) { for i: left..right { print_to_builder(*int_sb, "%", i); i_str := builder_to_string(*int_sb); - for split_into_even_chunks(i_str) { + for chunking_fn(i_str) { if all_equal(array_view(it.chunks, 0)) { if enable_debug_logging print_vars(it); duplicate_sum += i; @@ -31,9 +45,19 @@ solve_second :: (input: string, enable_debug_logging := false) { print_vars(duplicate_sum); } -main :: () { - content := read_entire_file("day2.input"); - solve_second(content); +split_into_halves :: (s: string) -> [..]Chunk { + result: [..]Chunk; + if s.count % 2 != 0 return result; + + chunk_len := s.count / 2; + chunks := Chunk.{original=s}; + chunk_i := 0; + for chunk_i: 0..1 { + array_add(*chunks.chunks, string.{data=s.data + (chunk_i * chunk_len), count = chunk_len}); + } + array_add(*result, chunks); + + return result; } split_into_even_chunks :: (s: string) -> [..]Chunk {