day04
This commit is contained in:
parent
937b633d8a
commit
843f0211b6
61
day04.sh
Executable file
61
day04.sh
Executable file
@ -0,0 +1,61 @@
|
||||
#!/usr/bin/env bash
|
||||
unset PATH; readonly PATH
|
||||
source ./utils/main.sh
|
||||
|
||||
count_patterns_occurences() {
|
||||
local input="$1"; shift
|
||||
local patterns=("$@") result=0
|
||||
|
||||
for pattern in "${patterns[@]}"; do
|
||||
local text="$input"
|
||||
while [[ -n "$text" ]]; do
|
||||
if [[ "$text" =~ $pattern ]]; then
|
||||
((result++))
|
||||
text="${text#*"${BASH_REMATCH[0]}"}"
|
||||
text="${BASH_REMATCH[0]:1}$text"
|
||||
else
|
||||
text=''
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
printf '%d' "$result"
|
||||
}
|
||||
|
||||
p1() {
|
||||
local input="$1" line result=0 cols=0
|
||||
|
||||
read -ra line <<< "$input"
|
||||
cols="$((${#line}+1))"
|
||||
|
||||
local patterns=(
|
||||
"XMAS"
|
||||
"SAMX"
|
||||
"X.{$((cols))}M.{$((cols))}A.{$((cols))}S"
|
||||
"S.{$((cols))}A.{$((cols))}M.{$((cols))}X"
|
||||
"X.{$((cols-1))}M.{$((cols-1))}A.{$((cols-1))}S"
|
||||
"S.{$((cols-1))}A.{$((cols-1))}M.{$((cols-1))}X"
|
||||
"X.{$((cols-2))}M.{$((cols-2))}A.{$((cols-2))}S"
|
||||
"S.{$((cols-2))}A.{$((cols-2))}M.{$((cols-2))}X"
|
||||
)
|
||||
|
||||
count_patterns_occurences "$input" "${patterns[@]}"
|
||||
}
|
||||
|
||||
p2() {
|
||||
local input="$1" line result=0 cols=0
|
||||
|
||||
read -ra line <<< "$input"
|
||||
cols="$((${#line}+1))"
|
||||
|
||||
local patterns=(
|
||||
"M.M.{$((cols-2))}A.{$((cols-2))}S.S"
|
||||
"M.S.{$((cols-2))}A.{$((cols-2))}M.S"
|
||||
"S.M.{$((cols-2))}A.{$((cols-2))}S.M"
|
||||
"S.S.{$((cols-2))}A.{$((cols-2))}M.M"
|
||||
)
|
||||
|
||||
count_patterns_occurences "$input" "${patterns[@]}"
|
||||
}
|
||||
|
||||
main "$@"
|
Loading…
x
Reference in New Issue
Block a user