Files
aoc-jai-2025/day3.jai
2026-06-22 11:08:37 -04:00

63 lines
1.6 KiB
Plaintext

sample :: #string END
987654321111111
811111111111119
234234234234278
818181911112111
END;
main :: () {
content := read_entire_file("day3.input");
// solve(content, 2);
solve(content, 12);
}
solve :: (input: string, num_batteries: int) {
total := 0;
for line: split(input, "\n") {
if line.count == 0 continue;
assert(line.count > 1);
max_digit_index := line.count - num_batteries;
index := 0;
current_voltage := 0;
current_voltage_power := num_batteries;
while index <= max_digit_index && current_voltage_power > 0 {
biggest_digit := 0;
biggest_digit_index := index;
for i: index..max_digit_index {
char := line[i] - #char "0";
if char > biggest_digit {
biggest_digit = char;
biggest_digit_index = i;
}
}
current_voltage += biggest_digit * pow(10, current_voltage_power - 1);
current_voltage_power -= 1;
index = biggest_digit_index + 1;
max_digit_index = line.count - current_voltage_power;
//print_vars(current_voltage, biggest_digit, current_voltage_power, index, biggest_digit_index, max_digit_index);
}
print("%: %\n", it_index, current_voltage);
total += current_voltage;
}
print("%\n", total);
}
pow :: (base: s64, exp: s64) -> s64 {
if exp == 0 return 1;
if exp == 1 return base;
result := 1;
for 0..exp-1 {
result *= base;
}
return result;
}
#import "Basic";
#import "File";
#import "Math";
#import "Print_Vars";
#import "String";