Compito
Scrivi un programma che comprende un composto composto esclusivamente da elementi con un numero atomico inferiore o uguale a 92 (Uranio) e genera la massa molare del composto grams/mole
.
Regole e restrizioni
- Non puoi usare una funzione che calcola direttamente le masse molari per te.
- Il tuo programma deve essere in grado di funzionare su un computer offline.
- È possibile utilizzare un file di dati separato. Il contenuto di questo file deve essere fornito.
- Il punteggio è la lunghezza del programma in byte, più la lunghezza del file di dati in byte, se si sceglie di utilizzarne uno.
- Questo è code-golf , quindi vince il punteggio più basso.
Ingresso
Una stringa contenente il composto. Questa stringa può essere letta STDIN
, passata come argomento o impostata su una variabile (specificare quale). Di seguito sono riportati tutti gli input validi:
CH2
(un carbonio, due idrogeni)(CH2)8
(8 carboni, 16 idrogeni)U
(1 uranio)
Non è necessario che il programma funzioni per parentesi incorporate (ovvero ((CH3)2N4)4
), né per qualsiasi composto che contenga un elemento con numero atomico maggiore di 92. Se il programma non funziona per nessuno dei due casi precedenti, deve generare Invalid formula
in questi casi - nessun comportamento indefinito.
Produzione
Dovresti produrre, verso STDOUT
o su una variabile, la massa molare del composto in grams/mole
. Un elenco di masse atomiche di elementi è disponibile qui (Wikipedia) . La tua risposta dovrebbe essere precisa al decimale per i composti contenenti meno di 100 atomi (arrotondati).
Se l'input non è valido, Invalid formula
deve essere emesso.
Informazioni sul calcolo della massa molare di un composto in grams/mole
(Wikipedia).
Esempi
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
se la massa atomica è 12.999
?
U1000000
è più difficile da determinare al punto decimale rispetto alla massa diU2