La sfida
Scrivi un programma che può scomporre una formula chimica di input (vedi sotto) e produrre i suoi rispettivi atomi nel modulo element: atom-count
.
Ingresso
Input di esempio:
H2O
Il tuo input conterrà sempre almeno un elemento, ma non più di dieci. Il programma dovrebbe accettare input che contengono parentesi, che possono essere nidificate.
Gli elementi nelle stringhe corrisponderanno sempre [A-Z][a-z]*
, il che significa che inizieranno sempre con una lettera maiuscola. I numeri saranno sempre a singola cifra.
Produzione
Esempio di output (per l'ingresso sopra):
H: 2
O: 1
L'output può essere facoltativamente seguito da una nuova riga.
Abbattere le molecole
I numeri a destra di una serie di parentesi sono distribuiti a ciascun elemento all'interno:
Mg(OH)2
Dovrebbe produrre:
Mg: 1
O: 2
H: 2
Lo stesso principio si applica ai singoli atomi:
O2
Dovrebbe produrre:
O: 2
E anche concatenare:
Ba(NO2)2
Dovrebbe produrre:
Ba: 1
N: 2
O: 4
Esempi
> 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
Gli input sono indicati da una freccia (segno maggiore di; >
).
tabellone segnapunti
Affinché il tuo punteggio appaia sul tabellone, dovrebbe essere in questo formato:
# Language, Score
O se hai guadagnato un bonus:
# Language, Score (Bytes - Bonus%)
Modifica: le parentesi quadre non fanno più parte della domanda. Tutte le risposte postate prima delle 3:00 UTC, il 23 settembre, sono sicure e non saranno interessate da questa modifica.
[HCl] = 0.01 mol L^-1
.
>
.