26 lines
572 B
Bash
Executable File
26 lines
572 B
Bash
Executable File
#!/bin/bash
|
|
|
|
rules=()
|
|
n_step=10
|
|
read polymer
|
|
read
|
|
|
|
while read line; do
|
|
rules+=( ${line% ->*}'|'${line#*-> } )
|
|
done
|
|
|
|
for ((i=0; i<$n_step; i++)); do
|
|
polymer_size=0
|
|
while [ $polymer_size -lt ${#polymer} ]; do
|
|
polymer_size=${#polymer}
|
|
for rule in ${rules[@]}; do
|
|
polymer=${polymer//${rule:0:2}/${rule:0:1}'|'${rule:3:1}'|'${rule:1:1}}
|
|
done
|
|
done
|
|
polymer=${polymer//'|'/}
|
|
done
|
|
|
|
occurences=( $(printf "%s\n" $(sed 's/\(.\)/\1 /g' <<< $polymer) | sort | uniq -c \
|
|
| sort -nr | sed 's/.$//') )
|
|
echo $((occurences[0]-occurences[-1]))
|