You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
replacements, molecule = DATA.read.chomp.split("\n\n")
|
|
|
|
replacements = replacements.scan(/(\w+) \=> (\w+)/).map(&:reverse).sort_by {|k,_| -k.size}
|
|
|
|
|
|
|
|
steps = 0
|
|
|
|
until molecule == ?e
|
|
|
|
k,v = replacements.find {|k,_| molecule.include?(k) }
|
|
|
|
steps += molecule.scan(/#{k}/).size
|
|
|
|
|
|
|
|
molecule.gsub!(k, v)
|
|
|
|
puts "#{steps}: #{molecule}"
|
|
|
|
end
|
|
|
|
__END__
|
|
|
|
Al => ThF
|
|
|
|
Al => ThRnFAr
|
|
|
|
B => BCa
|
|
|
|
B => TiB
|
|
|
|
B => TiRnFAr
|
|
|
|
Ca => CaCa
|
|
|
|
Ca => PB
|
|
|
|
Ca => PRnFAr
|
|
|
|
Ca => SiRnFYFAr
|
|
|
|
Ca => SiRnMgAr
|
|
|
|
Ca => SiTh
|
|
|
|
F => CaF
|
|
|
|
F => PMg
|
|
|
|
F => SiAl
|
|
|
|
H => CRnAlAr
|
|
|
|
H => CRnFYFYFAr
|
|
|
|
H => CRnFYMgAr
|
|
|
|
H => CRnMgYFAr
|
|
|
|
H => HCa
|
|
|
|
H => NRnFYFAr
|
|
|
|
H => NRnMgAr
|
|
|
|
H => NTh
|
|
|
|
H => OB
|
|
|
|
H => ORnFAr
|
|
|
|
Mg => BF
|
|
|
|
Mg => TiMg
|
|
|
|
N => CRnFAr
|
|
|
|
N => HSi
|
|
|
|
O => CRnFYFAr
|
|
|
|
O => CRnMgAr
|
|
|
|
O => HP
|
|
|
|
O => NRnFAr
|
|
|
|
O => OTi
|
|
|
|
P => CaP
|
|
|
|
P => PTi
|
|
|
|
P => SiRnFAr
|
|
|
|
Si => CaSi
|
|
|
|
Th => ThCa
|
|
|
|
Ti => BP
|
|
|
|
Ti => TiTi
|
|
|
|
e => HF
|
|
|
|
e => NAl
|
|
|
|
e => OMg
|
|
|
|
|
|
|
|
CRnCaSiRnBSiRnFArTiBPTiTiBFArPBCaSiThSiRnTiBPBPMgArCaSiRnTiMgArCaSiThCaSiRnFArRnSiRnFArTiTiBFArCaCaSiRnSiThCaCaSiRnMgArFYSiRnFYCaFArSiThCaSiThPBPTiMgArCaPRnSiAlArPBCaCaSiRnFYSiThCaRnFArArCaCaSiRnPBSiRnFArMgYCaCaCaCaSiThCaCaSiAlArCaCaSiRnPBSiAlArBCaCaCaCaSiThCaPBSiThPBPBCaSiRnFYFArSiThCaSiRnFArBCaCaSiRnFYFArSiThCaPBSiThCaSiRnPMgArRnFArPTiBCaPRnFArCaCaCaCaSiRnCaCaSiRnFYFArFArBCaSiThFArThSiThSiRnTiRnPMgArFArCaSiThCaPBCaSiRnBFArCaCaPRnCaCaPMgArSiRnFYFArCaSiThRnPBPMgAr
|