Problem A
Alkohol
Languages
da
de
en
Eine chemische Verbindung in der organischen Chemie ist ein Molekül, das aus Atomen besteht, die paarweise durch Bindungen verbunden sind. Es gibt verschiedene Arten von Atomen, z.B. Sauerstoff, Kohlenstoff und Wasserstoff. Eine Hydroxygruppe ist eine Bindung zwischen Wasserstoff und Sauerstoff. Eine Verbindung ist ein Alkohol, wenn sie eine Hydroxygruppe enthält, die an ein Kohlenstoffatom gebunden ist, das wiederum an drei andere Nachbarn gebunden ist.
Ein Beispiel ist Methanol
.
Andererseits ist Ameisensäure (Methansäure)
kein Alkohol, weil die Hydroxygruppe an ein Kohlenstoffatom mit nur zwei Nachbarn gebunden ist, wobei einer davon mit einer Doppelbindung verbunden ist.
Falls das Kohlenstoffatom an kein oder ein anderes Kohlenstoffatom gebunden ist, dann ist es ein primärer Alkohol. Methanol ist ein Beispiel für einen primären Alkohol. Falls das Kohlenstoffatom an zwei oder drei andere Kohlenstoffatome gebunden ist, dann ist es ein sekundärer oder tertiärer Alkohol. Eine Verbindung kann mehrere Hydroxygruppen enthalten und somit gleichzweitig ein primärer, sekundärer und tertiärer Alkohol sein.
Die Aufgabe ist es, eine gegebene Verbindung als Alkohol zu klassifizieren.
Input
Die Eingabe beinhaltet eine einzige Zeile bestehend aus höchstens $1000$ Zeichen aus
\[ \verb!()CFNO=12345689! \]welches eine Verbindung in Form des chemischen Strukturcodes Simplified Molecular Input Line Entry Specification (SMILES) darstellt. 1 Hier sind ein paar Beispiele für SMILES mit ihren entsprechenden Verbindungen.
Atome werden als einzelne Buchstaben repräsentiert. Ihre Wertigkeit repräsentiert die mögliche Anzahl an Bindungen, die es eingehen kann, wie gegeben in der folgenden Tabelle:
Symbol |
C |
N |
O |
F, H |
Wertigkeit |
4 |
3 |
2 |
1 |
Atome, die eine Bindung eingehen, werden nebeneinander geschrieben. So wird beispielsweise ein einzelnes O mit zwei verschiedenen F-Nachbarn (das die Verbindung Sauerstoffdiflorid OF$_2$ bildet) in SMILES als FOF geschrieben. Das Symbol $\texttt=$ gibt eine Doppelbindung zwischen seinen benachbarten Atomen an. Zum Beispiel werden zwei doppelt gebundene O-Atome (die den molekularen Sauerstoff O$_2$ bilden) in SMILES als O=O geschrieben. Wasserstoffatome werden nicht angegeben und ergeben sich aus den Wertigkeiten der angegebenen Atome. Zum Beispiel wird Wasser H$_2$O einfach als O statt als HOH geschrieben. Diese Konvention hilft, die Notation zu entrümpeln und zu linearisieren; Methan CH$_4$ wird zum Beispiel als einzelnes C geschrieben.
Das Auftreten eines Ziffernpaares wie $\cdots a6\cdots b6\cdots $ bezeichnet eine Einfachbindung zwischen $a$ und $b$; allgemeiner zwischen dem Atompaar vor den Ziffern. Zum Beispiel ist C1CCCCC1 Cyclohexan. Ziffern können wiederverwendet werden (so wird das erste Vorkommen einer Ziffer mit der Zweiten gepaart; das Dritte mit dem Vierten, usw.).
Einem Atom können ein oder mehrere Ausdrücke in Klammern folgen, wie $a\mathtt(S\mathtt) \mathtt(T\mathtt)$. Dies bedeutet, dass die durch $S$ und $T$ beschriebenen Verbindungen an das durch $a$ beschriebene Atom gebunden sind. Wird der Ausdruck mit einem Atom fortgesetzt, z.B. $a\mathtt(S\mathtt) \mathtt(T\mathtt)b$, dann ist auch $b$ an $a$ gebunden.
Zum Beispiel beschreiben C(=O)(NF)F, C(F)(=O)NF und sogar das mehrfach verschränkte O(=C(NF)F) den gleichen Stoff: N-Fluorocarbamoylfluoride.
Sowohl $S$ als auch $T$ können mit dem Doppelbindungsindikator = beginnen, und $a$ kann von Ziffern gefolgt werden.
Output
Wenn die Verbindung kein Alkohol ist, wird $0$ gedruckt. Andernfalls drucken Sie $i\in \{ 1,2,3\} $, wenn die Verbindung ein primärer, sekundärer bzw. tertiärer Alkohol ist. Wenn Sie mehr als eine ganze Zahl ausgeben, geben Sie diese in der Reihenfolge und durch Leerzeichen getrennt aus.
Sample Input 1 | Sample Output 1 |
---|---|
O |
0 |
Sample Input 2 | Sample Output 2 |
---|---|
CCCO |
1 |
Sample Input 3 | Sample Output 3 |
---|---|
OCC(O)CO |
1 2 |
Sample Input 4 | Sample Output 4 |
---|---|
C(=O)O |
0 |
Sample Input 5 | Sample Output 5 |
---|---|
C12=CC=CC=C1N=C3C(=C2)CN4C(C5=C(C=C34)C(CC(OC5)=O)(CC)O)=O |
3 |
Footnotes
- Bei dieser Aufgabe ignorieren wir viele Merkmale von SMILES, wie z.B. die Klammerschreibweise, viele Arten von Atomen, mehrfache und höhere Valenzen, nicht standardisierte Isotope, Ladungen, zweistellige Zykluszahlen, Aromatizität und Chiralität.