Ротонимы 2
«Ротоним» - это слово, которое ROT13 превращается в другое слово (на том же языке).
Для этой задачи мы будем использовать альтернативное определение: «Ротоним» - это слово, которое циклически сдвигается / поворачивается в другое слово (на том же языке).
Например:
'stable' < 'tables' < 'ablest'
'abort' > 'tabor'
'tada' >> 'data'
Соревнование
Напишите программу или функцию, которая принимает список словарей / слов и печатает или возвращает полный список ротонимов.
- Заказ не имеет значения.
- Сравнения должны быть без учета регистра, так что вы можете предполагать, что ввод будет передан как словарь только для нижнего регистра.
- Результат должен быть выражен в виде отдельных слов (не пар) и не содержать дубликатов, поэтому можно предположить, что на входе нет дубликатов.
- Это код-гольф .
пример
Дано
ablest
abort
green
irk
stable
tables
tabor
tata
terra
vex
you
Возвращение
ablest
abort
stable
tables
tabor
Настоящий тест
Дано
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
Возвращение
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
У тебя там какие-то странные слова.Ответы:
Желе , 8 байт
Попробуйте онлайн!
Альтернативная версия, 7 байт
Dyadic
Ƭ
делал что-то странное, так что это не сработало, когда задача была опубликована.Попробуйте онлайн!
Как это работает
источник
ṙ1$ÐĿfḊɗÐf
.APL (Dyalog) , 20 байтов
требует
⎕io←0
Попробуйте онлайн!
(1↓∘∪⍳∘≢⌽¨⊂)¨
получает уникальные повороты (исключая саму строку) каждой строки в словаре≢
принимает длину вектора⍳∘≢
создает диапазон от 0 до длины⌽
вращает вектор несколько раз, например, 2⌽abort -> ortab⍳∘≢⌽¨⊂
затем даст все повороты вектора∪
удаляет дубликаты1↓
удаляет первый элемент (исходную строку),/
сводит все вращения в один список⊂∩¨
занимает пересечение словаря с вращениямиисточник
⊂∩¨
трюк (или наоборот) еще на -1APL (Dyalog Unicode) ,
2523221716 байт SBCSЗаимствует идеи из решения ngn / ngn / k . А потом -6 благодаря ему. Также -1, возвращая вложенный список как H.PWiz .
Функция анонимного молчаливого префикса.
Попробуйте онлайн!
(
…)¨
Применить следующую молчаливую функцию к каждому слову:,⍨
объединить слово с собой≢,/
все подстроки длины слова (то есть все вращения)∪
уникальные элементы этих вращений (чтобы слова неtata
появлялись дважды)1,.↓
объединение дроп-первых (исходных слов) каждого списка⊂∩¨
пересечение содержания этого и всего оригинального списка словСтарое решение
-2 благодаря нгн.
Анонимный префикс лямбда.
Попробуйте онлайн!
{
…}
Функция где⍵
список слов:(
…)¨
Применить следующую молчаливую функцию к каждому слову:,⍨
объединить слово с собой≢,/
все подстроки длины слова (то есть все вращения)∪
уникальные элементы этих вращений (чтобы слова неtata
появлялись дважды)↑
смешать список списков в одну матрицу (площадки со строками из пробелов)⍵∊⍨
указать, какие элементы матрицы являются членами исходного списка+/
суммировать строки (подсчитывает вхождения каждого из исходных слов)2≤
указать, у кого есть дубликаты (то есть, если они не возвращены к оригиналу)⍵/⍨
используйте это для фильтрации исходного спискаисточник
{∪⌽∘⍵¨⍳≢⍵}
->(∪≢,/,⍨)
; ваше использование∊
умно{⍵∩⊃,/1↓¨(∪≢,/,⍨)¨⍵}
⊢∩∘⊃1,.↓(∪≢,/,⍨)¨
Брахилог , 26 байт
Попробуйте онлайн!
источник
Python 2 ,
736967 байтПопробуйте онлайн!
Принимает набор слов (строчные буквы) и возвращает список ротонимов.
Сохраненный
источник
К (нгн / к) , 23 байта
Попробуйте онлайн!
{
}
это функция с аргументомx
0 1_
вырезает строку с индексами 0 и 1, например"abcd"
->(,"a";"bcd")
|
переворачивает два ломтика:("bcd";,"a")
,/
присоединяется к ним:"bcda"
(,/|0 1_)\
возвращает все повороты строки(,/|0 1_)\'x
повороты каждой строки вx
1_'
отбрасывает первое «вращение» каждого, то есть каждое тривиальное вращение идентичности,/
присоединитьсяx^y
списокx
без элементов спискаy
x^x^y
это пересечениеx
иy
источник
05AB1E , 14 байтов
Попробуйте онлайн!
объяснение
источник
PynTree , 44 байта
Попробуйте онлайн!
Оказалось, что это выявило серьезный недостаток в способах, которыми PynTree создает списочные выражения, поскольку он использует функции для присваивания переменных, так что присваивание может идти в выражениях, но затем условия не имеют значения переменной до тех пор, пока она не будет оценена и основной блок был оценен. Кажется, это легко исправить, но я не заметил этого раньше, и поэтому этот ответ ужасно длинный.
На самом деле, даже если я исправлю это, я думаю, что это все еще может быть ужасно долго.
источник
Perl 6 , 65 байт
Попробуй
Expanded:
источник
JavaScript (Node.js),
10599 байтUngolfed:
Попробуйте онлайн!
источник
Retina 0.8.2 ,
7162 байтаПопробуйте онлайн! Объяснение:
Повторите для каждого слова.
В начале следующего поворота слова ставится завершающий символ
!
.Но если это оригинальное слово, то удалите его снова.
Сортировать слова
Найдите дубликаты.
источник
Python 2 ,
665570 байтПопробуйте онлайн!
11 байтов спасибо Деннису, чтобы использовать цепной
x in y in z
подход.Принимает набор слов
d
; возвращает набор Ротонимов.источник
C # (.NET Core) ,
10094 байтаПопробуйте онлайн!
источник
Japt , 17 байт
Очень медленно, но работает. Время ожидания TIO истекло, но я подтвердил, что он работает, уменьшив количество итераций в источнике языка вручную.
Попробуйте онлайн!
источник
Javascript, 129 символов
Ungolfed
Попробуйте онлайн!
источник
Java (JDK 10) , 144 байта
Попробуйте онлайн!
источник
JavaScript (Node.js) , 66 байт
Попробуйте онлайн!
скучный ответ
источник