From 5ba8af548ccc564b8354f93c740e35dddc2ea881 Mon Sep 17 00:00:00 2001 From: Dominika Liberda Date: Fri, 3 Dec 2021 11:57:56 +0100 Subject: [PATCH] + day 3 --- 3_1.sh | 32 ++++++++++++++++++++++++++++++++ 3_2.sh | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100755 3_1.sh create mode 100755 3_2.sh diff --git a/3_1.sh b/3_1.sh new file mode 100755 index 0000000..d211901 --- /dev/null +++ b/3_1.sh @@ -0,0 +1,32 @@ +#!/bin/bash +arr=() +gamma='' +epsilon='' + +while read line; do + arr+=("$line") +done + +for ((j=0; j<${#arr[0]}; j++)); do + zeroes=0 + ones=0 + for ((i=0; i<${#arr[@]}; i++)); do + if [[ "$(cut -c $((j+1)) <<< "${arr[$i]}")" == *"0"* ]]; then # lazy + zeroes=$((zeroes+1)) + else + ones=$((ones+1)) + fi + done + if [[ $zeroes -gt $ones ]]; then + gamma=${gamma}0 + epsilon=${epsilon}1 + else + gamma=${gamma}1 + epsilon=${epsilon}0 + fi +done + +gamma_=$((2#$gamma)) +epsilon_=$((2#$epsilon)) + +echo "result: $((gamma_*epsilon_))" diff --git a/3_2.sh b/3_2.sh new file mode 100755 index 0000000..cf8d700 --- /dev/null +++ b/3_2.sh @@ -0,0 +1,49 @@ +#!/bin/bash +yarr=() +arr_=() +zeroes=0 +ones=0 + +while read line; do + yarr+=("$line") +done + +function asdf() { + arr=(${yarr[@]}) + for ((i=0; i<${#arr[0]}; i++)); do + for ((j=0; j<${#arr[@]}; j++)); do + if [[ $(cut -c$((i+1)) <<< "${arr[$j]}") == 0 ]]; then + zeroes=$((zeroes+1)) + else + ones=$((ones+1)) + fi + done + if [[ $zeroes -lt $ones && $1 == 1 || $zeroes == $ones && $1 == 1 ]] || \ + [[ $zeroes -gt $ones && $1 == 0 ]]; then + for ((j=0; j<${#arr[@]}; j++)); do + [[ $(cut -c$((i+1)) <<< "${arr[$j]}") == "0" ]] && arr_+=("${arr[$j]}") + done + else + for ((j=0; j<${#arr[@]}; j++)); do + [[ $(cut -c$((i+1)) <<< "${arr[$j]}") == "1" ]] && arr_+=("${arr[$j]}") + done + fi + arr=(${arr_[@]}) + arr_=() + + if [[ "${#arr[@]}" == 1 ]]; then + break + fi + zeroes=0 + ones=0 + done +} + +asdf 0 +echo 0: ${arr[0]} +uwu=${arr[0]} +asdf 1 +owo=${arr[0]} +echo 1: ${arr[0]} + +echo $((2#$uwu*2#$owo))