背景故事
您在化学实验室醒来时头昏眼花,并且意识到自己被一位老疯子化学家绑架了。由于他的年龄使他看不清视线,因此他希望您为他工作,只有这样,您才可以逃脱实验室。
任务
您的任务是返回分子的结构式,其化学式将作为输入给出。请注意,只有碳(C
),氧(O
)和氢(H
)原子将用作输入。与化学公式不同,a 0
是有效的量词,1
不能省略a(例如C1H4O0
,有效输入,但CH4
不是)。
为了避免歧义,我们假设分子中不存在双键和三键。所有碳原子需要4个单键,所有氧原子需要2个,氢原子需要一个。我们还假设O-O
债券也不存在。该分子不必存在也不是稳定的。
输入中的3
碳原子绝不能超过以确保输出显示中的亮度。
您只应显示碳原子排列成直线而不中断的分子。嗯,没有C-O-C
债券。
您必须返回之前规则未排除的所有可能分子。您不需要处理无效的输入。
以下示例显示了该分子必须处理的所有解决方案。
在分子式之一的页面平面上旋转180度被认为是多余的,不需要显示。
在下面的示例中,我将显示一个分子的所有可能的分子式,然后指出不需要显示的分子式。
例
输入: C2H6O2
首先,这里是此输入的所有可能公式(谢谢@Jonathan Allan)
01 H
|
O H
| |
H - O - C - C - H
| |
H H
02 H
|
H O
| |
H - O - C - C - H
| |
H H
03 H H
| |
H - O - C - C - O - H
| |
H H
04 H H
| |
H - O - C - C - H
| |
H O
|
H
05 H H
| |
H - O - C - C - H
| |
O H
|
H
12 H H
| |
O O
| |
H - C - C - H
| |
H H
13 H
|
O H
| |
H - C - C - O - H
| |
H H
14 H
|
O H
| |
H - C - C - H
| |
H O
|
H
15 H
|
O H
| |
H - C - C - H
| |
O H
|
H
23 H
|
H O
| |
H - C - C - O - H
| |
H H
24 H
|
H O
| |
H - C - C - H
| |
H O
|
H
25 H
|
H O
| |
H - C - C - H
| |
O H
|
H
34 H H
| |
H - C - C - O - H
| |
H O
|
H
35 H H
| |
H - C - C - O - H
| |
O H
|
H
45 H H
| |
H - C - C - H
| |
O O
| |
H H
如果我们在页面平面中旋转了180°,则下面的公式应该在输出中:
01 H
|
O H
| |
H - O - C - C - H
| |
H H
03 H H
| |
H - O - C - C - O - H
| |
H H
12 H H
| |
O O
| |
H - C - C - H
| |
H H
13 H
|
O H
| |
H - C - C - O - H
| |
H H
14 H
|
O H
| |
H - C - C - H
| |
H O
|
H
15 H
|
O H
| |
H - C - C - H
| |
O H
|
H
23 H
|
H O
| |
H - C - C - O - H
| |
H H
25 H
|
H O
| |
H - C - C - H
| |
O H
|
H
35 H H
| |
H - C - C - O - H
| |
O H
|
H
您无需输出公式的标签,并且当存在两个旋转时可以输出其中一个旋转。例如,您可以输出02或35。
以下是一些有效的输入来测试您的代码:
C3H8O2 C1H4O0 C2H6O2 C1H4O1 C2H6O2
化学家为您提供的用于完成任务的PC机已经很旧了,因此您没有足够的内存来保存代码,因此这是代码高尔夫球,并且字节数最短!
我们需要处理环状分子吗?
—
路加福音
您建议的输出缺少许多潜在分子:那里有两个副本propan-1,2-diol,但至少缺少propan-1,1-diol,propan-1,3-diol,propan -2,2-二醇,大量的醇醚以及两个氧原子相互连接的各种化合物。另外,如何指定输出格式?我可以想象分子中的某些键需要拉长一些才能适合所有情况(例如,二甲基丙烷,这显然是一种化学物质)。
1.同一碳原子上可能有2个OH基团吗?您似乎已从示例中排除了它,但我在规范中没有看到任何内容表明我们不必考虑(我知道实际上这些化合物与醛处于平衡状态)。2.为什么HOCH2CH2OH与两个OH组都指出示例中缺少唐纳德吗?这不是必需的输出吗?
—
Level River St
3.碳链的输出垂直而不是水平是否可以接受?
—
水平河圣