#!/usr/bin/env bash unset PATH readonly PATH source ./utils/main.sh source ./utils/array.sh is_report_valid() { local report=() current_sign='' i=0 read -ra report <<<"$1" for ((i = 0; i < ${#report[@]} - 1; i++)); do local a="${report[i]}" b="${report[i + 1]}" diff='' sign='' diff="$((a - b))" ((${diff#-} >= 1 && ${diff#-} <= 3)) || return 1 if ((diff > 0)); then sign='+' else sign='-' fi [[ -z "${current_sign:-}" ]] && current_sign="$sign" [[ "$sign" != "$current_sign" ]] && return 1 done return 0 } p1() { local input="$1" result=0 line='' while read -r line; do is_report_valid "$line" && ((result++)) done <<<"$input" printf '%d' "$result" } p2() { local input="$1" result=0 line='' while read -r line; do local original_report read -ra original_report <<<"$line" is_report_valid "$line" && ((result++)) && continue for ((i = 0; i < ${#original_report[@]}; i++)); do local report report=("${original_report[@]::"$i"}" "${original_report[@]:"$((i + 1))"}") is_report_valid "${report[*]}" && ((result++)) && continue 2 done done <<<"$input" printf '%d' "$result" } main "$@"