57 lines
921 B
Awk
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
|
|
}
|