Rotonymes 2
Un "Rotonym" est un mot qui ROT13s dans un autre mot (dans la même langue).
Pour ce défi, nous utiliserons une autre définition: un "Rotonym" est un mot qui se déplace / tourne en circulaire dans un autre mot (dans la même langue).
Par exemple:
'stable' < 'tables' < 'ablest'
'abort' > 'tabor'
'tada' >> 'data'
Le défi
Écrivez un programme ou une fonction qui accepte une liste de dictionnaires / mots et imprime ou retourne une liste complète de rotonymes.
- L'ordre n'a pas d'importance.
- Les comparaisons doivent être insensibles à la casse, vous pouvez donc supposer que l'entrée sera transmise en tant que dictionnaire en minuscules uniquement.
- Le résultat doit être exprimé sous la forme de mots simples (pas de paires) et ne contenir aucun doublon, vous pouvez donc supposer que l'entrée n'a pas de doublons.
- C'est du code-golf .
Exemple
Donné
ablest
abort
green
irk
stable
tables
tabor
tata
terra
vex
you
Revenir
ablest
abort
stable
tables
tabor
Un vrai test
Donné
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
Revenir
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
, vous avez des mots étranges là-bas.Réponses:
Gelée , 8 octets
Essayez-le en ligne!
Version alternative, 7 octets
Dyadic
Ƭ
faisait quelque chose de bizarre, donc cela n'a pas fonctionné lorsque le défi a été publié.Essayez-le en ligne!
Comment ça fonctionne
la source
ṙ1$ÐĿfḊɗÐf
.APL (Dyalog) , 20 octets
A besoin
⎕io←0
Essayez-le en ligne!
(1↓∘∪⍳∘≢⌽¨⊂)¨
obtient les rotations uniques (à l'exclusion de la chaîne elle-même) de chaque chaîne du dictionnaire≢
prend la longueur d'un vecteur⍳∘≢
crée la plage de 0 à la longueur⌽
fait tourner un vecteur un certain nombre de fois, par exemple 2⌽'abort '->' ortab '⍳∘≢⌽¨⊂
donnera alors toutes les rotations d'un vecteur∪
supprime les doublons1↓
supprime le premier élément (la chaîne d'origine),/
aplatit toutes les rotations en une seule liste⊂∩¨
prend l'intersection du dictionnaire avec les rotationsla source
⊂∩¨
astuce (ou vice versa) pour un autre -1APL (Dyalog Unicode) ,
2523221716 octets SBCSEmprunte des idées de la solution ngn / k de ngn . Et puis -6 grâce à lui. Aussi -1 en revenant une liste jointe comme H.PWiz .
Fonction de préfixe tacite anonyme.
Essayez-le en ligne!
(
…)¨
Appliquer la fonction tacite suivante à chaque mot:,⍨
concaténer le mot à lui-même≢,/
toutes les sous-chaînes de longueur de mot (c'est-à-dire toutes les rotations)∪
éléments uniques de ces rotations (pour éviter que des mots commetata
pour apparaître deux fois)1,.↓
la concaténation des drop-first (les mots originaux) de chaque liste⊂∩¨
intersection du contenu de cela et de la liste de mots originale entièreAncienne solution
-2 grâce à ngn.
Préfixe anonyme lambda.
Essayez-le en ligne!
{
…}
Fonction où se⍵
trouve la liste de mots:(
…)¨
Appliquer la fonction tacite suivante à chaque mot:,⍨
concaténer le mot à lui-même≢,/
toutes les sous-chaînes de longueur de mot (c'est-à-dire toutes les rotations)∪
éléments uniques de ces rotations (pour éviter que des mots commetata
pour apparaître deux fois)↑
mélanger la liste des listes dans une seule matrice (pads avec des chaînes de tout l'espace)⍵∊⍨
indiquer quels éléments de la matrice sont membres de la liste d'origine+/
additionner les lignes (compte les occurrences de chacun des mots originaux)2≤
indiquer ceux qui ont des doublons (c.-à-d. se produire autrement que lorsqu'ils sont retournés à l'original)⍵/⍨
utiliser cela pour filtrer la liste d'originela source
{∪⌽∘⍵¨⍳≢⍵}
->(∪≢,/,⍨)
; votre utilisation∊
est intelligente{⍵∩⊃,/1↓¨(∪≢,/,⍨)¨⍵}
⊢∩∘⊃1,.↓(∪≢,/,⍨)¨
Brachylog , 26 octets
Essayez-le en ligne!
la source
Python 2 ,
736967 octetsEssayez-le en ligne!
Prend un ensemble de mots (en minuscules) et renvoie une liste de rotonymes.
Enregistré
la source
K (ngn / k) , 23 octets
Essayez-le en ligne!
{
}
est une fonction avec argumentx
0 1_
coupe une chaîne aux indices 0 et 1, par exemple"abcd"
->(,"a";"bcd")
|
inverse les deux tranches:("bcd";,"a")
,/
les rejoint:"bcda"
(,/|0 1_)\
renvoie toutes les rotations d'une chaîne(,/|0 1_)\'x
sont les rotations de chaque chaînex
1_'
supprime la première "rotation" de chacun, c'est-à-dire chaque rotation d'identité triviale,/
joindrex^y
est la listex
sans éléments de la listey
x^x^y
est l'intersection dex
ety
la source
05AB1E , 14 octets
Essayez-le en ligne!
Explication
la source
PynTree , 44 octets
Essayez-le en ligne!
Cela s'est révélé révéler une faille majeure dans la façon dont PynTree construit des compréhensions de liste car il utilise des fonctions pour affecter des variables afin que l'affectation puisse aller dans des expressions, mais les conditions finissent par ne pas avoir la valeur de la variable jusqu'à ce qu'elle soit évaluée et le bloc principal a été évalué. Cela semble être facilement réparable, mais je ne l'ai pas remarqué plus tôt et cette réponse est donc affreusement longue.
En fait, même si je corrige cela, je pense que cela pourrait être terriblement long.
la source
Perl 6 , 65 octets
Essayez-le
Étendu:
la source
JavaScript (Node.js),
10599 octetsNon golfé:
Essayez-le en ligne!
la source
Rétine 0,8,2 ,
7162 octetsEssayez-le en ligne! Explication:
Répétez l'opération pour chaque mot.
Ajoutez à la rotation suivante du mot une fin
!
.Mais si c'est le mot d'origine, supprimez-le à nouveau.
Triez les mots.
Trouvez les doublons.
la source
Python 2 ,
665570 octetsEssayez-le en ligne!
11 octets thx à Dennis pour utiliser enchaîné
x in y in z
approche .Prend un ensemble de mots
d
; renvoie un ensemble de Rotonymes.la source
C # (.NET Core) ,
10094 octetsEssayez-le en ligne!
la source
Japt , 17 octets
Extrêmement lent, mais fonctionne. TIO arrive à expiration, mais j'ai confirmé qu'il fonctionne en réduisant manuellement le nombre d'itérations dans la source de la langue.
Essayez-le en ligne!
la source
Javascript, 129 caractères
Non golfé
Essayez-le en ligne!
la source
Java (JDK 10) , 144 octets
Essayez-le en ligne!
la source
JavaScript (Node.js) , 66 octets
Essayez-le en ligne!
réponse ennuyeuse
la source