Die Herausforderung
Schreiben Sie ein Programm, das eine eingegebene chemische Formel aufschlüsselt (siehe unten) und die entsprechenden Atome in der Form ausgibt element: atom-count
.
Eingang
Beispieleingabe:
H2O
Ihre Eingabe enthält immer mindestens ein Element, jedoch nicht mehr als zehn. Ihr Programm sollte Eingaben akzeptieren, die geschachtelte Klammern enthalten.
Elemente in den Zeichenfolgen stimmen immer überein [A-Z][a-z]*
, dh sie beginnen immer mit einem Großbuchstaben. Zahlen sind immer einstellige Zahlen.
Ausgabe
Beispielausgabe (für die obige Eingabe):
H: 2
O: 1
Ihrer Ausgabe kann optional eine neue Zeile folgen.
Moleküle abbauen
Die Zahlen rechts von einer Reihe von Klammern werden auf jedes Element innerhalb von verteilt:
Mg(OH)2
Sollte ausgeben:
Mg: 1
O: 2
H: 2
Das gleiche Prinzip gilt für einzelne Atome:
O2
Sollte ausgeben:
O: 2
Und auch Verketten:
Ba(NO2)2
Sollte ausgeben:
Ba: 1
N: 2
O: 4
Beispiele
> Ba(PO3)2
Ba: 1
P: 2
O: 6
> C13H18O2
C: 13
H: 18
O: 2
> K4(ON(SO3)2)2
K: 4
O: 14
N: 2
S: 4
> (CH3)3COOC(CH3)3
C: 8
H: 18
O: 2
> (C2H5)2NH
C: 4
H: 11
N: 1
> Co3(Fe(CN)6)2
Co: 3
Fe: 2
C: 12
N: 12
Eingaben werden durch einen Pfeil (Vorzeichen; >
) gekennzeichnet.
Anzeigetafel
Damit Ihre Partitur auf der Tafel erscheint, sollte sie in folgendem Format vorliegen:
# Language, Score
Oder wenn Sie einen Bonus verdient haben:
# Language, Score (Bytes - Bonus%)
Bearbeiten: Eckige Klammern sind nicht mehr Teil der Frage. Alle Antworten, die vor dem 23. September, 3:00 Uhr UTC, eingehen, sind sicher und werden von dieser Änderung nicht betroffen.
[HCl] = 0.01 mol L^-1
.
>
.