Files
advent-of-code/day06/ex1-bis.bash

74 lines
1.1 KiB
Bash
Executable File

#!/bin/bash
#
# ex1.bash: Advent2020 game, day 6/game 1.
CMD=${0##*/}
shopt -s extglob
declare -a Q=()
printf -v AC "%d" "'a"
printf -v ZC "%d" "'z"
(( NC = ZC-AC+1 ))
function reset_array() {
Q=()
#for (( elt=AC; elt<=ZC; ++elt )); do
# Q[$elt]=0
#done
}
function count_array() {
#local -i count
echo ${#Q[@]}
#for ${!Q[@]}; do
# ((Q[elt] > 0)) && ((count++))
# #printf "%d=%d (%d)" "$elt" "${Q[$elt]}" "$count"
#done
#echo $count
}
function set_array() {
local str="$1"
local c asc
for ((i=0; i<${#str}; ++i)); do
c=${str:$i:1}
if [[ "$c" =~ [a-z] ]]; then
printf -v asc "%d" "'$c"
Q[$asc]=1
fi
done
}
declare -i people=0 group=0 count=0
declare line grouped
function calcgroup() {
set_array "$grouped"
((group++))
i=$(count_array)
#printf "c=%d" $i
((count += i))
((people=0))
grouped=""
reset_array
}
while read -r line; do
if [[ -z "$line" ]]; then
#echo "G=$grouped"
#set_array "$grouped"
calcgroup
#for (( elt=AC; elt<=ZC; ++elt )); do
#printf "%s=%s " "$elt" "${Q[$elt]}"
#done
#echo
continue
fi
((people++))
grouped+="$line"
done
calcgroup
printf "%s : groups=%d count=%d\n" "$CMD" $group $count
exit 0