Zadanie
Napisz program, który przyjmuje związek złożony wyłącznie z pierwiastków o liczbie atomowej mniejszej lub równej 92 (uran) i podaje masę molową związku w grams/mole
.
Zasady i ograniczenia
- Nie możesz używać funkcji, która bezpośrednio oblicza dla ciebie masy molowe.
- Twój program musi być w stanie działać na maszynie offline.
- MOŻESZ użyć osobnego pliku danych. Należy podać zawartość tego pliku.
- Twój wynik to długość programu w bajtach plus długość pliku danych w bajtach, jeśli zdecydujesz się go użyć.
- Jest to kod-golf , dlatego wygrywa najniższy wynik.
Wejście
Ciąg zawierający związek. Ten ciąg może zostać odczytany STDIN
, przekazany jako argument lub ustawiony na zmienną (proszę określić, która). Wszystkie prawidłowe dane wejściowe:
CH2
(jeden węgiel, dwa atomy wodoru)(CH2)8
(8 węgli, 16 atomów wodoru)U
(1 uran)
Twój program nie musi działać dla osadzonych nawiasów (tj. ((CH3)2N4)4
), Ani dla żadnego związku zawierającego element o liczbie atomowej większej niż 92. Jeśli twój program nie działa w żadnym z powyższych dwóch przypadków, musi wygenerowaćInvalid formula
w takich przypadkach - brak niezdefiniowanego zachowania.
Wynik
Powinieneś wyprowadzić, do STDOUT
lub do zmiennej, masę molową związku w grams/mole
. Lista mas atomowych pierwiastków jest dostępna tutaj (Wikipedia) . Twoja odpowiedź powinna być dokładna do miejsca po przecinku dla związków zawierających mniej niż 100 atomów (w zaokrągleniu).
Jeśli dane wejściowe są nieprawidłowe, Invalid formula
należy je wyprowadzić.
Informacje na temat obliczania masy molowej związku w grams/mole
(Wikipedia).
Przykłady
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
jeśli masa atomowa wynosi 12.999
?
U1000000
jest trudniejsza do określenia do miejsca dziesiętnego niż masaU2