[bash] Solve Day 2
This commit is contained in:
parent
3afccf369f
commit
0f431e9e3f
60
bash/day2.sh
Executable file
60
bash/day2.sh
Executable file
|
@ -0,0 +1,60 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
sumNumbers() {
|
||||||
|
local sum
|
||||||
|
sum=0
|
||||||
|
while IFS= read -r num || [[ -n "$num" ]]; do
|
||||||
|
sum=$(( "$sum" + "$num" ))
|
||||||
|
done
|
||||||
|
echo "$sum"
|
||||||
|
}
|
||||||
|
|
||||||
|
gameIds () {
|
||||||
|
sed 's|Game \(.*\): .*|\1|'
|
||||||
|
}
|
||||||
|
|
||||||
|
maxColour() {
|
||||||
|
local colour counts
|
||||||
|
colour=$1
|
||||||
|
counts=$(echo "0 $colour"
|
||||||
|
sed 's|Game .*: ||;
|
||||||
|
s|, |\n|g;
|
||||||
|
s|; |\n|g' |
|
||||||
|
grep "$colour")
|
||||||
|
sort --general-numeric-sort <<< "$counts" |
|
||||||
|
tail -1 |
|
||||||
|
sed "s| $colour||"
|
||||||
|
}
|
||||||
|
|
||||||
|
gamesWhichFitTheLimit() {
|
||||||
|
local maxReds maxGreens maxBlues
|
||||||
|
while IFS= read -r line || [[ -n "$line" ]]; do
|
||||||
|
maxReds=$(maxColour "red" <<< "$line")
|
||||||
|
maxGreens=$(maxColour "green" <<< "$line")
|
||||||
|
maxBlues=$(maxColour "blue" <<< "$line")
|
||||||
|
if [[ "$maxReds" -le 12 ]] && [[ "$maxGreens" -le 13 ]] && [[ "$maxBlues" -le 14 ]]; then
|
||||||
|
echo "$line"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
powers () {
|
||||||
|
local maxReds maxGreens maxBlues
|
||||||
|
while IFS= read -r line || [[ -n "$line" ]]; do
|
||||||
|
maxReds=$(maxColour "red" <<< "$line")
|
||||||
|
maxGreens=$(maxColour "green" <<< "$line")
|
||||||
|
maxBlues=$(maxColour "blue" <<< "$line")
|
||||||
|
echo "$(( "$maxReds" * "$maxGreens" * "$maxBlues"))"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
main () {
|
||||||
|
local input
|
||||||
|
input=$(cat)
|
||||||
|
echo "Part 1 Answer: $(<<<"$input" gamesWhichFitTheLimit | gameIds | sumNumbers)"
|
||||||
|
echo "Part 2 Answer: $(<<<"$input" powers | sumNumbers)"
|
||||||
|
}
|
||||||
|
|
||||||
|
main
|
Loading…
Reference in a new issue