Wyzwanie
Napisz program, który może rozbić wprowadzony wzór chemiczny (patrz poniżej) i wyprowadzić odpowiednie atomy w postaci element: atom-count
.
Wejście
Przykładowe dane wejściowe:
H2O
Twój wkład zawsze będzie zawierał co najmniej jeden element, ale nie więcej niż dziesięć. Twój program powinien akceptować dane wejściowe zawierające nawiasy, które mogą być zagnieżdżone.
Elementy w ciągach zawsze będą pasować [A-Z][a-z]*
, co oznacza, że zawsze będą zaczynać się od dużej litery. Liczby zawsze będą jednocyfrowe.
Wynik
Przykładowe dane wyjściowe (dla powyższego wejścia):
H: 2
O: 1
Twój wynik może opcjonalnie poprzedzić nowy wiersz.
Rozkład cząsteczek
Liczby po prawej stronie zestawu nawiasów są rozdzielane na każdy element wewnątrz:
Mg(OH)2
Powinien generować:
Mg: 1
O: 2
H: 2
Ta sama zasada dotyczy pojedynczych atomów:
O2
Powinien generować:
O: 2
A także łączenie:
Ba(NO2)2
Powinien generować:
Ba: 1
N: 2
O: 4
Przykłady
> 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
Wejścia są oznaczone strzałką (znak większy niż; >
).
Tablica wyników
Twój wynik powinien pojawić się na tablicy, powinien mieć następujący format:
# Language, Score
Lub jeśli zarobiłeś bonus:
# Language, Score (Bytes - Bonus%)
Edycja: nawiasy kwadratowe nie są już częścią pytania. Wszelkie odpowiedzi wysłane przed godziną 3:00 czasu UTC, 23 września, są bezpieczne i nie będą miały wpływu na tę zmianę.
[HCl] = 0.01 mol L^-1
. :
>
.