74 lines
1.1 KiB
Bash
Executable File
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
|