diff --git a/05/01.sh b/05/01.sh new file mode 100755 index 0000000..18e2cd4 --- /dev/null +++ b/05/01.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +points=() +while read line; do + x1=$(sed 's/,.*$//' <<< $line) + y1=$(sed 's/^.*,\(.*\) ->.*$/\1/' <<< $line) + x2=$(sed 's/^.*-> \(.*\),.*$/\1/' <<< $line) + y2=$(sed 's/^.*,.*,//' <<< $line) + if [ $x1 -ne $x2 ] && [ $y1 -ne $y2 ]; then + continue + fi + if [ $x1 -eq $x2 ]; then + x_inc=0 + elif [ $x1 -gt $x2 ]; then + x_inc=-1 + else + x_inc=1 + fi + if [ $y1 -eq $y2 ]; then + y_inc=0 + elif [ $y1 -gt $y2 ]; then + y_inc=-1 + else + y_inc=1 + fi + i=$x1 + j=$y1 + while [ $i -ne $x2 ] || [ $j -ne $y2 ]; do + points+=( "$i,$j" ) + i=$((i+x_inc)) + j=$((j+y_inc)) + done + points+=( "$i,$j" ) +done + +printf '%s\n' "${points[@]}" | sort | uniq -d | wc -l diff --git a/05/02.sh b/05/02.sh new file mode 100755 index 0000000..625d376 --- /dev/null +++ b/05/02.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +points=() +while read line; do + x1=$(sed 's/,.*$//' <<< $line) + y1=$(sed 's/^.*,\(.*\) ->.*$/\1/' <<< $line) + x2=$(sed 's/^.*-> \(.*\),.*$/\1/' <<< $line) + y2=$(sed 's/^.*,.*,//' <<< $line) + if [ $x1 -eq $x2 ]; then + x_inc=0 + elif [ $x1 -gt $x2 ]; then + x_inc=-1 + else + x_inc=1 + fi + if [ $y1 -eq $y2 ]; then + y_inc=0 + elif [ $y1 -gt $y2 ]; then + y_inc=-1 + else + y_inc=1 + fi + i=$x1 + j=$y1 + while [ $i -ne $x2 ] || [ $j -ne $y2 ]; do + points+=( "$i,$j" ) + i=$((i+x_inc)) + j=$((j+y_inc)) + done + points+=( "$i,$j" ) +done + +printf '%s\n' "${points[@]}" | sort | uniq -d | wc -l