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