首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >回到化学课上

回到化学课上
EN

Code Golf用户
提问于 2015-11-20 19:59:51
回答 13查看 1.3K关注 0票数 16

Introduction

我在化学学到的第一件事是给出烷烃燃烧的公式。最基本的例子是:2CH4 + 4O2 -> 4H2O + 2CO2。请注意,如果将每个系数除以2,则可以简化方程,我们将得到CH4 + 2O2 -> 2H2O + CO2。为了让事情变得更简单,我们会忽略这一点,以免事情变得复杂。

你可以看到,任何烷烃的燃烧,都需要氧气。反应后,只制备了CO2H2O

任务

输入将始终以C(n)H(2n+2)形式出现,并带有n>0。以下是一些示例输入:

代码语言:javascript
复制
CH4
C2H6
C3H8
C4H10
C5H12
C6H14

有用提示:

在燃烧反应中,每种烷烃都有一个标准模式:

代码语言:javascript
复制
2C(n)H(2n+2) + (3n+1)O2 -> (2n+2)H2O + (2n)CO2

例如:

C4H10给出了以下方程:2C(4)H(2*4+2) + (3*4+1)O2 -> (2*4+2)H2O + (2*4)CO2。在计算完一切之后,我们得到了最后的方程2C4H10 + 13O2 -> 10H2O + 8CO2

测试案例

代码语言:javascript
复制
CH4
2CH4 + 4O2 -> 4H2O + 2CO2

C3H8
2C3H8 + 10O2 -> 8H2O + 6CO2

C4H10
2C4H10 + 13O2 -> 10H2O + 8CO2

C12H26
2C12H26 + 37O2 -> 26H2O + 24CO2

规则

  • 请注意,我使用空格来增加示例的可读性,这是不必要的。2CH4 + 4O2 -> 4H2O + 2CO22CH4+4O2->4H2O+2CO2都是有效的输出。但是,如果您始终使用空格作为输出,则将获得-10%的奖励。
  • 这是密码-高尔夫,所以字节最少的程序赢了!
EN

回答 13

Code Golf用户

回答已采纳

发布于 2015-11-22 11:33:57

Pyth,40字节

代码语言:javascript
复制
s[2z\+h*3Jv|hctz\H\1"O2>"yhJ"H2O+"yJ"CO2

在网上试试。 测试套件。

票数 1
EN

Code Golf用户

发布于 2015-11-20 21:28:32

Python 3,86 * 0.9 = 77.4字节

代码语言:javascript
复制
s=input()
N=int(s.split('H')[1])
print("2%s + %dO2 > %dH20 + %dCO2"%(s,N*1.5-2,N,N-2))

在网上试试!

从输入中提取H's的个数而不是C's的个数,避免了特殊的大小写CH4,简化了N=2n+2的输出表达式。

输出通过字符串格式插入参数。第一个求和仅仅是输入字符串,其余的都计算了插入的数字。请注意,N*1.5-2 (与N*3/2-2相同)提供了一个浮点数,但字符串格式将其转换为int。

票数 7
EN

Code Golf用户

发布于 2015-11-20 21:10:47

Java,202 * 0.9 = 181.8字节

有时,我想知道我是否只是在用Java来伤害自己。

感谢@TNT和@TFeld剃去了一个好的20个字节!

代码语言:javascript
复制
class A{public static void main(String[]a){String s=a[0].substring(1,a[0].indexOf("H"));long n=Long.parseLong((s.length()>0)?s:"1");System.out.printf("2%s + %dO2 > %dH2O + %dCO2",a[0],3*n+1,2*n+2,2*n);}}

很简单。基本上,我将输入从C削减到H,并获得该子字符串。如果没什么,我把n设为一个。否则,我将其设置为CH之间的数字。下面的代码只是打印出来,并将其放入适当的符号中。

不毛之地

代码语言:javascript
复制
class A{
    public static void main(String[]a) {
         String s=a[0].substring(1,a[0].indexOf("H"));
         long n=Long.parseLong((s.length()>0)?s:"1");
         System.out.printf("2%s + %dO2 > %dH2O + %dCO2",a[0],3*n+1,2*n+2,2*n);
    }
}
票数 4
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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