задача
Напишите программу, которая принимает соединение, состоящее исключительно из элементов с атомным номером, меньшим или равным 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