#!/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))"