43 lines
745 B
Bash
Executable file
43 lines
745 B
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
file="$1"
|
|
|
|
ones=(0 0 0 0 0 0 0 0 0 0 0 0)
|
|
lines=0
|
|
gamma=""
|
|
epsilon=""
|
|
|
|
while read line; do
|
|
|
|
bitn=0
|
|
while read bit; do
|
|
if [ "$bit" -eq 1 ]; then
|
|
ones[$bitn]=$((${ones[$bitn]} + 1))
|
|
fi
|
|
bitn=$(( bitn + 1 ))
|
|
done < <(echo "$line" | grep -o .)
|
|
|
|
lines="$((lines + 1))"
|
|
|
|
done < <(cat "$file")
|
|
|
|
echo "${ones[@]}"
|
|
|
|
for i in ${ones[@]}; do
|
|
if [ "$i" -gt "$(( lines / 2 ))" ]; then
|
|
gamma="${gamma}1"
|
|
epsilon="${epsilon}0"
|
|
else
|
|
gamma="${gamma}0"
|
|
epsilon="${epsilon}1"
|
|
fi
|
|
done
|
|
|
|
|
|
gammaDecimal="$( echo "ibase=2; $gamma" | bc )"
|
|
epsilonDecimal="$( echo "ibase=2; $epsilon" | bc )"
|
|
|
|
echo "Gamma: $gamma -> $gammaDecimal"
|
|
echo "Epsilon: $epsilon -> $epsilonDecimal"
|
|
|
|
echo "Answer: $((gammaDecimal * epsilonDecimal))"
|