Rotónimos 2
Un "Rotónimo" es una palabra que ROT13 se convierte en otra palabra (en el mismo idioma).
Para este desafío, usaremos una definición alternativa: un "Rotónimo" es una palabra que circular cambia / rota a otra palabra (en el mismo idioma).
Por ejemplo:
'stable' < 'tables' < 'ablest'
'abort' > 'tabor'
'tada' >> 'data'
El reto
Escriba un programa o función que acepte una lista de diccionario / palabras e imprima o devuelva una lista completa de rotónimos.
- El orden no importa.
- Las comparaciones deben ser insensibles a mayúsculas y minúsculas, por lo que puede suponer que la entrada se pasará como un diccionario de minúsculas.
- El resultado debe expresarse como palabras individuales (no los pares) y no contener duplicados, por lo que puede suponer que la entrada no tiene duplicados.
- Este es el código de golf .
Ejemplo
Dado
ablest
abort
green
irk
stable
tables
tabor
tata
terra
vex
you
Regreso
ablest
abort
stable
tables
tabor
Una prueba real
Dado
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
Regreso
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
, tienes algunas palabras extrañas allí.Respuestas:
Jalea , 8 bytes
Pruébalo en línea!
Versión alternativa, 7 bytes.
Dyadic
Ƭ
solía hacer algo extraño, por lo que esto no funcionó cuando se publicó el desafío.Pruébalo en línea!
Cómo funciona
fuente
ṙ1$ÐĿfḊɗÐf
.APL (Dyalog) , 20 bytes
Requiere
⎕io←0
Pruébalo en línea!
(1↓∘∪⍳∘≢⌽¨⊂)¨
obtiene las rotaciones únicas (excluyendo la cadena en sí) de cada cadena en el diccionario≢
toma la longitud de un vector⍳∘≢
crea el rango desde 0 hasta la longitud⌽
rota un vector varias veces, por ejemplo, 2⌽'abortar '->' ortab '⍳∘≢⌽¨⊂
entonces dará todas las rotaciones de un vector∪
elimina los duplicados1↓
elimina el primer elemento (la cadena original),/
aplana todas las rotaciones en una lista⊂∩¨
toma la intersección del diccionario con las rotacionesfuente
⊂∩¨
truco (o viceversa) para una mayor -1APL (Dyalog Unicode) ,
2523221716 bytes SBCSToma prestado ideas de la solución ngn / k de ngn . Y luego -6 gracias a él. También -1 al devolver una lista adjunta como H.PWiz .
Función de prefijo tácito anónimo.
Pruébalo en línea!
(
...)¨
aplique la siguiente función tácita a cada palabra:,⍨
concatenar la palabra a sí misma≢,/
todas las subcadenas de longitud de palabra (es decir, todas las rotaciones)∪
elementos únicos de esas rotaciones (para evitar palabras comotata
aparecer dos veces)1,.↓
la concatenación de las primeras letras (las palabras originales) de cada lista⊂∩¨
intersección del contenido de eso y la lista de palabras original completaVieja solución
-2 gracias a ngn.
Prefijo anónimo lambda.
Pruébalo en línea!
{
...}
función donde⍵
está la lista de palabras:(
...)¨
aplique la siguiente función tácita a cada palabra:,⍨
concatenar la palabra a sí misma≢,/
todas las subcadenas de longitud de palabra (es decir, todas las rotaciones)∪
elementos únicos de esas rotaciones (para evitar palabras comotata
aparecer dos veces)↑
mezclar la lista de listas en una única matriz (almohadillas con cadenas de todo el espacio)⍵∊⍨
indicar qué elementos de la matriz son miembros de la lista original+/
suma las filas (cuenta las ocurrencias de cada una de las palabras originales)2≤
Indique cuáles tienen duplicados (es decir, ocurren de forma distinta a cuando se vuelven a girar al original)⍵/⍨
use eso para filtrar la lista originalfuente
{∪⌽∘⍵¨⍳≢⍵}
->(∪≢,/,⍨)
; su uso de∊
es inteligente{⍵∩⊃,/1↓¨(∪≢,/,⍨)¨⍵}
⊢∩∘⊃1,.↓(∪≢,/,⍨)¨
Brachylog , 26 bytes
Pruébalo en línea!
fuente
Python 2 ,
736967 bytesPruébalo en línea!
Toma un conjunto de palabras (minúsculas) y devuelve una lista de rotónimos.
Salvado
fuente
K (ngn / k) , 23 bytes
Pruébalo en línea!
{
}
es una función con argumentox
0 1_
corta una cadena en los índices 0 y 1, por ejemplo,"abcd"
->(,"a";"bcd")
|
invierte las dos rebanadas:("bcd";,"a")
,/
se une a ellos:"bcda"
(,/|0 1_)\
devuelve todas las rotaciones de una cadena(,/|0 1_)\'x
son las rotaciones de cada cadena enx
1_'
elimina la primera "rotación" de cada uno, es decir, cada rotación de identidad trivial,/
unirsex^y
es la listax
sin elementos de la listay
x^x^y
es la intersección dex
yy
fuente
05AB1E , 14 bytes
Pruébalo en línea!
Explicación
fuente
PynTree , 44 bytes
Pruébalo en línea!
Esto resultó revelar una falla importante en la forma en que PynTree construye las comprensiones de listas porque usa funciones para asignar variables para que la asignación pueda ir en expresiones, pero luego las condiciones terminan sin tener el valor de la variable hasta después de que ha sido evaluada y El bloque principal ha sido evaluado. Esto parece ser fácilmente reparable, pero no lo noté antes, por lo que esta respuesta es horriblemente larga.
En realidad, incluso si soluciono eso, creo que aún podría ser terriblemente largo.
fuente
Perl 6 , 65 bytes
Intentalo
Expandido:
fuente
JavaScript (Node.js),
10599 bytesSin golf:
Pruébalo en línea!
fuente
Retina 0.8.2 ,
7162 bytesPruébalo en línea! Explicación:
Repita para cada palabra.
Anteponga la siguiente rotación de la palabra con un final
!
.Pero si esa es la palabra original, bórrala nuevamente.
Ordena las palabras.
Encuentra los duplicados.
fuente
Python 2 ,
665570 bytesPruébalo en línea!
11 bytes gracias a Dennis para usar el
x in y in z
enfoque encadenado .Toma un conjunto de palabras
d
; devuelve un conjunto de rotónimos.fuente
C # (.NET Core) ,
10094 bytesPruébalo en línea!
fuente
Japt , 17 bytes
Extremadamente lento, pero funciona. TIO agota el tiempo de espera, pero he confirmado que funciona reduciendo manualmente el número de iteraciones en la fuente del idioma.
Pruébalo en línea!
fuente
Javascript, 129 caracteres
Sin golf
Pruébalo en línea!
fuente
Java (JDK 10) , 144 bytes
Pruébalo en línea!
fuente
JavaScript (Node.js) , 66 bytes
Pruébalo en línea!
respuesta aburrida
fuente