This commit is contained in:
2024-12-07 23:38:44 +08:00
parent 5c6ae83f8e
commit fd3020b546

50
2024/day-7/solution-2.awk Normal file
View File

@ -0,0 +1,50 @@
#!/usr/bin/env awk
BEGIN {
FS = "[: ]"
total = 0
}
{
sum = $1
num_opers = 3 # +, *, ||
num_of_nums = NF - 2
num_of_results = 1
# Create list of numbers
for (i = 3; i <= NF; i++) {
nums[i-2] = $i
}
results[1] = nums[1]
# Starting applying operator
# Starting from second number
# index range of num_of_results is for each operator
# 1 - num_of_results - addition
# num_of_results+1 - num_of_results*2 - multiplication
# num_of_results*2+1 - num_of_results*3 - concat
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 # Addition
results[j] = results[j] + number # Multiplication
results[j+num_of_results*2] = (element "" number) + 0 # Concat
}
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
}