Su tarea es tomar una cadena que contenga un isótopo de un elemento como entrada, codificada como el siguiente ejemplo con el número atómico seguido de un espacio y el símbolo químico IUPAC para el elemento:
162 Dy
y devuelve el número de neutrones en un átomo de ese isótopo.
En el ejemplo anterior, el disprosio-162 tiene 96 neutrones (162 nucleones totales, menos 66 protones porque es disprosio), por lo que la salida debería ser 96
.
Puede suponer que el elemento dado será uno de los 114 elementos que la IUPAC le da actualmente nombres permanentes (incluidos flerovium y livermorium) y no un nombre genérico como Uus
"ununseptium". También puede suponer que el número atómico del isótopo no excederá 1000, o será menor que el número de protones en el elemento.
No puede usar elementos integrados para recuperar datos sobre el número de elementos de protones o neutrones, ni usar ninguna función dentro de su código que evalúe una cadena o token de número como código por sí solo.
El programa para usar la menor cantidad de tokens para hacer esto en cualquier idioma gana. Sin embargo, para el propósito de este desafío, cada carácter en una cadena, o un nombre de variable convertido en una cadena, cuenta como un token.
Lista de elementos y su número atómico para referencia:
65
un solo token o 2 tokens?
f[i_] := {n = ElementData[#[[2]], ToString@"StandardName"] <> ToString[#[[1]]], IsotopeData[n, "NeutronNumber"]} &[i]