Ich hatte gerade eine Lektion in der Schule über Alkane und dachte mir, dass dies wahrscheinlich eine großartige Code-Golf-Herausforderung sein würde! Keine Sorge, es ist nicht so kompliziert, wie es aussehen mag!
Eine schnelle Wiederaufbereitung
(Bitte beachten Sie: Um dies kurz zu halten, sind nicht alle Informationen zu 100% korrekt.)
Alkane sind Ketten aus Kohlenstoff und Wasserstoff. Jedes Kohlenstoffatom hat 4 Bindungen und jedes Wasserstoffatom 1 Bindung. Alle Kohlenstoffatome des Alkans bilden eine Kette, in der jedes C-Atom mit 2 anderen C-Atomen (links und rechts in der Lewis-Struktur) und 2 H-Atomen (oben und unten) verbunden ist, mit Ausnahme der Enden der Kette , wobei das C-Atom nur mit 1 anderen C, aber 3 Hs verbunden ist. Hier ist ein grundlegendes Beispiel für Pentan (ein Alkan mit 5 C-Atomen und 12 H-Atomen):
H H H H H
| | | | |
H-C-C-C-C-C-H
| | | | |
H H H H H
Alkane können auch Verzweigungen aufweisen. Aber keine Sorge, alle Alkane in dieser Herausforderung können mit nur einem Verzweigungsgrad ausgedrückt werden. Beispiel:
H
|
H-C-H
H H H | H
| | | | |
H-C-C-C-C-C-H
| | | | |
H H H H H
Um diese Herausforderung zu meistern, müssen Sie auch die IUPAC-Namenskonvention für verzweigte Alkane kennen. Da ist zunächst das Wurzelalkan. In unserem vorherigen Beispiel wäre dies der Teil "CCCCC". Je nachdem, wie lang diese Kette ist, hat sie einen anderen Namen. 1 C heißt Methan, 2 C Ethan, 3 C Propan, dann Butan, Pentan, Hexan, Heptan, Octan, Nonan und Decan (10 C). Dann gibt es für jeden Zweig ein bestimmtes Präfix: Erstens gibt es den Index (Offset) des C-Atoms, an das der Zweig angehängt ist (Zählung von links). Im Beispiel wäre dies 4 (oder das 4. C-Atom von links). Dann gibt es einen Bindestrich (dieses Symbol: "-") und danach einen anderen Namen, der die Größe des Zweigs angibt. Die Benennung der Größe der Verzweigung ist fast identisch mit der Benennung der Größe der Wurzel. nur, dass du anstelle von "ane" "yl" anhängst. Damit wäre der vollständige Name des Beispiels
4-methylpentane
Wenn Sie mehrere Zweige haben, werden diese ebenfalls vorangestellt und durch einen anderen Bindestrich getrennt. Beispiel:
2-butyl-5-methylhexane
Eine letzte Sache: Wenn Sie mehrere Zweige derselben Größe haben, werden diese gruppiert. Ihre Offsets werden durch Komma getrennt und haben denselben Größen-Namen, dem eine zusätzliche Silbe vorangestellt wird, je nachdem, wie viele Zweige gruppiert sind: "di" für 2 Zweige, "tri" für 3, "tetra" für 4 (Sie) brauche nicht mehr für diese Herausforderung). Beispiel:
2-ethyl-2,4,6-trimethyldecane
Zu Ihrer Information, dies könnte ungefähr so aussehen: (Ausgelassene H-Atome)
|
-C-
| |
-C- -C-
| | | | | | | | | |
-C-C-C-C-C-C-C-C-C-C-
| | | | | | | | | |
-C- -C-
| |
Nomenklatur-Spickzettel
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
Die Regeln
Schreiben Sie ein Programm, das einen solchen IUPAC-Namen aus STDIN, Programmargumenten oder Ähnlichem einliest und als ASCII-artige Lewis-Struktur nach STDOUT (oder Ähnlichem) zeichnet.
- Der Einfachheit halber müssen Sie die H-Atome NICHT zeichnen (ansonsten treten Abstandsprobleme auf)
- Es ist NICHT gestattet, leere horizontale Zeilen mit oder ohne Zeilenumbruch zu drucken
- Die Ketten, die Sie analysieren müssen, dürfen nicht länger als 10 sein, und die maximale Anzahl von Zweigen in einer "Gruppe" ist auf 4 begrenzt.
- Der maximale "Versatz" eines Zweigs beträgt 9 (was bedeutet, dass Sie nicht mehr als eine Ziffer analysieren müssen).
- Ihre Filialen müssen nach jeder neuen Filiale abwechselnd auf und ab gehen. Falls dieser Platz bereits von einem anderen Zweig mit demselben Versatz belegt ist, müssen Sie ihn auf der anderen Seite der Wurzel zeichnen. (hoch-> runter, runter-> hoch)
- Bei beschädigten, nicht korrekt formatierten oder anderweitig nicht darstellbaren Eingaben verhält sich Ihr Programm möglicherweise nicht spezifiziert.
Dies ist Code Golf, der kürzeste Code in Bytes gewinnt!
Viel Spaß beim Golfen! :)
3-3-5-7-methyldodecane
weil die längste zusammenhängende Kohlenstoffkette 12 lang ist. Sie sagten auch, dass nicht alle Informationen in der Frage korrekt waren, aber ich denke, es lohnt sich darauf hinzuweisen, dass es sich bei dem zweiten Molekül 2-methylpentane
nicht um ein Molekül handelt , 4-methylpentane
das am Kohlenstoff mit der engsten Verzweigung beginnt.
Your branches have to alternate between going up and down after every new branch.
Ihr Beispiel verstößt gegen diese Regel 2. Welche maximale Kettenlänge müssen wir unterstützen (das Parsen der Präfixe ist Teil der Herausforderung.) Sie sollten eine Nomenklaturliste verknüpfen (oder vorzugsweise kopieren).
4-methylpropane
sagen4-methylpentane
?4-<anything>propane
scheint unwahrscheinlich, es sei denn, ich habe etwas völlig missverstanden.