From bb4cda8b02df93da22f545c2fd71c93afa7b58d9 Mon Sep 17 00:00:00 2001 From: Pierre Jeanjean Date: Wed, 8 Dec 2021 11:48:58 +0100 Subject: [PATCH] Day 8 --- 08/01.sh | 12 ++++++++++++ 08/02.sh | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100755 08/01.sh create mode 100755 08/02.sh diff --git a/08/01.sh b/08/01.sh new file mode 100755 index 0000000..f1596f4 --- /dev/null +++ b/08/01.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +n_found=0 +while read line; do + number=' '$(sed -e 's/.* | //' -e 's/ / /g' <<< $line)' ' + number=$(sed -e 's/ [a-z]\{2\} / 1 /g' -e 's/ [a-z]\{3\} / 7 /g' -e 's/ [a-z]\{4\} / 4 /g' \ + -e 's/ [a-z]\{7\} / 8 /g' -e 's/ [a-z]\{5\} / /g' -e 's/ [a-z]\{6\} / /g' <<< $number) + found=${number// /} + i_found=${#found} + n_found=$((n_found+i_found)) +done +echo $n_found diff --git a/08/02.sh b/08/02.sh new file mode 100755 index 0000000..79dedcb --- /dev/null +++ b/08/02.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +sum=0 +while read line; do + digits=' '$(sed -s 's/ | .*$//' <<< $line)' ' + number=( $(sed -e 's/.* | //' -e 's/ / /g' <<< $line) ) + decrypted_number=() + digit_1=$(sed 's/^.* \([a-z]\{2\}\) .*$/\1/' <<< $digits) + digit_4=$(sed 's/^.* \([a-z]\{4\}\) .*$/\1/' <<< $digits) + digit_4_minus_1=$(sed -e "s/${digit_1:0:1}//" -e "s/${digit_1:1:1}//" <<< $digit_4) + for i in ${number[@]}; do + if [ ${#i} -eq 2 ]; then + decrypted_number+=( 1 ) + elif [ ${#i} -eq 3 ]; then + decrypted_number+=( 7 ) + elif [ ${#i} -eq 4 ]; then + decrypted_number+=( 4 ) + elif [ ${#i} -eq 5 ]; then + if [[ $i == *"${digit_1:0:1}"* ]] && [[ $i == *"${digit_1:1:1}"* ]]; then + decrypted_number+=( 3 ) + elif [[ $i == *"${digit_4_minus_1:0:1}"* ]] && [[ $i == *"${digit_4_minus_1:1:1}"* ]]; then + decrypted_number+=( 5 ) + else + decrypted_number+=( 2 ) + fi + elif [ ${#i} -eq 6 ]; then + if [[ $i == *"${digit_4:0:1}"* ]] && [[ $i == *"${digit_4:1:1}"* ]] && \ + [[ $i == *"${digit_4:2:1}"* ]] && [[ $i == *"${digit_4:3:1}"* ]]; then + decrypted_number+=( 9 ) + elif [[ $i == *"${digit_1:0:1}"* ]] && [[ $i == *"${digit_1:1:1}"* ]]; then + decrypted_number+=( 0 ) + else + decrypted_number+=( 6 ) + fi + elif [ ${#i} -eq 7 ]; then + decrypted_number+=( 8 ) + fi + done + temp_number=$(sed -e 's/ *//g' -e 's/^0*//' <<< "${decrypted_number[@]}") + sum=$((sum+temp_number)) +done +echo $sum