Votre tâche consiste à prendre une chaîne contenant un isotope d'un élément en entrée, codée comme l'exemple suivant avec le numéro atomique suivi d'un espace et du symbole chimique IUPAC de l'élément:
162 Dy
et retourner le nombre de neutrons dans un atome de cet isotope.
Dans l'exemple ci-dessus, le dysprosium-162 a 96 neutrons (162 nucléons au total, moins 66 protons parce que c'est du dysprosium), donc la sortie devrait être 96
.
Vous pouvez supposer que l'élément donné sera l'un des 114 éléments actuellement nommés de façon permanente par l'UICPA (y compris le flerovium et le livermorium) et non un nom générique comme Uus
pour "ununseptium". Vous pouvez également supposer que le numéro atomique de l'isotope ne dépassera pas 1000, ou sera inférieur au nombre de protons dans l'élément.
Vous ne pouvez pas utiliser les fonctions intégrées pour récupérer des données sur le nombre d'éléments protons ou neutrons, ou utiliser une fonction dans votre code qui évalue une chaîne ou un jeton numérique comme code à part entière.
Le programme qui utilise le moins de jetons pour le faire dans n'importe quelle langue gagne. Cependant, aux fins de ce défi, chaque caractère d'une chaîne ou un nom de variable converti en chaîne compte comme un jeton.
Liste des éléments et leur numéro atomique pour référence:
65
qu'un seul jeton ou 2 jetons?
f[i_] := {n = ElementData[#[[2]], ToString@"StandardName"] <> ToString[#[[1]]], IsotopeData[n, "NeutronNumber"]} &[i]