aoc-2023/04.awk

33 lines
476 B
Awk

{
# strip leading game
sub(/.*: /, "")
# counter for winning sum
p = -1
# set winning numbers
for (i = 1; $i != "|"; i++) {
a[$i] = 1
}
# normal numbers
for (; i <= NF; i++) {
if (a[$i]) {
# p only used for part 1
p += 1
# count[R] is scratchcard count of record R, minus 1
count[NR+p+1] += count[NR] + 1
sc += count[NR] + 1
}
}
if (p != -1) {
s += 2 ^ p
}
# clear a
delete a
# original scratchcard
sc += 1
}
END {
print s
print sc
}