Rotonimy 2
„Rotonim” to słowo, które ROT13 zamienia na inne słowo (w tym samym języku).
W tym wyzwaniu zastosujemy alternatywną definicję: „Rotonim” to słowo, które cyklicznie przesuwa się / obraca w inne słowo (w tym samym języku).
Na przykład:
'stable' < 'tables' < 'ablest'
'abort' > 'tabor'
'tada' >> 'data'
Wyzwanie
Napisz program lub funkcję, która akceptuje słownik / listę słów i drukuje lub zwraca pełną listę rotonimów.
- Porządek nie ma znaczenia.
- Porównania nie powinny uwzględniać wielkości liter, więc można założyć, że dane wejściowe zostaną przekazane jako słownik zawierający tylko małe litery.
- Wynik powinien być wyrażony jako pojedyncze słowa (nie pary) i nie może zawierać duplikatów, więc można założyć, że dane wejściowe nie mają duplikatów.
- To jest golf golfowy .
Przykład
Dany
ablest
abort
green
irk
stable
tables
tabor
tata
terra
vex
you
Powrót
ablest
abort
stable
tables
tabor
Prawdziwy test
Dany
a aa aal aalii aam aani aardvark aardwolf aaron aaronic aaronical aaronite aaronitic aaru ab aba ababdeh ababua abac abaca abacate abacay abacinate abacination abaciscus abacist aback abactinal abactinally abaction abactor abaculus abacus abadite abaff abaft abaisance abaiser abaissed abalienate abalienation abalone abama abampere abandon abandonable abandoned abandonedly abandonee abandoner abandonment abanic abantes abaptiston abarambo abaris abarthrosis abarticular abarticulation abas abase abased abasedly abasedness abasement abaser abasgi abash abashed abashedly abashedness abashless abashlessly abashment abasia abasic abask abassin abastardize abatable abate abatement abater abatis abatised abaton abator abattoir abatua abature abave abaxial abaxile abaze abb abba abbacomes abbacy abbadide abbas abbasi abbassi abbasside abbatial abbatical abbess abbey abbeystede abbie abbot abbotcy abbotnullius abbotship abbreviate abbreviately abbreviation abbreviator abbreviatory abbreviature abby abcoulomb abdal abdat abderian abderite abdest abdicable abdicant abdicate abdication abdicative abdicator abdiel abditive abditory abdomen abdominal abdominales abdominalian abdominally abdominoanterior abdominocardiac abdominocentesis abdominocystic abdominogenital abdominohysterectomy abdominohysterotomy abdominoposterior abdominoscope abdominoscopy abdominothoracic abdominous abdominovaginal abdominovesical abduce abducens abducent abduct abduction abductor abe abeam abear abearance abecedarian abecedarium abecedary abed abeigh abel abele abelia abelian abelicea abelite abelmoschus abelmosk abelonian abeltree abencerrages abenteric abepithymia aberdeen aberdevine aberdonian aberia aberrance aberrancy aberrant aberrate aberration aberrational aberrator aberrometer aberroscope aberuncator abet abetment ablest abort abut ach ache acher achete achill achor acor acre acyl ad adad adat add addlings adet ala ama baa bafta balonea batea beta caba cha chilla cora crea da dad dada data each lacy orach rache saddling stable tables tabor tabu tade teache zoquean zoraptera zorgite zoril zorilla zorillinae zorillo zoroastrian zoroastrianism zoroastrism zorotypus zorrillo zorro zosma zoster zostera zosteraceae zosteriform zosteropinae zosterops zouave zounds zowie zoysia zubeneschamali zuccarino zucchetto zucchini zudda zugtierlast zugtierlaster zuisin zuleika zulhijjah zulinde zulkadah zulu zuludom zuluize zumatic zumbooruk zuni zunian zunyite zupanate zutugil zuurveldt zuza zwanziger zwieback zwinglian zwinglianism zwinglianist zwitter zwitterion zwitterionic zyga zygadenine zygadenus zygaena zygaenid zygaenidae zygal zygantra zygantrum zygapophyseal zygapophysis zygion zygite zygnema zygnemaceae zygnemales zygnemataceae zygnemataceous zygnematales zygobranch zygobranchia zygobranchiata zygobranchiate zygocactus zygodactyl zygodactylae zygodactyli zygodactylic zygodactylism zygodactylous zygodont zygolabialis zygoma zygomata zygomatic zygomaticoauricular zygomaticoauricularis zygomaticofacial zygomaticofrontal zygomaticomaxillary zygomaticoorbital zygomaticosphenoid zygomaticotemporal zygomaticum zygomaticus zygomaxillare zygomaxillary zygomorphic zygomorphism zygomorphous zygomycete zygomycetes zygomycetous zygon zygoneure zygophore zygophoric zygophyceae zygophyceous zygophyllaceae zygophyllaceous zygophyllum zygophyte zygopleural zygoptera zygopteraceae zygopteran zygopterid zygopterides zygopteris zygopteron zygopterous zygosaccharomyces zygose zygosis zygosperm zygosphenal zygosphene zygosphere zygosporange zygosporangium zygospore zygosporic zygosporophore zygostyle zygotactic zygotaxis zygote zygotene zygotic zygotoblast zygotoid zygotomere zygous zygozoospore zymase zyme zymic zymin zymite zymogen zymogene zymogenesis zymogenic zymogenous zymoid zymologic zymological zymologist zymology zymolyis zymolysis zymolytic zymome zymometer zymomin zymophore zymophoric zymophosphate zymophyte zymoplastic zymoscope zymosimeter zymosis zymosterol zymosthenic zymotechnic zymotechnical zymotechnics zymotechny zymotic zymotically zymotize zymotoxic zymurgy zyrenian zyrian zyryan zythem zythia zythum zyzomys zyzzogeton
Powrót
aal aam aba abac abaft abalone abate abet ablest abort abut ach ache acher achete achill achor acor acre acyl ad adad adat add addlings adet ala ama baa bafta balonea batea beta caba cha chilla cora crea da dad dada data each lacy orach rache saddling stable tables tabor tabu tade teache
abdominovaginal
, masz tam jakieś dziwne słowa.Odpowiedzi:
Galaretka , 8 bajtów
Wypróbuj online!
Alternatywna wersja, 7 bajtów
Dyadic
Ƭ
robił kiedyś coś dziwnego, więc nie zadziałało to po opublikowaniu wyzwania.Wypróbuj online!
Jak to działa
źródło
ṙ1$ÐĿfḊɗÐf
.APL (Dyalog) , 20 bajtów
Wymaga
⎕io←0
Wypróbuj online!
(1↓∘∪⍳∘≢⌽¨⊂)¨
pobiera unikalne obroty (wyłączając sam łańcuch) każdego łańcucha w słowniku≢
przyjmuje długość wektora⍳∘≢
tworzy zakres od 0 do długości⌽
obraca wektor kilka razy, np. 2⌽ 'abort' -> 'ortab'⍳∘≢⌽¨⊂
da wtedy wszystkie obroty wektora∪
usuwa duplikaty1↓
usuwa pierwszy element (oryginalny ciąg),/
spłaszcza wszystkie obroty w jedną listę⊂∩¨
przyjmuje przecięcie słownika z obrotamiźródło
⊂∩¨
sztuczkę (lub odwrotnie) przez kolejne -1APL (Dyalog Unicode) ,
2523221716 bajtów SBCSPożycza pomysły z rozwiązania ngn / k ngn . A potem -6 dzięki niemu. Również -1, zwracając załączoną listę jak H.PWiz .
Anonimowa ukryta funkcja prefiksu.
Wypróbuj online!
(
…)¨
Zastosuj następującą ukrytą funkcję do każdego słowa:,⍨
konkatenuj słowo z samym sobą≢,/
wszystkie podłańcuchy długości słowa (tzn. wszystkie rotacje)∪
unikalne elementy tych rotacji (aby zapobiec pojawianiu się słów takich, jaktata
pojawienie się dwukrotnie)1,.↓
konkatenacja drop-firsts (oryginalne słowa) każdej listy⊂∩¨
przecięcie treści tej i całej oryginalnej listy słówStare rozwiązanie
-2 dzięki ngn.
Anonimowy przedrostek lambda.
Wypróbuj online!
{
…}
Funkcja gdzie⍵
jest lista słów:(
…)¨
Zastosuj następującą ukrytą funkcję do każdego słowa:,⍨
konkatenuj słowo z samym sobą≢,/
wszystkie podłańcuchy długości słowa (tzn. wszystkie rotacje)∪
unikalne elementy tych rotacji (aby zapobiec pojawianiu się słów takich, jaktata
pojawienie się dwukrotnie)↑
zmiksuj listę list w jedną macierz (pady z ciągami spacji)⍵∊⍨
wskazuje, które elementy macierzy są członkami oryginalnej listy+/
zsumuj wiersze (zlicza wystąpienia każdego z oryginalnych słów)2≤
wskazać, które mają duplikaty (tj. wystąpić inaczej niż po obróceniu z powrotem do oryginału)⍵/⍨
użyj tego do filtrowania oryginalnej listyźródło
{∪⌽∘⍵¨⍳≢⍵}
->(∪≢,/,⍨)
; twoje użycie∊
jest sprytne{⍵∩⊃,/1↓¨(∪≢,/,⍨)¨⍵}
⊢∩∘⊃1,.↓(∪≢,/,⍨)¨
Brachylog , 26 bajtów
Wypróbuj online!
źródło
Python 2 ,
736967 bajtówWypróbuj online!
Pobiera zestaw słów (małe litery) i zwraca listę rotonimów.
Zapisano
źródło
K (ngn / k) , 23 bajty
Wypróbuj online!
{
}
jest funkcją z argumentemx
0 1_
tnie ciąg przy indeksach 0 i 1, np."abcd"
->(,"a";"bcd")
|
odwraca dwa plasterki:("bcd";,"a")
,/
dołącza do nich:"bcda"
(,/|0 1_)\
zwraca wszystkie obroty łańcucha(,/|0 1_)\'x
są obrotami każdego łańcucha wx
1_'
porzuca pierwszy „obrót” każdego, tj. każdy trywialny obrót tożsamości,/
Przystąpx^y
to listax
bez elementów listyy
x^x^y
jest skrzyżowaniemx
iy
źródło
05AB1E , 14 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
PynTree , 44 bajty
Wypróbuj online!
Okazało się to ujawnić poważną wadę w sposobie, w jaki PynTree konstruuje wyrażenia listowe, ponieważ używa funkcji do przypisywania zmiennych, aby przypisanie mogło przebiegać w wyrażeniach, ale wtedy warunki nie mają wartości zmiennej aż do jej oceny i główny blok został oceniony. Wydaje się, że można to łatwo naprawić, ale nie zauważyłem tego wcześniej, więc ta odpowiedź jest strasznie długa.
Właściwie nawet gdybym to ustalił, myślę, że wciąż może być strasznie długi.
źródło
Perl 6 , 65 bajtów
Spróbuj
Rozszerzony:
źródło
JavaScript (Node.js),
10599 bajtówNie golfowany:
Wypróbuj online!
źródło
Retina 0.8.2 ,
7162 bajtówWypróbuj online! Wyjaśnienie:
Powtórz dla każdego słowa.
Dodaj następny obrót słowa z końcowym
!
.Ale jeśli to jest oryginalne słowo, usuń je ponownie.
Sortuj słowa.
Znajdź duplikaty.
źródło
Python 2 ,
665570 bajtówWypróbuj online!
11 bajtów dzięki Dennisowi, aby zastosować
x in y in z
podejście łańcuchowe .Przyjmuje zestaw słów
d
; zwraca zestaw rotonimów.źródło
C # (.NET Core) ,
10094 bajtówWypróbuj online!
źródło
Japt , 17 bajtów
Niezwykle wolno, ale działa. Upłynął limit czasu TIO, ale potwierdziłem, że działa, ręcznie zmniejszając liczbę iteracji w źródle języka.
Wypróbuj online!
źródło
JavaScript, 129 znaków
Nie golfił
Wypróbuj online!
źródło
Java (JDK 10) , 144 bajty
Wypróbuj online!
źródło
JavaScript (Node.js) , 66 bajtów
Wypróbuj online!
nudna odpowiedź
źródło