Sua tarefa é pegar uma sequência que contenha um isótopo de um elemento como entrada, codificada como o exemplo a seguir com o número atômico seguido por um espaço e o símbolo químico IUPAC para o elemento:
162 Dy
e retorne o número de nêutrons em um átomo desse isótopo.
No exemplo acima, o disprósio-162 possui 96 nêutrons (162 nucleons totais, menos 66 prótons porque é disprósio), portanto a saída deve ser 96
.
Você pode supor que o elemento fornecido será um dos 114 elementos atualmente nomeados permanentemente pelo IUPAC (incluindo flerovium e livermorium) e não um nome genérico como Uus
"ununseptium". Você também pode supor que o número atômico do isótopo não exceda 1000 ou seja menor que o número de prótons no elemento.
Você não pode usar built-ins para recuperar dados sobre o número de elementos de prótons ou nêutrons, ou usar qualquer função em seu código que avalie uma string ou um token de número como código por si só.
O programa para usar o menor número de tokens para fazer isso em qualquer idioma vence. No entanto, para o objetivo deste desafio, todo caractere em uma string ou um nome de variável convertido em uma string conta como um token.
Lista de elementos e seu número atômico para referência:
65
um único token ou 2 tokens?
f[i_] := {n = ElementData[#[[2]], ToString@"StandardName"] <> ToString[#[[1]]], IsotopeData[n, "NeutronNumber"]} &[i]