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