Day 4
This commit is contained in:
60
04/01.sh
Executable file
60
04/01.sh
Executable file
@@ -0,0 +1,60 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
read line
|
||||||
|
inputs=( ${line//,/ } )
|
||||||
|
read line
|
||||||
|
grid_size=5
|
||||||
|
i=0
|
||||||
|
conditions=''
|
||||||
|
columns=()
|
||||||
|
first_win=0
|
||||||
|
first_score=0
|
||||||
|
victory_condition=()
|
||||||
|
for j in $(seq $grid_size); do
|
||||||
|
columns+=''
|
||||||
|
victory_condition+=('X')
|
||||||
|
done
|
||||||
|
victory_condition=${victory_condition[@]}
|
||||||
|
|
||||||
|
while read line; do
|
||||||
|
if [[ ! -z "$line" ]] && [ $i -lt $grid_size ]; then
|
||||||
|
conditions=${conditions}$line' ; '
|
||||||
|
current=($line)
|
||||||
|
for j in $(seq $grid_size); do
|
||||||
|
columns[$((j-1))]=${columns[$((j-1))]}${current[$((j-1))]}' '
|
||||||
|
done
|
||||||
|
i=$((i+1))
|
||||||
|
fi
|
||||||
|
if [ $i -eq $grid_size ]; then
|
||||||
|
i=0
|
||||||
|
for j in $(seq $grid_size); do
|
||||||
|
conditions=${conditions}${columns[$((j-1))]}'; '
|
||||||
|
done
|
||||||
|
|
||||||
|
conditions='; '$conditions
|
||||||
|
for j in $(seq ${#inputs[@]}); do
|
||||||
|
conditions=${conditions// ${inputs[$((j-1))]} / X }
|
||||||
|
if [[ "$conditions" == *"$victory_condition"* ]]; then
|
||||||
|
current_score=$(sed 's/;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*; $//' <<< $conditions)
|
||||||
|
current_score=$(sed 's/[X; ]/+/g' <<< $current_score)
|
||||||
|
current_score=$(sed 's/\+\++/+/g' <<< $current_score)
|
||||||
|
current_score=$(sed 's/\+*$//' <<< $current_score)
|
||||||
|
current_score=$((current_score))
|
||||||
|
current_score=$((current_score*inputs[j-1]))
|
||||||
|
if [ $first_win -eq 0 ] || [ $j -lt $first_win ]; then
|
||||||
|
first_win=$j
|
||||||
|
first_score=$current_score
|
||||||
|
fi
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
conditions=''
|
||||||
|
columns=()
|
||||||
|
for j in $(seq $grid_size); do
|
||||||
|
columns+=''
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo $first_score
|
||||||
60
04/02.sh
Executable file
60
04/02.sh
Executable file
@@ -0,0 +1,60 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
read line
|
||||||
|
inputs=( ${line//,/ } )
|
||||||
|
read line
|
||||||
|
grid_size=5
|
||||||
|
i=0
|
||||||
|
conditions=''
|
||||||
|
columns=()
|
||||||
|
last_win=0
|
||||||
|
last_score=0
|
||||||
|
victory_condition=()
|
||||||
|
for j in $(seq $grid_size); do
|
||||||
|
columns+=''
|
||||||
|
victory_condition+=('X')
|
||||||
|
done
|
||||||
|
victory_condition=${victory_condition[@]}
|
||||||
|
|
||||||
|
while read line; do
|
||||||
|
if [[ ! -z "$line" ]] && [ $i -lt $grid_size ]; then
|
||||||
|
conditions=${conditions}$line' ; '
|
||||||
|
current=($line)
|
||||||
|
for j in $(seq $grid_size); do
|
||||||
|
columns[$((j-1))]=${columns[$((j-1))]}${current[$((j-1))]}' '
|
||||||
|
done
|
||||||
|
i=$((i+1))
|
||||||
|
fi
|
||||||
|
if [ $i -eq $grid_size ]; then
|
||||||
|
i=0
|
||||||
|
for j in $(seq $grid_size); do
|
||||||
|
conditions=${conditions}${columns[$((j-1))]}'; '
|
||||||
|
done
|
||||||
|
|
||||||
|
conditions='; '$conditions
|
||||||
|
for j in $(seq ${#inputs[@]}); do
|
||||||
|
conditions=${conditions// ${inputs[$((j-1))]} / X }
|
||||||
|
if [[ "$conditions" == *"$victory_condition"* ]]; then
|
||||||
|
current_score=$(sed 's/;[^;]*;[^;]*;[^;]*;[^;]*;[^;]*; $//' <<< $conditions)
|
||||||
|
current_score=$(sed 's/[X; ]/+/g' <<< $current_score)
|
||||||
|
current_score=$(sed 's/\+\++/+/g' <<< $current_score)
|
||||||
|
current_score=$(sed 's/\+*$//' <<< $current_score)
|
||||||
|
current_score=$((current_score))
|
||||||
|
current_score=$((current_score*inputs[j-1]))
|
||||||
|
if [ $last_win -eq 0 ] || [ $j -gt $last_win ]; then
|
||||||
|
last_win=$j
|
||||||
|
last_score=$current_score
|
||||||
|
fi
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
conditions=''
|
||||||
|
columns=()
|
||||||
|
for j in $(seq $grid_size); do
|
||||||
|
columns+=''
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo $last_score
|
||||||
Reference in New Issue
Block a user