Biorąc pod uwagę ciąg l
, znajdź wszystkie palindromiczna podciągi p
z l
(w tym duplikaty i pojedynczych ciągów znaków). Następnie przestaw wszystkie podłańcuchy w p
prawidłowy palindrom (może być wiele poprawnych odpowiedzi). Jeśli nie można zmienić układu p
na pojedynczy palindrom, program może mieć niezdefiniowane zachowanie (błąd, przepełnienie stosu, wychodzenie, zawieszenie / przedwczesne zabójstwo Johna Dvoraka itp.)
Przykłady
Ważne przypadki testowe
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
Nieprawidłowe przypadki testowe (niemożliwe)
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>
Zasady
- Jeśli słowo wejściowe jest samym palindromem, zawsze będzie ważne jako wejście.
- Należy zwrócić tylko jeden podciąg, który wybierzesz jest dowolny, o ile jest poprawny.
- Jeśli dane wejściowe nie mają realnych wyników, kod może mieć niezdefiniowane zachowanie.
- Dane wejściowe będą zawierać między znakami ASCII do wydruku
0x20-0x7E
. - To jest golf golfowy , zwycięzcą jest najniższa liczba bajtów.
code-golf
array-manipulation
permutations
palindrome
Urna Magicznej Ośmiornicy
źródło
źródło
"abbccdd"
jest błędny: dwie ostatnie litery powinny być"bb"
, nie"dd"
.Odpowiedzi:
Brachylog , 10 bajtów
Wypróbuj online!
Nie działa (tzn. Drukuje
false.
), jeśli nie jest to możliwe.Wyjaśnienie
źródło
Orzech kokosowy , 140 bajtów
Wypróbuj online!
źródło
JavaScript (ES6), 193 bajty
„Spójrz Ma, brak wbudowanej permutacji!”(Więc tak ... to długo ...)
Zwraca pustą tablicę, jeśli nie ma rozwiązania.
Próbny
Pokaż fragment kodu
W jaki sposób?
Podzielmy kod na mniejsze części.
Definiujemy P () , funkcję, która zwraca s, jeśli s jest palindromem, lub fałsz w przeciwnym razie.
Obliczamy wszystkie podciągi z ciągu wejściowego s . Za pomocą P () izolujemy niepuste palindromy i przechowujemy je w tablicy a .
Główną funkcją rekurencyjne f () wykonuje wejściu i obliczania wszystkich permutacji. Aktualizuje S , gdy sam permutację palindrom (raz połączone) i ewentualnie wraca do końcowej wartości S .
źródło
Galaretka , 13 bajtów
Wypróbuj online!
Drukuje
0
w niewłaściwej obudowie.źródło
05AB1E ,
1312 bajtówWypróbuj online!
-1 bajt dzięki Magicznej Ośmiornicy Urnie i Enigmie.
źródło
J
automatycznie factorizes więc nie trzeba€J
po prostuJ
; powinieneś także zwrócić jedną z palindromów, nie wszystkie. Wypróbuj online! obowiązuje dla tej samej liczby bajtów.Ùć
może być¤
(lub kilka innych opcji)Ù
nie było potrzebne.Stax , 13 bajtów
Uruchom przypadki testowe (na mojej bieżącej maszynie zajmuje to około 10 sekund)
Jest to odpowiednia reprezentacja ascii tego samego programu.
Nie jest to czysta brutalna siła, ale jest tak mała, jak napisana przeze mnie implementacja brutalnej siły. Ten spowodował awarię mojej przeglądarki po około 10 minutach. W każdym razie, oto jak to działa.
źródło
Rubin ,
131123120 bajtówWypróbuj online!
Lambda przyjmuje łańcuch i zwraca łańcuch. Zwraca,
nil
gdy nie ma rozwiązania.-5 bajtów Wymienić
select{|t|l[t]}
zselect(&l)
-3 bajtów Wymienić
map{..}.flatten
zflat_map{...}
-1 bajtów: Pętla na długości podciągu i początku podciągu, zamiast ponad podciągu i końcu podciągu
-2 bajty: zadeklaruj
z
przy pierwszym użyciu zamiast wcześniejźródło
Pyth , 13 bajtów
Wypróbuj online!
-1 bajt dzięki Mr. Xcoder
źródło
h_I#sM.p_I#.:
lube_IDsM.p_I#.:
dla 13 bajtów.Python 3 , 167 bajtów
Wypróbuj online!
-2 bajty dzięki Mr. Xcoder
źródło
a[i:j+1]
jeślifor j in range(i,len(a))
zamiast tego użyjesz , dla -2 bajtów.Japt , 19 bajtów
Utrudnione przez to, że Japt nie jest (jeszcze) w stanie uzyskać wszystkich podciągów łańcucha (a częściowo przez mój obecny poziom wyczerpania!).
Wyprowadza,
undefined
jeśli nie ma rozwiązania.Spróbuj
Wyjaśnienie
źródło
¬
z odpowiedzi: P?m¬
ale wtedy bym potrzebował,æ_¬êQ
aby i tak nie zaoszczędziłoby żadnych bajtów!Łuska , 12 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
J , 53 bajty
Wypróbuj online!
źródło