我刚刚在学校上了一堂关于烷烃的课,并且发现这可能会给高尔夫挑战赛带来很大的挑战!不用担心,它并不像看起来那样复杂!
快速重提
(请注意:为简短起见,并非所有信息都是100%准确的。)
烷烃是碳和氢的串。每个碳原子具有4个键,每个氢原子具有1个键。烷烃的所有碳原子形成一个串,其中每个C原子与另外2个C原子(路易斯结构中的左侧和右侧)和2个H原子(上下)连接,但串的末端除外,其中C原子仅连接1个其他C,但连接3 Hs。这是戊烷(具有5个C原子和12个H原子的烷烃)的基本示例:
H H H H H
| | | | |
H-C-C-C-C-C-H
| | | | |
H H H H H
烷烃也可以具有分支。但请放心,此挑战中的所有烷烃都只能用1级支链表示。例:
H
|
H-C-H
H H H | H
| | | | |
H-C-C-C-C-C-H
| | | | |
H H H H H
为了完成此挑战,您还必须了解IUPAC支链烷烃的命名约定。首先是根烷烃。在我们之前的示例中,这将是“ CCCCC”部分。根据该链的长度,它有不同的名称。1 C被称为甲烷,2 C乙烷,3 C丙烷,然后是丁烷,戊烷,己烷,庚烷,辛烷,壬烷和癸烷(10 C)。然后,对于每个分支,都有一个特定的前缀:首先,是分支附加到的C原子的索引(偏移)(从左侧开始计数)。在该示例中,该值为4(又是从左数第4个C原子)。然后有一个连字符(此符号:“-”),其后还有另一个名称,指示分支的大小。分支大小的命名几乎与根的大小命名相同,只是您要附加“ yl”而不是“ ane”。这样,示例的全名将是
4-methylpentane
如果您有多个分支,那么它们也将被另一个连字符分隔开。例:
2-butyl-5-methylhexane
最后一件事:如果您有多个相同大小的分支,则将它们分组。它们的偏移量用逗号分隔,并且它们具有相同的大小名称,根据分组的分支数,它们以一个额外的音节作为前缀:“ di”代表2个分支,“ tri”代表3个分支,“ tetra”代表4个(您不需要更多的挑战)。例:
2-ethyl-2,4,6-trimethyldecane
仅供参考,这看起来可能像这样:(省略的H原子)
|
-C-
| |
-C- -C-
| | | | | | | | | |
-C-C-C-C-C-C-C-C-C-C-
| | | | | | | | | |
-C- -C-
| |
命名表
Prefixes indicating numbers:
| Num | Prefix |
|------|--------|
| 1 | meth |
| 2 | eth |
| 3 | prop |
| 4 | but |
| 5 | pent |
| 6 | hex |
| 7 | hept |
| 8 | oct |
| 9 | non |
| 10 | dec |
Suffix root: ane
Suffix branch: yl
Prefixes grouping: di, tri, tetra
规则
编写一个程序,该程序从STDIN,程序参数或等效项中读取此类IUPAC名称,并将其作为ASCII艺术的刘易斯结构绘制到STDOUT(或等效项)中。
- 为简单起见,您不必绘制H原子(否则您将遇到间距问题)
- 您不得打印任何空白的前导或尾随水平线
- 您必须解析的链条的长度不能超过10,并且“组”中分支的最大数量限制为4。
- 分支的最大“偏移”为9(这意味着您不必解析多于1位数字)
- 每个新分支之后,分支必须在上升和下降之间交替。如果该空间已经被另一个分支以相同的偏移量占用,则必须在根的另一侧绘制它。(上->下,下->上)
- 在损坏,格式不正确或其他无法绘制的输入上,您的程序可能行为未指定。
这是代码高尔夫球,最短的代码以字节为单位获胜!
打高尔夫球快乐!:)
3-3-5-7-methyldodecane
因为最长的连续碳链为12长。另外,您说问题中的信息并非全部准确,但我认为值得指出的是第二个分子是2-methylpentane
,不是4-methylpentane
因为您从具有最接近分支的碳开始。
Your branches have to alternate between going up and down after every new branch.
您的示例违反了此规则。2.我们必须支持的最大链长是多少(解析前缀将成为挑战的一部分。)您应链接(或最好复制)命名表。
4-methylpropane
说4-methylpentane
什么?4-<anything>propane
似乎不太可能,除非我完全误解了一些东西。