Ваша задача - взять строку, содержащую изотоп элемента в качестве входных данных, закодированный, как показано в следующем примере, с атомным номером, за которым следует пробел и химический символ IUPAC для элемента:
162 Dy
и вернуть количество нейтронов в атоме этого изотопа.
В приведенном выше примере диспрозий-162 имеет 96 нейтронов (всего 162 нуклона, минус 66 протонов, потому что это диспрозий), поэтому выход должен быть 96
.
Вы можете предположить, что данный элемент будет одним из 114 элементов, которым IUPAC в настоящее время присвоены постоянные имена (включая флеровий и ливерморорий), а не общее название, например Uus
«ununseptium». Вы также можете предположить, что атомный номер изотопа не будет превышать 1000, или будет меньше, чем число протонов в элементе.
Вы не можете использовать встроенные модули для извлечения данных о протонном или нейтронном числе элементов или использовать какую-либо функцию в вашем коде, которая самостоятельно оценивает строку или числовой токен как код.
Победит программа, использующая наименьшее количество токенов для этого на любом языке. Однако для этой задачи каждый символ в строке или имя переменной, преобразованной в строку, считается токеном.
Список элементов и их атомный номер для справки:
65
это один токен или 2 токена?
f[i_] := {n = ElementData[#[[2]], ToString@"StandardName"] <> ToString[#[[1]]], IsotopeData[n, "NeutronNumber"]} &[i]