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