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:
quelle
65
ein einzelnes Token oder 2 Token?f[i_] := {n = ElementData[#[[2]], ToString@"StandardName"] <> ToString[#[[1]]], IsotopeData[n, "NeutronNumber"]} &[i]
Antworten:
CJam,
1206 oder 116 TokenWenn Zahlen einzelne Token sind, haben wir den gesamten Code als 6 Token:
wo die Token sind
Dieser Code entspricht dem folgenden Code, der die Zeichenfolgenversion der großen Zahl im obigen Code enthält. Aufgrund einer Zeichenfolge enthält der folgende Code jedoch 116 Token:
Token (mit Erklärung) sind
Um die obige Zeichenfolge auszuführen, kopieren Sie den Code von diesem Link, da SE beim Hochladen der Antwort einige Zeichen entfernt.
Dies kann auch auf 109 Token reduziert werden, aber dann lässt SE mich meine Antwort nicht hochladen und löst eine fehlerhafte URI-Ausnahme aus.
Eingabe geht wie
Ausgabe ist wie
Die seltsame Zeichenfolge ist nur eine basenkodierte Zeichenfolge, die alle IUPAC-Namen in ihrem
Atomic number * 2 - 1
Index enthält.Probieren Sie es hier online aus
quelle
B
undI
vor ihnen erscheinen.In
.Python 3 mit exec, 17 Token
Python 3 ohne Exec, 35 Token
Rubin mit Auswertung, 17 Token
Javascript, 49 Token
Nur um zu veranschaulichen, zählen Sie Big-Ints / Symbole / Variablen als N Token im Atomic-Code-Golf :)
quelle
eval
und dagegen zuexec
arbeiten?Javascript, 42 Token (?)
PS: Wo finde ich ein Skript zum Zählen von Token?
quelle