6 # these wires should give 6
 
  10 # these wires should get 159
 
  11 #wire_1=(R75 D30 R83 U83 L12 D49 R71 U7 L72)
 
  12 #wire_2=(U62 R66 U55 R34 D71 R55 D58 R83)
 
  14 # these wires should get 135
 
  15 #wire_1=(R98 U47 R26 D63 R33 U87 L62 D20 R33 U53 R51)
 
  16 #wire_2=(U98 R91 D20 R16 D67 R40 U7 R15 U6 R7)
 
  18 filename=${1:-input.txt}
 
  20 # read in data from file instead
 
  22 IFS="," read -u 3 -a wire_1
 
  23 IFS="," read -u 3 -a wire_2
 
  37     for operation in "${w[@]}"; do
 
  38         direction=${operation:0:1}
 
  57                 for (( moved=1; moved <= $amount; moved++ )); do
 
  58                     cur_vert=$((cur_vert${operator}1))
 
  60                     if [ $wire_number -eq 1 ]; then
 
  61                         if ! [ ${w1cost[$cur_horz,$cur_vert]+a} ]; then
 
  62                             w1cost[$cur_horz,$cur_vert]=$cost
 
  65                     if [ ${b[$cur_horz,$cur_vert]+a} ] && [ $wire_number -eq 2 ]; then
 
  66                         if [ ${b[$cur_horz,$cur_vert]} -eq 1 ]; then
 
  67                             cross_wires[$cur_horz,$cur_vert]=$((${w1cost[$cur_horz,$cur_vert]}+$cost))
 
  68                             b[$cur_horz,$cur_vert]=3
 
  72                     b[$cur_horz,$cur_vert]=$wire_number
 
  76                 for (( moved=1; moved <= $amount; moved++ )); do
 
  77                     cur_horz=$((cur_horz${operator}1))
 
  79                     if [ $wire_number -eq 1 ]; then
 
  80                         if ! [ ${w1cost[$cur_horz,$cur_vert]+a} ]; then
 
  81                             w1cost[$cur_horz,$cur_vert]=$cost
 
  84                     if [ ${b[$cur_horz,$cur_vert]+a} ] && [ $wire_number -eq 2 ]; then
 
  85                         if [ ${b[$cur_horz,$cur_vert]} -eq 1 ]; then
 
  86                             cross_wires[$cur_horz,$cur_vert]=$((${w1cost[$cur_horz,$cur_vert]}+$cost))
 
  87                             b[$cur_horz,$cur_vert]=3
 
  91                     b[$cur_horz,$cur_vert]=$wire_number
 
  99 declare -A cross_wires
 
 100 declare -A wire_1_cost
 
 101 echo "Tracing first wire"
 
 102 trace_wire wire_1 board cross_wires wire_1_cost 1
 
 103 echo "Tracing second wire"
 
 104 trace_wire wire_2 board cross_wires wire_1_cost 2
 
 106 echo "Wires cross at:"
 
 108 for cross in "${!cross_wires[@]}"; do
 
 109     echo "  $cross ${cross_wires[$cross]}"
 
 110     cost=${cross_wires[$cross]}
 
 111     if [ $min_cost -lt 0 ] || [ $min_cost -gt $cost ]; then
 
 116 echo Min cost: $min_cost