Ungesättigtheitsgrad
Dies ist kein besonders schwieriges Code-Puzzle - aber ich bin gespannt auf Ihre vielfältigen Lösungsmöglichkeiten.
Der Grad der Ungesättigtheit ist die Anzahl der chemischen Doppelbindungen zwischen Atomen und / oder die Anzahl der Ringe in einer chemischen Verbindung.
Sie erhalten die Summenformel einer chemischen Verbindung in der Form XaYbZc (wobei a, b und c die Anzahl der Atome von X, Y oder Z in der Verbindung sind) - die Formel kann beliebig lang sein und ein beliebiges chemisches Element enthalten im Periodensystem (obwohl andere Elemente als C, H, N, F, Cl, Br, I möglicherweise ignoriert werden, da sie nicht in der Formel enthalten sind). Die Verbindung enthält mindestens ein Atom Kohlenstoff. Sie müssen den Grad der Ungesättigtheit berechnen und anzeigen.
Zum Beispiel hat die Verbindung Benzol (siehe Abbildung unten) eine DoU von 4, da sie drei Doppelbindungen (dargestellt durch eine Doppellinie zwischen Atomen) und einen einzelnen Ring (eine Anzahl von Atomen, die in einer Schleife verbunden sind) aufweist:
Wie von LibreTexts definiert :
DoU = (2C + 2 + N - X - H) / 2
Wo:
C
ist die Anzahl der KohlenstoffatomeN
ist die Anzahl der StickstoffatomeX
die Zahl der Halogenatome ist (F
,Cl
,Br
,I
)H
ist die Anzahl der Wasserstoffatome
Testfälle:
C6H6 --> 4
C9H2O1 --> 0
C9H9N1O4 --> 6
U1Pt1 --> Not a valid input, no carbon
Na2O1 --> Not a valid input, no carbon
C1H1 --> 1.5, although in practice this would be one, but is a part of a compound rather than a compound in entirety.
N1H3 would return 0 - though in practice it isn't an organic compound (in other words it contains no carbon) so the formula wouldn't apply and it isn't a valid input
Eine Erklärung zu CH finden Sie hier
Im Wesentlichen müssen Sie feststellen, ob die Verbindung eines der oben genannten Elemente (C, H, N, F, Cl, Br, I) enthält, und wenn ja, wie viele. Berechnen Sie dann den Grad der Ungesättigtheit mit der obigen Formel.
Nur C, H, N, F, Cl, Br und I sind gültige Eingaben für die DoU-Formel. Für die Zwecke dieses Puzzles können alle anderen Elemente vollständig ignoriert werden (z. B. wenn die Verbindung C6H6Mn wäre, wäre das Ergebnis immer noch 4). Wenn es keine der obigen Verbindungen gibt, wäre die Antwort Null.
Sie können davon ausgehen, dass alle eingegebenen Verbindungen chemisch möglich sind, mindestens ein Atom Kohlenstoff enthalten und bekanntermaßen existieren. Wenn die Eingabe ungültig ist, gibt das Programm möglicherweise entweder 0 oder -1 aus oder erzeugt kein Ergebnis.
Regeln
Es gelten Standard-E / A-Regeln und Lücken . Die Eingabe muss eine Standardzeichenfolge sein, und Sie können davon ausgehen, dass die Eingabe nicht leer ist. Dies ist Codegolf - also gewinnt der kürzeste Code in Bytes.
C9H2O1 --> 0
. Sollte es nicht 9 sein? (2*9+2+0-0-2)/2
Na2O
und Methylidin:CH
undCCl4He
. Dies sind einige Eckfälle, die einige Lösungen beschädigen können. Übrigens nicht, dass es für andere als Mathematica (wahrscheinlich) von Bedeutung ist, aber können wir annehmen, dass die Verbindungen (können) existieren?