Tâche
Écrivez un programme qui absorbe un composé composé uniquement d'éléments dont le numéro atomique est inférieur ou égal à 92 (Uranium) et produit la masse molaire du composé grams/mole
.
Règles et restrictions
- Vous ne pouvez pas utiliser une fonction qui calcule directement les masses molaires pour vous.
- Votre programme doit pouvoir s'exécuter sur une machine hors ligne.
- Vous POUVEZ utiliser un fichier de données distinct. Le contenu de ce dossier doit être fourni.
- Votre score est la longueur de votre programme en octets, plus la longueur de votre fichier de données en octets, si vous choisissez d'en utiliser un.
- C'est le code-golf , donc le score le plus bas l'emporte.
Contribution
Une chaîne contenant le composé. Cette chaîne peut être lue STDIN
, passée en argument ou définie sur une variable (veuillez préciser laquelle). Les éléments suivants sont tous des entrées valides:
CH2
(un carbone, deux hydrogènes)(CH2)8
(8 carbones, 16 hydrogènes)U
(1 Uranium)
Votre programme n'est pas tenu de fonctionner pour les parenthèses imbriquées (c.-à-d. ((CH3)2N4)4
), Ni pour tout composé contenant un élément dont le numéro atomique est supérieur à 92. Si votre programme ne fonctionne pour aucun des deux cas ci-dessus, il doit produireInvalid formula
pour ces cas - aucun comportement indéfini.
Production
Vous devez sortir, vers STDOUT
ou vers une variable, la masse molaire du composé grams/mole
. Une liste des masses atomiques d'éléments est disponible ici (Wikipedia) . Votre réponse doit être précise à la décimale pour les composés contenant moins de 100 atomes (arrondis).
Si l'entrée n'est pas valide, Invalid formula
doit être sortie.
Informations sur le calcul de la masse molaire d'un composé dans grams/mole
(Wikipedia).
Exemples
Input Output
H2O 18.015
O 15.999 (16 acceptable)
C6H2(NO2)3CH3 227.132
FOOF 69.995
C6H12Op3 Invalid formula
Np 237 (or Invalid formula)
((C)3)4 144.132 (or Invalid formula)
CodeGolf Invalid formula
13
si la masse atomique est 12.999
?
U1000000
est plus difficile à déterminer à la décimale que la masse deU2