O desafio
Escreva um programa que possa quebrar uma fórmula química de entrada (veja abaixo) e produza seus respectivos átomos no formulário element: atom-count
.
Entrada
Entrada de amostra:
H2O
Sua entrada sempre conterá pelo menos um elemento, mas não mais que dez. Seu programa deve aceitar entradas que contenham parênteses, que podem estar aninhados.
Os elementos nas seqüências sempre corresponderão [A-Z][a-z]*
, o que significa que sempre começarão com uma letra maiúscula. Os números sempre terão um dígito.
Resultado
Saída de amostra (para a entrada acima):
H: 2
O: 1
Sua saída pode ser opcionalmente seguida por uma nova linha.
Quebrando Moléculas
Os números à direita de um conjunto de parênteses são distribuídos para cada elemento dentro:
Mg(OH)2
Saída deve:
Mg: 1
O: 2
H: 2
O mesmo princípio se aplica aos átomos individuais:
O2
Saída deve:
O: 2
E também encadeamento:
Ba(NO2)2
Saída deve:
Ba: 1
N: 2
O: 4
Exemplos
> 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
As entradas são indicadas por uma seta (sinal maior que; >
).
Placar
Para que sua pontuação apareça no quadro, ela deve estar neste formato:
# Language, Score
Ou se você ganhou um bônus:
# Language, Score (Bytes - Bonus%)
Editar: colchetes não fazem mais parte da pergunta. Todas as respostas postadas antes das 3:00 UTC, 23 de setembro, são seguras e não serão afetadas por esta alteração.
[HCl] = 0.01 mol L^-1
.
>
.