Завдання
Напишіть програму, яка містить сполуку, виготовлену виключно з елементів, атомне число яких менше або дорівнює 92 (Уран), і виводить молярну масу сполуки в grams/mole
.
Правила та обмеження
- Ви не можете використовувати функцію, яка безпосередньо обчислює молярні маси для вас.
- Ваша програма повинна мати можливість працювати на автономному пристрої.
- Ви МОЖЕТЕ використовувати окремий файл даних. Вміст цього файлу повинен бути наданий.
- Ваш бал - це довжина вашої програми в байтах, а також довжина вашого файлу даних у байтах, якщо ви вирішите використовувати її.
- Це код-гольф , тому виграє найнижчий бал.
Вхідні дані
Рядок, що містить сполуку. Цей рядок може бути прочитаний STDIN
, переданий як аргумент або встановлений у змінну (вкажіть, будь ласка). Нижче наведено всі дійсні входи:
CH2
(один вуглець, два водень)(CH2)8
(8 вуглець, 16 водню)U
(1 Уран)
Вашій програмі не потрібно функціонувати для вбудованих дужок (тобто ((CH3)2N4)4
), а також для будь-якого з'єднання, що містить елемент з атомним числом більше 92. Якщо ваша програма не функціонує ні в одному з перерахованих вище випадків, вона повинна виводити Invalid formula
для таких випадків - немає невизначеної поведінки.
Вихідні дані
Вам слід вивести STDOUT
молярну масу сполуки на змінну або до її змінної grams/mole
. Перелік атомних мас елементів доступний тут (Вікіпедія) . Ваша відповідь повинна бути точною до десяткового знаку для сполук, що містять менше 100 атомів (округлих).
Якщо вхід недійсний, Invalid formula
необхідно вивести його.
Інформація про обчислення молярної маси сполуки в grams/mole
(Вікіпедія).
Приклади
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
якщо атомна маса 12.999
?
U1000000
важче визначити до десяткової крапки, ніж масуU2