finish day2

This commit is contained in:
2026-06-22 10:14:36 -04:00
parent e07798d418
commit b8ba9942f5

View File

@@ -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 {