finish day2
This commit is contained in:
34
day2.jai
34
day2.jai
@@ -7,7 +7,21 @@ Chunk :: struct {
|
|||||||
original: string;
|
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;
|
duplicate_sum := 0;
|
||||||
int_sb: String_Builder;
|
int_sb: String_Builder;
|
||||||
for range: split(input, ",") {
|
for range: split(input, ",") {
|
||||||
@@ -19,7 +33,7 @@ solve_second :: (input: string, enable_debug_logging := false) {
|
|||||||
for i: left..right {
|
for i: left..right {
|
||||||
print_to_builder(*int_sb, "%", i);
|
print_to_builder(*int_sb, "%", i);
|
||||||
i_str := builder_to_string(*int_sb);
|
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 all_equal(array_view(it.chunks, 0)) {
|
||||||
if enable_debug_logging print_vars(it);
|
if enable_debug_logging print_vars(it);
|
||||||
duplicate_sum += i;
|
duplicate_sum += i;
|
||||||
@@ -31,9 +45,19 @@ solve_second :: (input: string, enable_debug_logging := false) {
|
|||||||
print_vars(duplicate_sum);
|
print_vars(duplicate_sum);
|
||||||
}
|
}
|
||||||
|
|
||||||
main :: () {
|
split_into_halves :: (s: string) -> [..]Chunk {
|
||||||
content := read_entire_file("day2.input");
|
result: [..]Chunk;
|
||||||
solve_second(content);
|
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 {
|
split_into_even_chunks :: (s: string) -> [..]Chunk {
|
||||||
|
|||||||
Reference in New Issue
Block a user