Le défi
Ecrivez un programme capable de décomposer une formule chimique d'entrée (voir ci-dessous) et de générer ses atomes respectifs sous la forme element: atom-count
.
Contribution
Exemple de saisie:
H2O
Votre entrée contiendra toujours au moins un élément, mais pas plus de dix. Votre programme doit accepter les entrées contenant des parenthèses, qui peuvent être imbriquées.
Les éléments dans les chaînes seront toujours identiques [A-Z][a-z]*
, ce qui signifie qu'ils commenceront toujours par une lettre majuscule. Les numéros seront toujours des chiffres simples.
Sortie
Exemple de sortie (pour l'entrée ci-dessus):
H: 2
O: 1
Votre sortie peut éventuellement être suivie d'une nouvelle ligne.
Briser des molécules
Les nombres à droite d'un ensemble de parenthèses sont distribués à chaque élément à l'intérieur:
Mg(OH)2
Devrait-il produire:
Mg: 1
O: 2
H: 2
Le même principe s'applique aux atomes individuels:
O2
Devrait-il produire:
O: 2
Et aussi enchaîner:
Ba(NO2)2
Devrait-il produire:
Ba: 1
N: 2
O: 4
Exemples
> 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
Les entrées sont indiquées par une flèche (signe plus grand que; >
).
Tableau de bord
Pour que votre score apparaisse au tableau, il devrait être dans ce format:
# Language, Score
Ou si vous avez gagné un bonus:
# Language, Score (Bytes - Bonus%)
Edit: Les crochets ne font plus partie de la question. Toutes les réponses postées avant le 23 septembre, heure de 03h00 (UTC), ne seront pas affectées par ce changement.
[HCl] = 0.01 mol L^-1
.
>
.