伯恩德(Bernd)是一名高中生,在化学方面有一些问题。在课堂上,他必须为正在进行的某些实验设计化学方程式,例如庚烷的燃烧:
C 7 H 16 + 11O 2 →7CO 2 + 8H 2 O
由于数学并不是Bernd最强的学科,因此他经常很难找到反应的正负离子之间的确切比例。既然您是Bernd的家庭教师,那么帮助他就是您的工作!编写一个程序,计算获得有效化学方程式所需的每种物质的量。
输入值
输入是没有数量的化学方程式。为了使纯ASCII码成为可能,我们将任何订阅都写为普通数字。元素名称始终以大写字母开头,后跟小写字母。分子之间用+
符号分隔,->
等式两边之间插入了ASCII箭头:
Al+Fe2O4->Fe+Al2O3
输入以换行符终止,并且不会包含任何空格。如果输入无效,则您的程序可以执行您喜欢的任何操作。
您可能会假设输入内容的长度不得超过1024个字符。您的程序可能无法从标准输入,从第一个参数读取输入,也可能会在运行时以实现定义的方式读取输入。
输出量
程序的输出是输入方程式,其中增加了额外的数字。每个元素的原子数在箭头的两侧必须相同。对于上面的示例,有效输出为:
2Al+Fe2O3->2Fe+Al2O3
如果一个分子的数目为1,则将其删除。数字必须始终为正整数。您的程序必须产生数字,以使它们的和最小。例如,以下内容是非法的:
40Al+20Fe2O3->40Fe+20Al2O3
如果没有解决方案,请打印
Nope!
代替。没有解决方案的样本输入是
Pb->Au
规则
- 这是代码高尔夫球。最短的代码获胜。
- 您的程序必须在合理的时间内终止所有合理的输入。
测试用例
每个测试用例都有两行:输入和正确的输出。
C7H16+O2->CO2+H2O
C7H16+11O2->7CO2+8H2O
Al+Fe2O3->Fe+Al2O3
2Al+Fe2O3->2Fe+Al2O3
Pb->Au
Nope!
solve(
函数编写了化学方程式求解器,并eval(
解释了输入:)