Diese Herausforderung ist inspiriert von diesem Zitat von Oliver Sacks:
„Mit 11 könnte ich sagen, dass ich Natrium bin (Element 11), und jetzt mit 79 bin ich Gold.“ - Oliver Sacks
Ich möchte, dass Sie Zahlen in einer Zeichenfolge finden und durch die Symbole der entsprechenden Elemente ersetzen. (1 ist H, 2 ist He, 3 ist Li usw.) Es gibt einige Regeln, die befolgt werden müssen:
- Einzelne und zweistellige Ziffern werden wie gewohnt durch die entsprechenden Elemente ersetzt. Ignorieren Sie Nullen am Anfang von Zahlen. Wenn eine Zahl nur Nullen enthält, ignorieren Sie sie. ZB
1 01 10 0 00
wirdH H Ne 0 00
- Mehr als 2 Ziffern werden zusammen in 2er-Gruppen aufgeteilt. Bei einer ungeraden Anzahl von Ziffern sollte die zusätzliche einzelne Ziffer am Ende stehen. Zum Beispiel
0153 5301 153
würdeHI IH PLi
Aufgrund dieser Regel werden nur die Elemente 1-99 wissen müssen - Zahlen werden gleich behandelt, unabhängig davon, welche Zeichen sie umgeben, und Kommas und Dezimalstellen sind keine Teile von Zahlen.
P90X 42,800 3.14159
würde werdenPThX Mo,Hg0 Li.SiPF
Beispiel Ein- / Ausgänge (E / A):
I: 32289216
O: GeNiUS
I: J08017 5811
O: JOHN CeNa
I: M18227 0592tt10r
O: MArTiN BUttNer
I: De072816
O: DeNNiS
I: D088r1907085
O: DOOrKNOB
I: 13ex A.
O: Alex A.
Die Eingabe erfolgt im Format, das der Zeichenfolge Ihrer Sprache am nächsten kommt.
Ein Periodensystem als Referenz:
Dies ist Code-Golf , daher wird Ihr Programm in Bytes gewertet.
Antworten:
Mathematica,
969489 BytesMma hat mehrere Datensätze ...
quelle
JavaScript (ES6), 202 Byte
Die ausgelassene Zeichenfolge enthält nicht druckbare Zeichen, daher hier ein (hoffentlich umkehrbarer) Hexdump:
Die Technik hier bestand darin, alle Elementabkürzungen in eine durch nichts getrennte Zeichenfolge zu setzen - das ist, wofür die zweite Regex
/[A-Z][a-z]?/g
ist; Es entspricht jedem Großbuchstaben, optional gefolgt von einem Kleinbuchstaben. Der erste reguläre Ausdruck/\d\d?/g
stimmt mit jedem Satz von 2 (oder 1) Ziffern in der Eingabe überein, sodass jeder Satz von Ziffern N durch das Element am Index N in der dekomprimierten, übereinstimmenden Zeichenfolge ersetzt wird.Hier ist die ursprüngliche Zeichenfolge, falls jemand anderes sie verwenden möchte: (
A
Die Enden sind Füllzeichen.)Fragen und Anregungen willkommen!
quelle
Uus
undUuo
?+y?...:...
da Sie Zifferngruppen ersetzen[y]
anstelle von[+y]
1 Byte speichernPython 3,
278285 BytesTestfälle:
quelle
f('P90X 42,800 3.14159')
gibt 'PThX Mo, Hgs Li.SiPF' anstelle von 'PThX Mo, Hg0 Li.SiPF' zurück undf('1 01 10 0 00')
gibt 'HH Ne s' anstelle von 'HH Ne 0 00' zurück . Übrigens habe ich in meiner Python 2-Lösung gerade Ihren erweiterten Slicing-Ansatz verwendet. Vielen Dank!Python 2,
312304 BytesDiese erstellt eine Funktion f, die eine Folge von Zahlen als Argument verwendet und die entsprechende Folge mit ersetzten Elementsymbolen zurückgibt.
Die Funktion durchläuft Zeichenfolgen mit ein bis zwei Ziffern ( "1" , "01" , "10" , "00", aber nicht "0" ) oder ein Zeichen ( "a" , "0", aber nicht "1" ). Bei Ziffern wird die Zeichenfolge in eine Ganzzahl umgewandelt und in einer verketteten Zeichenfolge von Elementsymbolen nachgeschlagen, wobei jedes Symbol mit zwei Zeichen aufgefüllt wird. Bei Zeichen wird der String einfach ohne Lookup verwendet.
Die Tests für jedes Beispiel in der Frage bestehen alle:
quelle