首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >疯狂化学方程

疯狂化学方程
EN

Code Golf用户
提问于 2014-01-07 23:55:30
回答 1查看 817关注 0票数 9

你应该从用户那里得到化学方程式的字符串(没有空格,只有字母(大写和小写),数字,括号和数学符号),如果方程是平衡的,你应该打印答案(任何一对正负的答案:是/否,真/假,1/0)。为了缩短代码,您可以假设输入字符串只能包含这些元素: Al、Ar、B、Be、C、Cl、Cr、Cu、Fe、H、He、K、N、O、S,还有一件事:可能有-符号。这都是关于数学的:+表示加法,-表示减法。

示例:

输入:

代码语言:javascript
复制
C6H5COOH-O2=7CO2+3H2O

输出:

代码语言:javascript
复制
No

输入:

代码语言:javascript
复制
2Fe(CN)6+2SO2+202=Fe2(SO4)2+6C2N2

输出:

代码语言:javascript
复制
Yes

输入:

代码语言:javascript
复制
2SO2=2SO4-2O2

输出:

代码语言:javascript
复制
Yes

最短的代码获胜。

EN

回答 1

Code Golf用户

回答已采纳

发布于 2014-01-09 18:07:56

Mathematica 152

代码语言:javascript
复制
f=Times@@@Tr@CoefficientRules@ToExpression@(r=StringReplace)[r[
#<>")",{"="->"-(",x:_?LetterQ|")"~~y_?DigitQ:>x<>"^"<>y}],x_?UpperCaseQ:>" "<>x]⋃{}=={0}&

结果:

代码语言:javascript
复制
f@"C6H5COOH-O2=7CO2+3H2O"
f@"2Fe(CN)6+2SO2+2O2=Fe2(SO4)2+6C2N2"
f@"2SO2=2SO4-2O2"

假真

我把化学公式当作多项式来处理。

然后我只计算系数。

票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/17931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档