Ihre Aufgabe besteht darin, eine Zeichenfolge mit einem Isotop eines Elements als Eingabe zu verwenden, die wie im folgenden Beispiel mit der Ordnungszahl gefolgt von einem Leerzeichen und dem chemischen IUPAC-Symbol für das Element codiert ist:
162 Dy
und geben Sie die Anzahl der Neutronen in einem Atom dieses Isotops zurück.
Im obigen Beispiel hat Dysprosium-162 96 Neutronen (162 Gesamtnukleonen, minus 66 Protonen, weil es Dysprosium ist), daher sollte die Ausgabe sein 96
.
Sie können davon ausgehen, dass das angegebene Element eines der 114 Elemente ist, die derzeit von der IUPAC dauerhaft benannt werden (einschließlich Flerovium und Livermorium), und kein generischer Name wie Uus
"Ununseptium". Sie können auch annehmen, dass die Ordnungszahl des Isotops 1000 nicht überschreitet oder kleiner als die Anzahl der Protonen im Element ist.
Sie dürfen keine integrierten Funktionen verwenden, um Daten über die Protonen- oder Neutronenzahl von Elementen abzurufen, oder eine Funktion in Ihrem Code verwenden, die eine Zeichenfolge oder ein Zahlentoken als eigenen Code auswertet.
Das Programm, das die wenigsten Token verwendet, um dies in einer beliebigen Sprache zu tun, gewinnt. Für diese Herausforderung zählt jedoch jedes Zeichen in einer Zeichenfolge oder ein in eine Zeichenfolge konvertierter Variablenname als Token.
Liste der Elemente und ihre Ordnungszahl als Referenz:
65
ein einzelnes Token oder 2 Token?
f[i_] := {n = ElementData[#[[2]], ToString@"StandardName"] <> ToString[#[[1]]], IsotopeData[n, "NeutronNumber"]} &[i]