El desafío aquí es tomar una cadena y generar todas sus rotaciones, moviendo repetidamente el primer carácter hasta el final, una vez por carácter en la cadena, terminando con la cadena original:
john -> ohnj, hnjo, njoh, john
También puede desplazarse en la otra dirección, moviendo personajes desde el final:
john -> njoh, hnjo, ohnj, john
Aún debe generar una rotación por letra incluso si se alcanza la palabra original antes de eso:
heehee -> eeheeh, eheehe, heehee, eeheeh, eheehe, heehee
Se permiten matrices de caracteres, siempre que el resultado funcione como se muestra arriba.
¡La respuesta más corta gana!
heehee
vuelve al orden original en menos ciclos que su longitud, ¿nos detenemos allí? Espero que esto haga una gran diferencia para muchas respuestas.Respuestas:
Jalea , 2 bytes
Un enlace monádico que acepta una lista de caracteres que produce una lista de listas de caracteres
Pruébalo en línea! (pie de página bonitas impresiones llamando al enlace y uniéndose con caracteres de nueva línea)
fuente
Haskell, 27 bytes
Pruébalo en línea!
fuente
APL (Dyalog Unicode) , SBCS de 6 bytes
Pruébalo en línea!
⍳
los índices∘
de≢
el recuento⌽¨
cada uno gira (a la izquierda)⊂
toda la cuerdafuente
Python 2 , 38 bytes
Pruébalo en línea!
fuente
JavaScript (ES6),
3732 bytesDevuelve una matriz de cadenas.
Pruébalo en línea!
fuente
Japt,
53 bytesToma la entrada como una matriz de caracteres, emite una matriz de matrices de caracteres
Pruébalo aquí
fuente
05AB1E , 3 bytes
Pruébalo en línea!
fuente
brainfuck , 59 bytes
Pruébalo en línea!
Emite cada cadena separada por bytes nulos.
Explicación:
fuente
MATL ,
65 bytes1 byte guardado gracias a @luis!
¡Pruébalo en MATL Online !
Explicacion :
fuente
Wolfram Language (Mathematica) ,
3526 bytesPruébalo en línea!
Toma una lista de caracteres como entrada.
Partition
(pero no la variante que seStringPartition
usa a continuación) tiene un cuarto argumento opcional para tratar su entrada como cíclica (y para especificar cómo hacerlo exactamente), lo que hace que esta solución sea más simple que la cadena, además de no tener 15 caracteres construidos -en funciones.Wolfram Language (Mathematica) , 44 bytes
Pruébalo en línea!
Lo mismo, pero toma una cadena como entrada.
Se convierte
"john"
en"johnjohn"
, luego toma todas lasStringLength["john"]
subcadenas de longitud de esta cadena con el desplazamiento 1, produciendo{"john","ohnj","hnjo","njoh","john"}
, luego suelta la primera de ellas conRest
.fuente
Rest@Partition[#~Join~#,Length@#,1]&
serían 36 bytes.Adjunto , 13 bytes
Pruébalo en línea!
Explicación
Alternativas
15 bytes :
{_&Rotate!1:#_}
16 bytes :
{Rotate[_,1:#_]}
16 bytes :
Rotate@Rotations
16 bytes :
Rotate#(1&`:@`#)
17 bytes :
Rotate#{1+Iota@_}
18 bytes :
Rotate#(1&`+@Iota)
19 bytes :
Rotate#(Succ=>Iota)
fuente
J , 7 bytes
Pruébalo en línea!
Explicación:
fuente
"
esa manera es muy inteligente y requiere el conocimiento del diccionario del idioma. ¿Hay también un verbo con rango1 0
?"#:
. Aprendí esto aquí de FrownyfrogR , 58 bytes
Pruébalo en línea!
fuente
C # (compilador interactivo de Visual C #) , 34 bytes
Pruébalo en línea!
fuente
C (32 bits),
585150 bytes-1 byte para un buen número redondo gracias a ceilingcat
Pruébalo en línea!
Degolf
fuente
~++i+printf("%s%.*s\n",s+i,i,s)
lugar dei++<printf("%s%.*s\n",s+i,i,s)-2
flooringcat
.Carbón de leña , 10 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Para rotar en la dirección opuesta, reemplace
Minus
conPlus
.fuente
Rojo ,
4943 bytesPruébalo en línea!
fuente
Python 2 ,
5448 bytesPruébalo en línea!
Bien golpeado por xnor, pero publicado como un enfoque alternativo de todos modos.
fuente
Perl 6 , 32 bytes
Pruébalo en línea!
m:ex/^(.*)(.+)$/
ex
ataca conm
fuerza la expresión regular dada, dividiendo la cadena de entrada en todos los lugares posibles, excepto que la segunda subcadena debe tener al menos un carácter, lo que evita que la cadena de entrada aparezca dos veces en la salida. Luego, cada uno de losMatch
grupos de captura de los objetos resultantes se reduce ([]
) a una sola cadena conR~
el operador de concatenación de cadenas invertidas.fuente
Pushy , 4 bytes
Pruébalo en línea!
fuente
V , 8 bytes
Pruébalo en línea!
Hexdump:
fuente
ýñx$pÙñd
da 8 al eliminar la necesidad deH
tio.run/##K/v///DewxsrVAoOzzy8MeX/f6/8jDwAý<M-->ñx$pÙ
Powershell, 44 bytes
Script de prueba:
salida:
fuente
Tcl , 80
91bytesPruébalo en línea!
fuente
proc R t {time {puts [set t [string ra $t 1 end][string in $t 0]]} [string len $t]}
SNOBOL4 (CSNOBOL4) , 82 bytes
Pruébalo en línea!
fuente
Lua , 61 bytes
Pruébalo en línea!
Dividir la cadena en índices sucesivos de uno a la longitud de la cadena (indexación basada en uno), concatenar las piezas en el orden inverso, imprimir.
fuente
Ruby , 39 bytes
Pruébalo en línea!
fuente
JavaScript,
484336 bytes-5 bytes cortesía de @Bubbler * -7 bytes cortesía de @Shaggy
La entrada es una matriz de caracteres y la salida es una matriz de matrices de caracteres.
Pruébalo en línea!
fuente
[..."john"]
No cuenta como manipulación de la cadena de entrada a una matriz antes de la llamada a la función?Lisp común, 88 bytes
Pruébalo en línea!
fuente
MBASIC ,
6966 bytes-3 bytes, gracias a Ørjan Johansen
fuente
1 INPUT S$:L=LEN(S$):FOR I=1 TO L:S$=MID$(S$+S$,2,L):PRINT S$:NEXT
.brainfuck , 38 bytes
Pruébalo en línea!
Basado en la idea de JoKing de usar caracteres nulos como símbolos de espacio. Este código marca las letras actuales para imprimir y los bucles hasta que llega al extremo izquierdo.
fuente