Files
advent-of-code/2024/day-7/solution-1.awk
2024-12-08 02:25:50 +08:00

47 lines
917 B
Awk

#!/usr/bin/env awk
BEGIN {
FS = "[: ]"
total = 0
}
{
sum = $1
num_opers = 2
num_of_nums = NF - 2
num_of_results = 1
# Create list of numbers
# Create list of results
for (i = 3; i <= NF; i++) {
nums[i-2] = $i
}
results[1] = nums[1]
# Starting applying additions to results
# Starting from second number
for (i = 2; i <= num_of_nums; i++) {
number = nums[i]
for (j = 1; j <= num_of_results; j++) {
element = results[j]
results[j+num_of_results] = element * number
results[j] = results[j] + number
}
num_of_results *= num_opers
}
expected = ( num_of_nums - 1 ) * num_opers
# Check results
for (i=1; i <= num_of_results; i++) {
if ( results[i] == $1 ) {
start_val = i % num_of_nums
stack_num = (i - start_val) / num_of_nums
total = total + $1
break
}
}
delete results
delete nums
}
END {
print total
}