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 formulain questi casi - nessun comportamento indefinito.
Produzione
Dovresti produrre, verso STDOUTo 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 formuladeve 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
13se la massa atomica è 12.999?
U1000000è più difficile da determinare al punto decimale rispetto alla massa diU2