Day 22 part 1 (bash)
This commit is contained in:
42
2020/day22/ex1.bash
Executable file
42
2020/day22/ex1.bash
Executable file
@@ -0,0 +1,42 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# ex1.bash: Advent2020 game, day 22/game 1.
|
||||
|
||||
CMD=${0##*/}
|
||||
shopt -s extglob
|
||||
set -o noglob
|
||||
|
||||
declare -a cards=() CARDS1=() CARDS2=()
|
||||
declare -i count=-1
|
||||
|
||||
while read -r line; do
|
||||
case ${line:0:1} in
|
||||
P*)
|
||||
((count++))
|
||||
;;
|
||||
[1-9]*)
|
||||
cards[$count]+=" $line"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
# shellcheck disable=SC2206
|
||||
CARDS1=(${cards[0]});
|
||||
# shellcheck disable=SC2206
|
||||
CARDS2=(${cards[1]})
|
||||
while ((${#CARDS1[@]} > 0 && ${#CARDS2[@]})); do
|
||||
# shellcheck disable=SC2128
|
||||
((CARDS1 > CARDS2)) && CARDS1+=("$CARDS1" "$CARDS2") || CARDS2+=("$CARDS2" "$CARDS1")
|
||||
CARDS1=("${CARDS1[@]:1}")
|
||||
CARDS2=("${CARDS2[@]:1}")
|
||||
done
|
||||
cards=()
|
||||
for i in "${CARDS1[@]}" "${CARDS2[@]}"; do
|
||||
cards=("$i" "${cards[@]}")
|
||||
done
|
||||
n=1
|
||||
res=0
|
||||
for i in "${cards[@]}"; do
|
||||
((res+=n*i, n++))
|
||||
done
|
||||
printf "%s: res=%d\n" "$CMD" "$res"
|
||||
exit 0
|
Reference in New Issue
Block a user