l
Suchen Sie bei gegebener Zeichenfolge alle palindromischen Teilzeichenfolgen p
von l
(einschließlich Duplikaten und Einzelzeichenfolgen). Ordnen Sie anschließend alle Unterzeichenfolgen p
in einem gültigen Palindrom neu an (möglicherweise gibt es mehrere richtige Antworten). Wenn es nicht möglich ist, p
in ein einzelnes Palindrom umzuordnen, weist Ihr Programm möglicherweise ein undefiniertes Verhalten auf (Fehler, Stapelüberlauf, Beenden, Hängen / vorzeitiger Mord an John Dvorak usw.).
Beispiele
Gültige Testfälle
l = anaa
p = ['a', 'n', 'a', 'a', 'aa', 'ana']
result = anaaaaana or aanaaanaa or aaananaaa
l = 1213235
p = ['1', '2', '1', '3', '2', '3', '5', '121', '323']
result = 1213235323121
l = racecar
p = ['r', 'a', 'c', 'e', 'c', 'a', 'r', 'cec', 'aceca', 'racecar']
result = racecarcecaacecracecar (there are others)
l = 11233
p = ['1', '11', '1', '2', '3', '33', '3']
result = 113323311 or 331121133
l = abbccdd
p = ['a', 'b', 'bb', 'b', 'c', 'cc', 'c', 'd', 'dd', 'd']
result = bbccddaddccbb or ccbbddaddbbcc or (etc...)
l = a
p = ['a']
result = a
Ungültige Testfälle (nicht möglich)
l = 123456789
p = ['1', '2', '3', '4', '5', '6', '7', '8', '9']
result = <not possible, behavior undefined>
l = hjjkl
p = ['h', 'j', 'jj', 'j', 'k', 'l']
result = <not possible, behavior undefined>
l = xjmjj
p = ['x', 'j', 'jmj', 'm', 'j', 'jj', 'j']
result = <not possible, behavior undefined>
Regeln
- Wenn das Eingabewort selbst ein Palindrom ist, ist es immer als Eingabe gültig.
- Es sollte nur ein Teilstring zurückgegeben werden, der beliebig ist, solange er gültig ist.
- Wenn die Eingabe keine brauchbare Ausgabe enthält, weist Ihr Code möglicherweise ein undefiniertes Verhalten auf.
- Eingaben enthalten nur ASCII-druckbare Zeichen zwischen
0x20-0x7E
. - Das ist Code-Golf , die niedrigste Byteanzahl ist der Gewinner.
code-golf
array-manipulation
permutations
palindrome
Magische Kraken-Urne
quelle
quelle
"abbccdd"
ist falsch: Die letzten beiden Buchstaben sollten"bb"
nicht sein"dd"
.Antworten:
Brachylog , 10 Bytes
Probieren Sie es online!
Schlägt fehl (dh druckt
false.
), wenn nicht möglich.Erläuterung
quelle
Kokosnuss , 140 Bytes
Probieren Sie es online!
quelle
JavaScript (ES6), 193 Byte
"Schau Ma, keine Permutation eingebaut!" (Also ja ... es ist lang ...)
Gibt ein leeres Array zurück, wenn es keine Lösung gibt.
Demo
Code-Snippet anzeigen
Wie?
Teilen wir den Code in kleinere Teile auf.
Wir definieren P () , eine Funktion, die s zurückgibt, wenn s ein Palindrom ist, oder andernfalls false .
Wir berechnen alle Teilzeichenfolgen der Eingabezeichenfolge s . Mit P () isolieren wir die nicht leeren Palindrome und speichern sie im Array a .
Die rekursive Hauptfunktion f () nimmt a als Eingabe und berechnet alle ihre Permutationen. Es aktualisiert S, wenn die Permutation selbst ein Palindrom ist (einmal verbunden) und gibt schließlich den Endwert von S zurück .
quelle
Gelee , 13 Bytes
Probieren Sie es online!
Druckt
0
im ungültigen Fall.quelle
05AB1E ,
1312 BytesProbieren Sie es online!
-1 Byte dank Magic Octopus Urn und Enigma.
quelle
J
faktorisiert automatisch, so dass Sie nicht€J
nur brauchenJ
; Außerdem solltest du eines der Palindrome zurückgeben, nicht alle. Probieren Sie es online! gilt für die gleiche Anzahl von Bytes.Ùć
könnte sein¤
(oder eine Reihe von anderen Optionen)Ù
wurde nicht benötigt.Stax , 13 Bytes
Testfälle ausführen (Auf meinem aktuellen Computer dauert es ungefähr 10 Sekunden.)
Dies ist die entsprechende ASCII-Darstellung desselben Programms.
Es ist nicht ganz reine Brute-Force, aber es ist genauso klein wie die Brute-Force-Implementierung, die ich geschrieben habe. Dieser stürzte meinen Browser nach ca. 10 Minuten ab. Wie auch immer, hier ist, wie es funktioniert.
quelle
Rubin ,
131123120 BytesProbieren Sie es online!
Ein Lambda, das eine Zeichenfolge akzeptiert und eine Zeichenfolge zurückgibt. Gibt zurück,
nil
wenn keine Lösung vorhanden ist.-5 Bytes: Ersetzen
select{|t|l[t]}
durchselect(&l)
-3 Bytes: Ersetzen
map{..}.flatten
durchflat_map{...}
-1 Bytes: Schleife über Länge und Ende des Teilstrings anstatt über Anfang und Ende des Teilstrings
-2 Bytes:
z
Bei der ersten Verwendung anstelle von vorher deklarierenquelle
Pyth , 13 Bytes
Probieren Sie es online!
-1 Byte danke an Herrn Xcoder
quelle
h_I#sM.p_I#.:
odere_IDsM.p_I#.:
für 13 Bytes verwenden.Python 3 , 167 Bytes
Probieren Sie es online!
-2 Bytes dank Mr. Xcoder
quelle
a[i:j+1]
wenn Siefor j in range(i,len(a))
stattdessen -2 Bytes verwenden.Japt , 19 Bytes
Behindert durch Japt (noch) nicht alle Teilstrings eines Strings bekommen zu können (und teilweise durch meine momentane Erschöpfung!).
Gibt aus,
undefined
wenn es keine Lösung gibt.Versuch es
Erläuterung
quelle
¬
aus Ihrer Antwort zu entfernen : P?m¬
aber dann hätte ich es gebraucht,æ_¬êQ
damit es sowieso keine Bytes gespeichert hätte!Schale , 12 Bytes
Probieren Sie es online!
Erläuterung
quelle
J , 53 Bytes
Probieren Sie es online!
quelle