61 lines
1.8 KiB
Bash
Executable File
61 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
lines=()
|
|
grid=()
|
|
risks_grid=()
|
|
i_max=0
|
|
j_max=0
|
|
while read line; do
|
|
lines+=( $line )
|
|
done
|
|
|
|
for ((grid_iter_i=0; grid_iter_i<5; grid_iter_i++)); do
|
|
for line in ${lines[@]}; do
|
|
j_max=${#line}
|
|
for ((grid_iter_j=0; grid_iter_j<5; grid_iter_j++)); do
|
|
for ((j=0; j<j_max; j++)); do
|
|
grid+=( $(((${line:$j:1}-1+grid_iter_j+grid_iter_i)%9+1)) )
|
|
risks_grid+=( -1 )
|
|
done
|
|
done
|
|
i_max=$((i_max+1))
|
|
j_max=$((j_max*5))
|
|
done
|
|
done
|
|
|
|
risks_grid[0]=0
|
|
detected_paths=1
|
|
iter=0
|
|
while [ $detected_paths -eq 1 ]; do
|
|
detected_paths=0
|
|
for ((i=0; i<i_max; i++)); do
|
|
for ((j=0; j<j_max; j++)); do
|
|
lowest_risk=$((9*i_max*j_max))
|
|
if [ $j -gt 0 ] && [ ${risks_grid[$((i*j_max+j-1))]} -lt $lowest_risk ] \
|
|
&& [ ${risks_grid[$((i*j_max+j-1))]} -ge 0 ]; then
|
|
lowest_risk=${risks_grid[$((i*j_max+j-1))]}
|
|
fi
|
|
if [ $j -lt $((j_max-1)) ] && [ ${risks_grid[$((i*j_max+j+1))]} -lt $lowest_risk ] \
|
|
&& [ ${risks_grid[$((i*j_max+j+1))]} -ge 0 ]; then
|
|
lowest_risk=${risks_grid[$((i*j_max+j+1))]}
|
|
fi
|
|
if [ $i -gt 0 ] && [ ${risks_grid[$(((i-1)*j_max+j))]} -lt $lowest_risk ] \
|
|
&& [ ${risks_grid[$(((i-1)*j_max+j))]} -ge 0 ]; then
|
|
lowest_risk=${risks_grid[$(((i-1)*j_max+j))]}
|
|
fi
|
|
if [ $i -lt $((i_max-1)) ] && [ ${risks_grid[$(((i+1)*j_max+j))]} -lt $lowest_risk ] \
|
|
&& [ ${risks_grid[$(((i+1)*j_max+j))]} -ge 0 ]; then
|
|
lowest_risk=${risks_grid[$(((i+1)*j_max+j))]}
|
|
fi
|
|
if [ ${risks_grid[$((i*j_max+j))]} -lt 0 ] \
|
|
|| [ ${risks_grid[$((i*j_max+j))]} -gt $((grid[i*j_max+j]+lowest_risk)) ]; then
|
|
risks_grid[$((i*j_max+j))]=$((grid[i*j_max+j]+lowest_risk))
|
|
detected_paths=1
|
|
fi
|
|
done
|
|
done
|
|
iter=$((iter+1))
|
|
done
|
|
|
|
echo ${risks_grid[$((i_max*j_max-1))]}
|