Day 23
This commit is contained in:
244
23/01.sh
Executable file
244
23/01.sh
Executable file
@@ -0,0 +1,244 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
read line
|
||||||
|
read line
|
||||||
|
read line
|
||||||
|
read line2
|
||||||
|
column_1=( ${line:3:1} ${line2:1:1} )
|
||||||
|
column_2=( ${line:5:1} ${line2:3:1} )
|
||||||
|
column_3=( ${line:7:1} ${line2:5:1} )
|
||||||
|
column_4=( ${line:9:1} ${line2:7:1} )
|
||||||
|
column_len=2
|
||||||
|
declare -A energies
|
||||||
|
energies[A]=1
|
||||||
|
energies[B]=10
|
||||||
|
energies[C]=100
|
||||||
|
energies[D]=1000
|
||||||
|
min_energy=-1
|
||||||
|
|
||||||
|
declare -A encountered_configurations
|
||||||
|
|
||||||
|
function move() {
|
||||||
|
local column_1=( ${1//_/ } )
|
||||||
|
local column_2=( ${2//_/ } )
|
||||||
|
local column_3=( ${3//_/ } )
|
||||||
|
local column_4=( ${4//_/ } )
|
||||||
|
local hallway=( ${5//_/ } )
|
||||||
|
local energy=$6
|
||||||
|
|
||||||
|
if [ ${encountered_configurations[1$12$23$34$4H$5$6]} ]; then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
encountered_configurations[1$12$23$34$4H$5$6]=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [[ $5 == *[ABCD]* ]] && ! [[ $1 == *[BCD]* ]] && ! [[ $2 == *[ACD]* ]] && ! [[ $3 == *[ABD]* ]] \
|
||||||
|
&& ! [[ $4 == *[ABC]* ]]; then
|
||||||
|
if [ $min_energy -lt 0 ] || [ $energy -lt $min_energy ]; then
|
||||||
|
min_energy=$energy
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [[ $1 == *[BCD]* ]]; then
|
||||||
|
if [[ ${hallway[0]} == 'A' ]] && [[ ${hallway[1]} == "O" ]]; then
|
||||||
|
move '_A'$1 $2 $3 $4 'O'${5:1} $((energy+2+column_len-${#column_1[@]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[1]} == 'A' ]]; then
|
||||||
|
move '_A'$1 $2 $3 $4 ${5:0:2}'O'${5:3} $((energy+1+column_len-${#column_1[@]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == 'A' ]]; then
|
||||||
|
move '_A'$1 $2 $3 $4 ${5:0:4}'O'${5:5} $((energy+1+column_len-${#column_1[@]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[3]} == 'A' ]] && [[ ${hallway[2]} == "O" ]]; then
|
||||||
|
move '_A'$1 $2 $3 $4 ${5:0:6}'O'${5:7} $((energy+3+column_len-${#column_1[@]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[4]} == 'A' ]] && [[ ${hallway[3]} == "O" ]] && [[ ${hallway[2]} == "O" ]]; then
|
||||||
|
move '_A'$1 $2 $3 $4 ${5:0:8}'O'${5:9} $((energy+5+column_len-${#column_1[@]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[5]} == 'A' ]] && [[ ${hallway[4]} == "O" ]] && [[ ${hallway[3]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[2]} == "O" ]]; then
|
||||||
|
move '_A'$1 $2 $3 $4 ${5:0:10}'O'${5:11} $((energy+7+column_len-${#column_1[@]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[6]} == 'A' ]] && [[ ${hallway[5]} == "O" ]] && [[ ${hallway[4]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[3]} == "O" ]] && [[ ${hallway[2]} == "O" ]]; then
|
||||||
|
move '_A'$1 $2 $3 $4 ${5:0:12}'O' $((energy+8+column_len-${#column_1[@]}))
|
||||||
|
fi
|
||||||
|
elif [ ${#column_1[@]} -gt 0 ]; then
|
||||||
|
if [[ ${hallway[0]} == "O" ]] && [[ ${hallway[1]} == "O" ]]; then
|
||||||
|
move ${1:2} $2 $3 $4 ${column_1[0]}${5:1} $((energy+(3+column_len-${#column_1[@]})*${energies[${column_1[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[1]} == "O" ]]; then
|
||||||
|
move ${1:2} $2 $3 $4 ${5:0:2}${column_1[0]}${5:3} $((energy+(2+column_len-${#column_1[@]})*${energies[${column_1[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == "O" ]]; then
|
||||||
|
move ${1:2} $2 $3 $4 ${5:0:4}${column_1[0]}${5:5} $((energy+(2+column_len-${#column_1[@]})*${energies[${column_1[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == "O" ]] && [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move ${1:2} $2 $3 $4 ${5:0:6}${column_1[0]}${5:7} $((energy+(4+column_len-${#column_1[@]})*${energies[${column_1[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == "O" ]] && [[ ${hallway[3]} == "O" ]] && [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move ${1:2} $2 $3 $4 ${5:0:8}${column_1[0]}${5:9} $((energy+(6+column_len-${#column_1[@]})*${energies[${column_1[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == "O" ]] && [[ ${hallway[3]} == "O" ]] && [[ ${hallway[4]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[5]} == "O" ]]; then
|
||||||
|
move ${1:2} $2 $3 $4 ${5:0:10}${column_1[0]}${5:11} $((energy+(8+column_len-${#column_1[@]})*${energies[${column_1[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == "O" ]] && [[ ${hallway[3]} == "O" ]] && [[ ${hallway[4]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[5]} == "O" ]] && [[ ${hallway[6]} == "O" ]]; then
|
||||||
|
move ${1:2} $2 $3 $4 ${5:0:12}${column_1[0]} $((energy+(9+column_len-${#column_1[@]})*${energies[${column_1[0]}]}))
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [[ $2 == *[ACD]* ]]; then
|
||||||
|
if [[ ${hallway[0]} == 'B' ]] && [[ ${hallway[1]} == "O" ]] && [[ ${hallway[2]} == "O" ]]; then
|
||||||
|
move $1 '_B'$2 $3 $4 'O'${5:1} $((energy+(4+column_len-${#column_2[@]})*10))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[1]} == 'B' ]] && [[ ${hallway[2]} == "O" ]]; then
|
||||||
|
move $1 '_B'$2 $3 $4 ${5:0:2}'O'${5:3} $((energy+(3+column_len-${#column_2[@]})*10))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == 'B' ]]; then
|
||||||
|
move $1 '_B'$2 $3 $4 ${5:0:4}'O'${5:5} $((energy+(1+column_len-${#column_2[@]})*10))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[3]} == 'B' ]]; then
|
||||||
|
move $1 '_B'$2 $3 $4 ${5:0:6}'O'${5:7} $((energy+(1+column_len-${#column_2[@]})*10))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[4]} == 'B' ]] && [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move $1 '_B'$2 $3 $4 ${5:0:8}'O'${5:9} $((energy+(3+column_len-${#column_2[@]})*10))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[5]} == 'B' ]] && [[ ${hallway[4]} == "O" ]] && [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move $1 '_B'$2 $3 $4 ${5:0:10}'O'${5:11} $((energy+(5+column_len-${#column_2[@]})*10))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[6]} == 'B' ]] && [[ ${hallway[5]} == "O" ]] && [[ ${hallway[4]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move $1 '_B'$2 $3 $4 ${5:0:12}'O' $((energy+(6+column_len-${#column_2[@]})*10))
|
||||||
|
fi
|
||||||
|
elif [ ${#column_2[@]} -gt 0 ]; then
|
||||||
|
if [[ ${hallway[0]} == "O" ]] && [[ ${hallway[1]} == "O" ]] && [[ ${hallway[2]} == "O" ]]; then
|
||||||
|
move $1 ${2:2} $3 $4 ${column_2[0]}${5:1} $((energy+(5+column_len-${#column_2[@]})*${energies[${column_2[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[1]} == "O" ]] && [[ ${hallway[2]} == "O" ]]; then
|
||||||
|
move $1 ${2:2} $3 $4 ${5:0:2}${column_2[0]}${5:3} $((energy+(4+column_len-${#column_2[@]})*${energies[${column_2[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == "O" ]]; then
|
||||||
|
move $1 ${2:2} $3 $4 ${5:0:4}${column_2[0]}${5:5} $((energy+(2+column_len-${#column_2[@]})*${energies[${column_2[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move $1 ${2:2} $3 $4 ${5:0:6}${column_2[0]}${5:7} $((energy+(2+column_len-${#column_2[@]})*${energies[${column_2[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[3]} == "O" ]] && [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 ${2:2} $3 $4 ${5:0:8}${column_2[0]}${5:9} $((energy+(4+column_len-${#column_2[@]})*${energies[${column_2[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[3]} == "O" ]] && [[ ${hallway[4]} == "O" ]] && [[ ${hallway[5]} == "O" ]]; then
|
||||||
|
move $1 ${2:2} $3 $4 ${5:0:10}${column_2[0]}${5:11} $((energy+(6+column_len-${#column_2[@]})*${energies[${column_2[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[3]} == "O" ]] && [[ ${hallway[4]} == "O" ]] && [[ ${hallway[5]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[6]} == "O" ]]; then
|
||||||
|
move $1 ${2:2} $3 $4 ${5:0:12}${column_2[0]} $((energy+(7+column_len-${#column_2[@]})*${energies[${column_2[0]}]}))
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [[ $3 == *[ABD]* ]]; then
|
||||||
|
if [[ ${hallway[0]} == 'C' ]] && [[ ${hallway[1]} == "O" ]] && [[ ${hallway[2]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move $1 $2 '_C'$3 $4 'O'${5:1} $((energy+(6+column_len-${#column_3[@]})*100))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[1]} == 'C' ]] && [[ ${hallway[2]} == "O" ]] && [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move $1 $2 '_C'$3 $4 ${5:0:2}'O'${5:3} $((energy+(5+column_len-${#column_3[@]})*100))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == 'C' ]] && [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move $1 $2 '_C'$3 $4 ${5:0:4}'O'${5:5} $((energy+(3+column_len-${#column_3[@]})*100))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[3]} == 'C' ]]; then
|
||||||
|
move $1 $2 '_C'$3 $4 ${5:0:6}'O'${5:7} $((energy+(1+column_len-${#column_3[@]})*100))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[4]} == 'C' ]]; then
|
||||||
|
move $1 $2 '_C'$3 $4 ${5:0:8}'O'${5:9} $((energy+(1+column_len-${#column_3[@]})*100))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[5]} == 'C' ]] && [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 '_C'$3 $4 ${5:0:10}'O'${5:11} $((energy+(3+column_len-${#column_3[@]})*100))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[6]} == 'C' ]] && [[ ${hallway[5]} == "O" ]] && [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 '_C'$3 $4 ${5:0:12}'O' $((energy+(4+column_len-${#column_3[@]})*100))
|
||||||
|
fi
|
||||||
|
elif [ ${#column_3[@]} -gt 0 ]; then
|
||||||
|
if [[ ${hallway[0]} == "O" ]] && [[ ${hallway[1]} == "O" ]] && [[ ${hallway[2]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move $1 $2 ${3:2} $4 ${column_3[0]}${5:1} $((energy+(7+column_len-${#column_3[@]})*${energies[${column_3[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[1]} == "O" ]] && [[ ${hallway[2]} == "O" ]] && [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move $1 $2 ${3:2} $4 ${5:0:2}${column_3[0]}${5:3} $((energy+(6+column_len-${#column_3[@]})*${energies[${column_3[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == "O" ]] && [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move $1 $2 ${3:2} $4 ${5:0:4}${column_3[0]}${5:5} $((energy+(4+column_len-${#column_3[@]})*${energies[${column_3[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move $1 $2 ${3:2} $4 ${5:0:6}${column_3[0]}${5:7} $((energy+(2+column_len-${#column_3[@]})*${energies[${column_3[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 ${3:2} $4 ${5:0:8}${column_3[0]}${5:9} $((energy+(2+column_len-${#column_3[@]})*${energies[${column_3[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[4]} == "O" ]] && [[ ${hallway[5]} == "O" ]]; then
|
||||||
|
move $1 $2 ${3:2} $4 ${5:0:10}${column_3[0]}${5:11} $((energy+(4+column_len-${#column_3[@]})*${energies[${column_3[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[4]} == "O" ]] && [[ ${hallway[5]} == "O" ]] && [[ ${hallway[6]} == "O" ]]; then
|
||||||
|
move $1 $2 ${3:2} $4 ${5:0:12}${column_3[0]} $((energy+(5+column_len-${#column_3[@]})*${energies[${column_3[0]}]}))
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [[ $4 == *[ABC]* ]]; then
|
||||||
|
if [[ ${hallway[0]} == 'D' ]] && [[ ${hallway[1]} == "O" ]] && [[ ${hallway[2]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[3]} == "O" ]] && [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 '_D'$4 'O'${5:1} $((energy+(8+column_len-${#column_4[@]})*1000))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[1]} == 'D' ]] && [[ ${hallway[2]} == "O" ]] && [[ ${hallway[3]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 '_D'$4 ${5:0:2}'O'${5:3} $((energy+(7+column_len-${#column_4[@]})*1000))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == 'D' ]] && [[ ${hallway[3]} == "O" ]] && [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 '_D'$4 ${5:0:4}'O'${5:5} $((energy+(5+column_len-${#column_4[@]})*1000))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[3]} == 'D' ]] && [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 '_D'$4 ${5:0:6}'O'${5:7} $((energy+(3+column_len-${#column_4[@]})*1000))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[4]} == 'D' ]]; then
|
||||||
|
move $1 $2 $3 '_D'$4 ${5:0:8}'O'${5:9} $((energy+(1+column_len-${#column_4[@]})*1000))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[5]} == 'D' ]]; then
|
||||||
|
move $1 $2 $3 '_D'$4 ${5:0:10}'O'${5:11} $((energy+(1+column_len-${#column_4[@]})*1000))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[6]} == 'D' ]] && [[ ${hallway[5]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 '_D'$4 ${5:0:12}'O' $((energy+(2+column_len-${#column_4[@]})*1000))
|
||||||
|
fi
|
||||||
|
elif [ ${#column_4[@]} -gt 0 ]; then
|
||||||
|
if [[ ${hallway[0]} == "O" ]] && [[ ${hallway[1]} == "O" ]] && [[ ${hallway[2]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[3]} == "O" ]] && [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 ${4:2} ${column_4[0]}${5:1} $((energy+(9+column_len-${#column_4[@]})*${energies[${column_4[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[1]} == "O" ]] && [[ ${hallway[2]} == "O" ]] && [[ ${hallway[3]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 ${4:2} ${5:0:2}${column_4[0]}${5:3} $((energy+(8+column_len-${#column_4[@]})*${energies[${column_4[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == "O" ]] && [[ ${hallway[3]} == "O" ]] && [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 ${4:2} ${5:0:4}${column_4[0]}${5:5} $((energy+(6+column_len-${#column_4[@]})*${energies[${column_4[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[3]} == "O" ]] && [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 ${4:2} ${5:0:6}${column_4[0]}${5:7} $((energy+(4+column_len-${#column_4[@]})*${energies[${column_4[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 ${4:2} ${5:0:8}${column_4[0]}${5:9} $((energy+(2+column_len-${#column_4[@]})*${energies[${column_4[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[5]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 ${4:2} ${5:0:10}${column_4[0]}${5:11} $((energy+(2+column_len-${#column_4[@]})*${energies[${column_4[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[5]} == "O" ]] && [[ ${hallway[6]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 ${4:2} ${5:0:12}${column_4[0]} $((energy+(3+column_len-${#column_4[@]})*${energies[${column_4[0]}]}))
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
column_1_str=${column_1[@]}
|
||||||
|
column_2_str=${column_2[@]}
|
||||||
|
column_3_str=${column_3[@]}
|
||||||
|
column_4_str=${column_4[@]}
|
||||||
|
move _${column_1_str// /_}_ _${column_2_str// /_}_ _${column_3_str// /_}_ _${column_4_str// /_}_ "O_O_O_O_O_O_O" 0
|
||||||
|
echo $min_energy
|
||||||
244
23/02.sh
Executable file
244
23/02.sh
Executable file
@@ -0,0 +1,244 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
read line
|
||||||
|
read line
|
||||||
|
read line
|
||||||
|
read line2
|
||||||
|
column_1=( ${line:3:1} D D ${line2:1:1} )
|
||||||
|
column_2=( ${line:5:1} C B ${line2:3:1} )
|
||||||
|
column_3=( ${line:7:1} B A ${line2:5:1} )
|
||||||
|
column_4=( ${line:9:1} A C ${line2:7:1} )
|
||||||
|
column_len=4
|
||||||
|
declare -A energies
|
||||||
|
energies[A]=1
|
||||||
|
energies[B]=10
|
||||||
|
energies[C]=100
|
||||||
|
energies[D]=1000
|
||||||
|
min_energy=10000000000
|
||||||
|
|
||||||
|
declare -A encountered_configurations
|
||||||
|
|
||||||
|
function move() {
|
||||||
|
local column_1=( ${1//_/ } )
|
||||||
|
local column_2=( ${2//_/ } )
|
||||||
|
local column_3=( ${3//_/ } )
|
||||||
|
local column_4=( ${4//_/ } )
|
||||||
|
local hallway=( ${5//_/ } )
|
||||||
|
local energy=$6
|
||||||
|
|
||||||
|
if [ ${encountered_configurations[1$12$23$34$4H$5$6]} ]; then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
encountered_configurations[1$12$23$34$4H$5$6]=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [[ $5 == *[ABCD]* ]] && ! [[ $1 == *[BCD]* ]] && ! [[ $2 == *[ACD]* ]] && ! [[ $3 == *[ABD]* ]] \
|
||||||
|
&& ! [[ $4 == *[ABC]* ]]; then
|
||||||
|
if [ $energy -lt $min_energy ]; then
|
||||||
|
min_energy=$energy
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [[ $1 == *[BCD]* ]]; then
|
||||||
|
if [[ ${hallway[0]} == 'A' ]] && [[ ${hallway[1]} == "O" ]]; then
|
||||||
|
move '_A'$1 $2 $3 $4 'O'${5:1} $((energy+2+column_len-${#column_1[@]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[1]} == 'A' ]]; then
|
||||||
|
move '_A'$1 $2 $3 $4 ${5:0:2}'O'${5:3} $((energy+1+column_len-${#column_1[@]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == 'A' ]]; then
|
||||||
|
move '_A'$1 $2 $3 $4 ${5:0:4}'O'${5:5} $((energy+1+column_len-${#column_1[@]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[3]} == 'A' ]] && [[ ${hallway[2]} == "O" ]]; then
|
||||||
|
move '_A'$1 $2 $3 $4 ${5:0:6}'O'${5:7} $((energy+3+column_len-${#column_1[@]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[4]} == 'A' ]] && [[ ${hallway[3]} == "O" ]] && [[ ${hallway[2]} == "O" ]]; then
|
||||||
|
move '_A'$1 $2 $3 $4 ${5:0:8}'O'${5:9} $((energy+5+column_len-${#column_1[@]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[5]} == 'A' ]] && [[ ${hallway[4]} == "O" ]] && [[ ${hallway[3]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[2]} == "O" ]]; then
|
||||||
|
move '_A'$1 $2 $3 $4 ${5:0:10}'O'${5:11} $((energy+7+column_len-${#column_1[@]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[6]} == 'A' ]] && [[ ${hallway[5]} == "O" ]] && [[ ${hallway[4]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[3]} == "O" ]] && [[ ${hallway[2]} == "O" ]]; then
|
||||||
|
move '_A'$1 $2 $3 $4 ${5:0:12}'O' $((energy+8+column_len-${#column_1[@]}))
|
||||||
|
fi
|
||||||
|
elif [ ${#column_1[@]} -gt 0 ]; then
|
||||||
|
if [[ ${hallway[0]} == "O" ]] && [[ ${hallway[1]} == "O" ]]; then
|
||||||
|
move ${1:2} $2 $3 $4 ${column_1[0]}${5:1} $((energy+(3+column_len-${#column_1[@]})*${energies[${column_1[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[1]} == "O" ]]; then
|
||||||
|
move ${1:2} $2 $3 $4 ${5:0:2}${column_1[0]}${5:3} $((energy+(2+column_len-${#column_1[@]})*${energies[${column_1[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == "O" ]]; then
|
||||||
|
move ${1:2} $2 $3 $4 ${5:0:4}${column_1[0]}${5:5} $((energy+(2+column_len-${#column_1[@]})*${energies[${column_1[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == "O" ]] && [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move ${1:2} $2 $3 $4 ${5:0:6}${column_1[0]}${5:7} $((energy+(4+column_len-${#column_1[@]})*${energies[${column_1[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == "O" ]] && [[ ${hallway[3]} == "O" ]] && [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move ${1:2} $2 $3 $4 ${5:0:8}${column_1[0]}${5:9} $((energy+(6+column_len-${#column_1[@]})*${energies[${column_1[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == "O" ]] && [[ ${hallway[3]} == "O" ]] && [[ ${hallway[4]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[5]} == "O" ]]; then
|
||||||
|
move ${1:2} $2 $3 $4 ${5:0:10}${column_1[0]}${5:11} $((energy+(8+column_len-${#column_1[@]})*${energies[${column_1[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == "O" ]] && [[ ${hallway[3]} == "O" ]] && [[ ${hallway[4]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[5]} == "O" ]] && [[ ${hallway[6]} == "O" ]]; then
|
||||||
|
move ${1:2} $2 $3 $4 ${5:0:12}${column_1[0]} $((energy+(9+column_len-${#column_1[@]})*${energies[${column_1[0]}]}))
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [[ $2 == *[ACD]* ]]; then
|
||||||
|
if [[ ${hallway[0]} == 'B' ]] && [[ ${hallway[1]} == "O" ]] && [[ ${hallway[2]} == "O" ]]; then
|
||||||
|
move $1 '_B'$2 $3 $4 'O'${5:1} $((energy+(4+column_len-${#column_2[@]})*10))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[1]} == 'B' ]] && [[ ${hallway[2]} == "O" ]]; then
|
||||||
|
move $1 '_B'$2 $3 $4 ${5:0:2}'O'${5:3} $((energy+(3+column_len-${#column_2[@]})*10))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == 'B' ]]; then
|
||||||
|
move $1 '_B'$2 $3 $4 ${5:0:4}'O'${5:5} $((energy+(1+column_len-${#column_2[@]})*10))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[3]} == 'B' ]]; then
|
||||||
|
move $1 '_B'$2 $3 $4 ${5:0:6}'O'${5:7} $((energy+(1+column_len-${#column_2[@]})*10))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[4]} == 'B' ]] && [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move $1 '_B'$2 $3 $4 ${5:0:8}'O'${5:9} $((energy+(3+column_len-${#column_2[@]})*10))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[5]} == 'B' ]] && [[ ${hallway[4]} == "O" ]] && [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move $1 '_B'$2 $3 $4 ${5:0:10}'O'${5:11} $((energy+(5+column_len-${#column_2[@]})*10))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[6]} == 'B' ]] && [[ ${hallway[5]} == "O" ]] && [[ ${hallway[4]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move $1 '_B'$2 $3 $4 ${5:0:12}'O' $((energy+(6+column_len-${#column_2[@]})*10))
|
||||||
|
fi
|
||||||
|
elif [ ${#column_2[@]} -gt 0 ]; then
|
||||||
|
if [[ ${hallway[0]} == "O" ]] && [[ ${hallway[1]} == "O" ]] && [[ ${hallway[2]} == "O" ]]; then
|
||||||
|
move $1 ${2:2} $3 $4 ${column_2[0]}${5:1} $((energy+(5+column_len-${#column_2[@]})*${energies[${column_2[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[1]} == "O" ]] && [[ ${hallway[2]} == "O" ]]; then
|
||||||
|
move $1 ${2:2} $3 $4 ${5:0:2}${column_2[0]}${5:3} $((energy+(4+column_len-${#column_2[@]})*${energies[${column_2[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == "O" ]]; then
|
||||||
|
move $1 ${2:2} $3 $4 ${5:0:4}${column_2[0]}${5:5} $((energy+(2+column_len-${#column_2[@]})*${energies[${column_2[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move $1 ${2:2} $3 $4 ${5:0:6}${column_2[0]}${5:7} $((energy+(2+column_len-${#column_2[@]})*${energies[${column_2[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[3]} == "O" ]] && [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 ${2:2} $3 $4 ${5:0:8}${column_2[0]}${5:9} $((energy+(4+column_len-${#column_2[@]})*${energies[${column_2[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[3]} == "O" ]] && [[ ${hallway[4]} == "O" ]] && [[ ${hallway[5]} == "O" ]]; then
|
||||||
|
move $1 ${2:2} $3 $4 ${5:0:10}${column_2[0]}${5:11} $((energy+(6+column_len-${#column_2[@]})*${energies[${column_2[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[3]} == "O" ]] && [[ ${hallway[4]} == "O" ]] && [[ ${hallway[5]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[6]} == "O" ]]; then
|
||||||
|
move $1 ${2:2} $3 $4 ${5:0:12}${column_2[0]} $((energy+(7+column_len-${#column_2[@]})*${energies[${column_2[0]}]}))
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [[ $3 == *[ABD]* ]]; then
|
||||||
|
if [[ ${hallway[0]} == 'C' ]] && [[ ${hallway[1]} == "O" ]] && [[ ${hallway[2]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move $1 $2 '_C'$3 $4 'O'${5:1} $((energy+(6+column_len-${#column_3[@]})*100))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[1]} == 'C' ]] && [[ ${hallway[2]} == "O" ]] && [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move $1 $2 '_C'$3 $4 ${5:0:2}'O'${5:3} $((energy+(5+column_len-${#column_3[@]})*100))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == 'C' ]] && [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move $1 $2 '_C'$3 $4 ${5:0:4}'O'${5:5} $((energy+(3+column_len-${#column_3[@]})*100))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[3]} == 'C' ]]; then
|
||||||
|
move $1 $2 '_C'$3 $4 ${5:0:6}'O'${5:7} $((energy+(1+column_len-${#column_3[@]})*100))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[4]} == 'C' ]]; then
|
||||||
|
move $1 $2 '_C'$3 $4 ${5:0:8}'O'${5:9} $((energy+(1+column_len-${#column_3[@]})*100))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[5]} == 'C' ]] && [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 '_C'$3 $4 ${5:0:10}'O'${5:11} $((energy+(3+column_len-${#column_3[@]})*100))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[6]} == 'C' ]] && [[ ${hallway[5]} == "O" ]] && [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 '_C'$3 $4 ${5:0:12}'O' $((energy+(4+column_len-${#column_3[@]})*100))
|
||||||
|
fi
|
||||||
|
elif [ ${#column_3[@]} -gt 0 ]; then
|
||||||
|
if [[ ${hallway[0]} == "O" ]] && [[ ${hallway[1]} == "O" ]] && [[ ${hallway[2]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move $1 $2 ${3:2} $4 ${column_3[0]}${5:1} $((energy+(7+column_len-${#column_3[@]})*${energies[${column_3[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[1]} == "O" ]] && [[ ${hallway[2]} == "O" ]] && [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move $1 $2 ${3:2} $4 ${5:0:2}${column_3[0]}${5:3} $((energy+(6+column_len-${#column_3[@]})*${energies[${column_3[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == "O" ]] && [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move $1 $2 ${3:2} $4 ${5:0:4}${column_3[0]}${5:5} $((energy+(4+column_len-${#column_3[@]})*${energies[${column_3[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[3]} == "O" ]]; then
|
||||||
|
move $1 $2 ${3:2} $4 ${5:0:6}${column_3[0]}${5:7} $((energy+(2+column_len-${#column_3[@]})*${energies[${column_3[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 ${3:2} $4 ${5:0:8}${column_3[0]}${5:9} $((energy+(2+column_len-${#column_3[@]})*${energies[${column_3[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[4]} == "O" ]] && [[ ${hallway[5]} == "O" ]]; then
|
||||||
|
move $1 $2 ${3:2} $4 ${5:0:10}${column_3[0]}${5:11} $((energy+(4+column_len-${#column_3[@]})*${energies[${column_3[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[4]} == "O" ]] && [[ ${hallway[5]} == "O" ]] && [[ ${hallway[6]} == "O" ]]; then
|
||||||
|
move $1 $2 ${3:2} $4 ${5:0:12}${column_3[0]} $((energy+(5+column_len-${#column_3[@]})*${energies[${column_3[0]}]}))
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [[ $4 == *[ABC]* ]]; then
|
||||||
|
if [[ ${hallway[0]} == 'D' ]] && [[ ${hallway[1]} == "O" ]] && [[ ${hallway[2]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[3]} == "O" ]] && [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 '_D'$4 'O'${5:1} $((energy+(8+column_len-${#column_4[@]})*1000))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[1]} == 'D' ]] && [[ ${hallway[2]} == "O" ]] && [[ ${hallway[3]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 '_D'$4 ${5:0:2}'O'${5:3} $((energy+(7+column_len-${#column_4[@]})*1000))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == 'D' ]] && [[ ${hallway[3]} == "O" ]] && [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 '_D'$4 ${5:0:4}'O'${5:5} $((energy+(5+column_len-${#column_4[@]})*1000))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[3]} == 'D' ]] && [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 '_D'$4 ${5:0:6}'O'${5:7} $((energy+(3+column_len-${#column_4[@]})*1000))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[4]} == 'D' ]]; then
|
||||||
|
move $1 $2 $3 '_D'$4 ${5:0:8}'O'${5:9} $((energy+(1+column_len-${#column_4[@]})*1000))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[5]} == 'D' ]]; then
|
||||||
|
move $1 $2 $3 '_D'$4 ${5:0:10}'O'${5:11} $((energy+(1+column_len-${#column_4[@]})*1000))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[6]} == 'D' ]] && [[ ${hallway[5]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 '_D'$4 ${5:0:12}'O' $((energy+(2+column_len-${#column_4[@]})*1000))
|
||||||
|
fi
|
||||||
|
elif [ ${#column_4[@]} -gt 0 ]; then
|
||||||
|
if [[ ${hallway[0]} == "O" ]] && [[ ${hallway[1]} == "O" ]] && [[ ${hallway[2]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[3]} == "O" ]] && [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 ${4:2} ${column_4[0]}${5:1} $((energy+(9+column_len-${#column_4[@]})*${energies[${column_4[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[1]} == "O" ]] && [[ ${hallway[2]} == "O" ]] && [[ ${hallway[3]} == "O" ]] \
|
||||||
|
&& [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 ${4:2} ${5:0:2}${column_4[0]}${5:3} $((energy+(8+column_len-${#column_4[@]})*${energies[${column_4[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[2]} == "O" ]] && [[ ${hallway[3]} == "O" ]] && [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 ${4:2} ${5:0:4}${column_4[0]}${5:5} $((energy+(6+column_len-${#column_4[@]})*${energies[${column_4[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[3]} == "O" ]] && [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 ${4:2} ${5:0:6}${column_4[0]}${5:7} $((energy+(4+column_len-${#column_4[@]})*${energies[${column_4[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[4]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 ${4:2} ${5:0:8}${column_4[0]}${5:9} $((energy+(2+column_len-${#column_4[@]})*${energies[${column_4[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[5]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 ${4:2} ${5:0:10}${column_4[0]}${5:11} $((energy+(2+column_len-${#column_4[@]})*${energies[${column_4[0]}]}))
|
||||||
|
fi
|
||||||
|
if [[ ${hallway[5]} == "O" ]] && [[ ${hallway[6]} == "O" ]]; then
|
||||||
|
move $1 $2 $3 ${4:2} ${5:0:12}${column_4[0]} $((energy+(3+column_len-${#column_4[@]})*${energies[${column_4[0]}]}))
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
column_1_str=${column_1[@]}
|
||||||
|
column_2_str=${column_2[@]}
|
||||||
|
column_3_str=${column_3[@]}
|
||||||
|
column_4_str=${column_4[@]}
|
||||||
|
move _${column_1_str// /_}_ _${column_2_str// /_}_ _${column_3_str// /_}_ _${column_4_str// /_}_ "O_O_O_O_O_O_O" 0
|
||||||
|
echo $min_energy
|
||||||
Reference in New Issue
Block a user