finish day2
This commit is contained in:
34
day2.jai
34
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 {
|
||||
|
||||
Reference in New Issue
Block a user