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