This commit is contained in:
2021-12-14 11:42:37 +01:00
parent 856a71bd06
commit 1312fbc3fd
2 changed files with 69 additions and 0 deletions

44
14/02.sh Executable file
View File

@@ -0,0 +1,44 @@
#!/bin/bash
rules=()
n_step=40
declare -A polymer
declare -A occurences
read line
occurences[${line:0:1}]=$((${occurences[${line:0:1}]}+1))
for ((i=1; i<${#line}; i++)); do
pair=${line:$((i-1)):2}
polymer[$pair]=$((${polymer[$pair]}+1))
occurences[${line:$i:1}]=$((${occurences[${line:$i:1}]}+1))
done
read
while read line; do
rules+=( ${line% ->*}'|'${line#*-> } )
done
for ((i=0; i<$n_step; i++)); do
declare -A new_polymer
for rule in ${rules[@]}; do
rule_pair=${rule:0:2}
rule_pair_1=${rule:0:1}${rule:3:1}
rule_pair_2=${rule:3:1}${rule:1:1}
if ! [ -v polymer[$rule_pair] ]; then
polymer[$rule_pair]=0
fi
new_polymer[$rule_pair]=$((${new_polymer[$rule_pair]}-${polymer[$rule_pair]}))
new_polymer[$rule_pair_1]=$((${new_polymer[$rule_pair_1]}+${polymer[$rule_pair]}))
new_polymer[$rule_pair_2]=$((${new_polymer[$rule_pair_2]}+${polymer[$rule_pair]}))
occurences[${rule:3:1}]=$((${occurences[${rule:3:1}]}+${polymer[$rule_pair]}))
done
for new_pair in ${!new_polymer[@]}; do
if ! [ -v polymer[$new_pair] ]; then
polymer[$new_pair]=0
fi
polymer[$new_pair]=$((${polymer[$new_pair]}+${new_polymer[$new_pair]}))
done
unset new_polymer
done
occurences_array=( $(printf "%s\n" "${occurences[@]}" | sort -nr) )
echo $((occurences_array[0]-occurences_array[-1]))