Biorąc pod uwagę ciąg wejściowy, wypisz jeden lub więcej wariantów ciągu, tak aby:
- Żadna postać nie jest na swojej pierwotnej pozycji
- Żadna postać nie sąsiaduje z postacią, z którą pierwotnie sąsiadowała
Możesz założyć, że zawsze będzie to możliwe dla danego ciągu i będzie zawierać tylko pojedyncze litery alfabetu ( [a-z]
lub [A-Z]
jeśli wolisz)
Pamiętaj, że duplikaty tego samego znaku nie są uważane za unikalne.
Na przykład, biorąc pod uwagę dane wejściowe programming
, dane wyjściowe nie mogą zawierać znaku m
7 lub 8 i nie mogą zawierać znaku g
4 lub 11 (1 indeksowany)
Przykład:
Weź sznurek abcdef
Prawidłowe dane wyjściowe: daecfb
Jednak następujące elementy byłyby nieprawidłowe: fdbcae
jak w tym przykładzie c
i b
nadal są przyległe.
Adiacencja również się zawija, co oznacza, że nie możesz zrobić fdbeca
tak , jak f
i a
nadal sąsiadujesz.
Przypadki testowe:
Uwaga: nie są to jedyne prawidłowe dane wyjściowe dla danych wejściowych
Zapisane jako input -> output
:
helowi -> ioewhl
mayube -> euabmy
stephens -> nhseespt
aabcdeffghij -> dbfhjfigaeca
Punktacja:
To jest golf golfowy, więc wygrywa najmniej bajtów w każdym języku !
źródło
No character is adjacent to a character that it was originally adjacent to
. Czy zamówienie nie ma znaczenia dla sąsiedztwa? Więc wejście „abcd” nie może mieć nigdzie „ab”, a nigdzie też nie może mieć „ba”?Odpowiedzi:
Galaretka ,
2423 bajtyWypróbuj online!
Niezwykle długo z powodu mojej okropności w Jelly, ale w końcu to działa, przynajmniej ... wciąż w trakcie gry w golfa.
źródło
Python 2 , 185 bajtów
Wypróbuj online!
Wyświetla wszystkie poprawne ciągi
źródło
mayube
,stephens
ihelowi
wydaje się działać dla wszystkich potrzebujących 3. I dla dokonania walidator wyjście zrobić jakieś bardziej intensywne badania choćaabcdeffghij
, ale to nie znaczy, że to nie działa, wystarczy, że wejście zajmie więcej niż minutęprint next(l for l in permutations(x) if not((g(l)|g(l[::-1]))&(g(x)|g(x[::-1]))or any(a==b for a,b in zip(x,l))))
`l`[2::5]
= /PHP> = 7,1, 147 bajtów
PHP Sandbox Online
PHP> = 7,1, 184 bajtów
Użyj odległości levenshtein zamiast Regex
PHP Sandbox Online
PHP , 217 bajtów
Wersja poniżej 7.1
Wypróbuj online!
źródło
helowi
, wyjściaioewlh
,i
ih
przylegaBrachylog , 21 bajtów
Wypróbuj online!
Wyjaśnienie
Naprawdę chciałbym
p.;?z≠ᵐ&j¬{s₂p~s~j}
pracować za 2 bajty mniej, ale wydaje się, że~j
nie jest wystarczająco inteligentny ...źródło
PHP 7.1,
136131 bajtówzainspirowany rozwiązaniem Jörga :
Uruchom jako potok
-r
lub przetestuj go online . (Upewnij się, że wybrano PHP w wersji 7.1 lub nowszej)Wymaga PHP 7.1; dodać 14 bajtów dla starszych PHP: Wymienić
$k-1
z($k?:strlen($a))-1
;(dwa dalsze bajty PHP: <5,3
$k?$k-1:strlen($a)-1
)awaria
źródło
$c=$a[$k=0], $d=$a[$k-1]
) przez$s.$s
.PHP 7.1,
187 185 172 178143 bajtówUruchom jako potok
-r
lub przetestuj go online . (Upewnij się, że wybrano PHP w wersji 7.1.0 lub nowszej!)awaria
źródło
mayube
, produktówyeuamb
,m
ia
przylegaRubin,
11097102 bajtówWypróbuj online!
źródło
3594817062
jako wyjście na twój link TIO.JavaScript 6, 116 bajtów
źródło
Stax ,
2321 bajtówUruchom i debuguj online!
Dziękujemy za @recursive za zapisanie 2 bajtów.
Uruchomienie zajmuje bardzo dużo czasu. Bardziej rozsądną / wykonalną wersją jest (tylko 2 bajty dłużej)
Uruchom i debuguj online!
Wyjaśnienie
Używa rozpakowanej wersji do wyjaśnienia.
źródło
G
. Robisz,{...}X!...x!
aby wykonać ten sam blok dwa razy. Ogólnie rzecz biorąc, można przepisać to jakoG...G
ze}...
na koniec programu, jak ten .G
w innym poście, aby zapisać jeden bajt, zastępując{...}*
goD...
. Chyba po prostu wciąż nie jestem do tego przyzwyczajony ...