Problem A
Alkohol
Languages
da
de
en
En organisk kemisk forbindelse er et molekyle bestående af atomer, der er parvist forbundet med bindinger. Atomerne er af forskellige typer, såsom ilt, kulstof og brint. En hydroxylgruppe er en binding mellem brint og ilt. En forbindelse kaldes en alkohol, hvis den indeholder en hydroxylgruppe bundet til et kulstofatom, der selv er bundet til tre andre naboer. Et eksempel er metanol:
.
På den anden side er myresyre
ikke en alkohol, idet dens hydroxylgruppe er bundet til et kulstofatom med kun to andre naboer, hvoraf den ene bruger en dobbeltbinding.
Hvis kulstofatomet er bundet til $0$ eller $1$ andre kulstofatomer, kaldes alkoholen primær. For eksempel er metanol en primær alkohol. Hvis kulstofatomet er bundet til $2$ eller $3$ andre kulstofatomer, kaldes alkoholen henholdsvis sekundær eller tertiær. En forbindelse kan have mange hydroxylgrupper og dermed samtidig være en primær, sekundær og tertiær alkohol.
Opgaven består i at klassificere en given organisk kemisk forbindelse som en alkohol.
Input
Input er en enkelt linje bestående af højst $1000$ symboler fra
\[ \verb!()CFNO=12345689! \]der angiver den givne forbindelse i SMILES-formatet, som bruges i kemoinformatik.1 Her er nogle eksempeludtryk og deres tilsvarende forbindelser:
Atomer angives med store bogstaver. Deres valens er det mulige antal bindinger, de kan danne med deres naboatomer, og er angivet i følgende tabel:
Symbol |
C |
N |
O |
F, H |
Valens |
4 |
3 |
2 |
1 |
Atomer, der danner en binding, skrives ved siden af hinanden. For eksempel skrives en enkelt O med to forskellige F-naboer (som danner forbindelsen oxygendifluorid OF$_2$) som FOF i SMILES. Symbolet $\texttt=$ angiver en dobbeltbinding mellem sine tilstødende atomer. For eksempel skrives to dobbeltbundne O-atomer (som danner molekylær ilt O$_2$) som O=O i SMILES. Brintatomer angives ikke og følger af valenserne af de angivne atomer. For eksempel skrives vand H$_2$O blot som O i stedet for HOH. Denne konvention hjælper med at afkorte og linearisere notationen; for eksempel skrives metan CH$_4$ som et enkelt C.
Forekomsten af et par af cifre som $\cdots a6\cdots b6\cdots $ angiver en enkelt binding mellem $a$ og $b$; mere generelt mellem det par af atomer, der står nærmest foran cifrene. For eksempel er C1CCCCC1 cyklohexan. Cifre kan genbruges (så den første forekomst af et tal er parret med den anden, den tredje med den fjerde osv.).
Et atom kan efterfølges af en eller flere udtryk i parentes, som $a\mathtt(S\mathtt) \mathtt(T\mathtt)$. Dette betyder, at forbindelserne beskrevet af $S$ og $T$ er knyttet til atomet beskrevet af $a$. Hvis udtrykket fortsætter med et atom, som $a\mathtt(S\mathtt) \mathtt(T\mathtt)b$, så er også $b$ knyttet til $a$. For eksempel beskriver C(=O)(NF)F, C(F)(=O)NF, og selv det indlejrede udtryk O(=C(NF)F) den samme forbindelse: N-fluorcarbamoylfluorid. Både $S$ og $T$ kan starte med dobbeltbindingssymbolet =, og $a$ kan efterfølges af cifre.
Output
Skriv $0$, hvis forbindelsen ikke er en alkohol. Ellers skriv $i\in \{ 1,2,3\} $, hvis forbindelsen er henholdsvis en primær, sekundær eller tertiær alkohol. Hvis der udskrives mere end et heltal, udskrives de i rækkefølge.
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
- SMILES står for Simplified Molecular-Input Line-Entry System. I denne opgave ignorerer vi mange træk ved SMILES, såsom parentesnotation, mange typer af atomer, flere og højere valenser, ikke-standard isotoper, ladninger, to-cifrede cyklusnumre, aromatiskitet og kiralitet.