Day 15
[advent-of-code-2019.git] / day10 / check_asteroids.sh
1 #!/bin/bash
2
3 set -u
4 set -e
5
6 basedir=$(dirname $(readlink -f ${BASH_SOURCE}))
7
8 . $basedir/common.sh
9
10 filename=${1:-$basedir/3_4_8.txt}
11
12 read_file $filename
13
14 declare -A cansee
15 declare -A cantsee
16
17 debug_line=true # default to not actually outputting any debug info
18
19 if [ ${DEBUG:-0} -gt 0 ]; then
20     debug_line=debug_line
21 fi
22
23 debug_line() {
24     line="$@"
25     echo "$line" >&2
26 }
27
28 # lets be silly and use the stuff from zap to build the lists instead
29 best_count=0
30 best_ast=
31 cur_ast_num=0
32 total_asts=${#asteroids[@]}
33 for asteroid in ${!asteroids[@]}; do
34     percent=$((100*$cur_ast_num / $total_asts))
35     printf '\r%02d%% complete' $percent
36
37     # get a full list of angles for each other asteroid
38     declare -A asteroid_angles
39     for asteroid2 in ${!asteroids[@]}; do
40         if [ $asteroid == $asteroid2 ]; then
41             continue
42         fi
43
44         angle=$(get_angle $asteroid $asteroid2)
45         asteroid_angles[$angle]=1
46     done
47     count=${#asteroid_angles[@]}
48     if [ $count -gt $best_count ]; then
49         best_count=$count
50         best_ast=$asteroid
51     fi
52     asteroid[$asteroid]=${#asteroid_angles[@]}
53     unset asteroid_angles
54     cur_ast_num=$((cur_ast_num+1))
55 done
56 printf '\r                              \r'
57
58 echo "Found $best_ast with $best_count asteroids"
59 exit 0