Files
advent-of-code/2024/day-2/solution-2.awk
2024-12-03 10:20:46 +08:00

57 lines
921 B
Awk

#!/usr/bin/env awk
BEGIN {
# Initialize number of lines counter
safe = 0
}
{
# Set initial order, 0 for asc, 1 for desc
if ($2 > $1) {
order = 0
} else {
order = 1
}
# Loop through items on each line
for (i = 1; i < NF; i++) {
j = i + 1
k = i + 2
# See if order is matched
if ( $i < $j && order == 1 ) {
if ( $i < $k && order == 1 ) {
next
}
} else if ( $i > $j && order == 0) {
if ( $i > $k && order == 0 ) {
next
}
}
# Get absolute diff value
if ( $i < $j ) {
diff = $j - $i
} else {
diff = $i - $j
}
if ( $i < $k ) {
diff2 = $k - $i
} else {
diff2 = $i - $k
}
# Verify diff within parameters
if (diff > 3 || diff < 1) {
if (diff2 > 3 || diff2 < 1) {
next
}
}
}
# If all pass, increment safe counter
safe += 1
}
END {
print safe
}