O desafio aqui é pegar uma string e produzir todas as suas rotações, movendo repetidamente o primeiro caractere para o final, uma vez por caractere na string, terminando com a string original:
john -> ohnj, hnjo, njoh, john
Você também pode andar de bicicleta na outra direção, movendo caracteres do final:
john -> njoh, hnjo, ohnj, john
Você ainda deve gerar uma rotação por letra, mesmo que a palavra original seja alcançada antes disso:
heehee -> eeheeh, eheehe, heehee, eeheeh, eheehe, heehee
Matrizes de caracteres são permitidas, desde que o resultado funcione como mostrado acima.
A resposta mais curta vence!
heehee
retorna à ordem original em menos ciclos que seu comprimento, paramos por aí? Espero que isso faça uma grande diferença para muitas respostas.Respostas:
Geléia , 2 bytes
Um link monádico que aceita uma lista de caracteres que produz uma lista de listas de caracteres
Experimente online! (o rodapé é impresso chamando o link e juntando-se a caracteres de nova linha)
fonte
Haskell, 27 bytes
Experimente online!
fonte
APL (Dyalog Unicode) , SBCS de 6 bytes
Experimente online!
⍳
os índices∘
do≢
a contagem⌽¨
cada rotação (para a esquerda)⊂
toda a cadeiafonte
Python 2 , 38 bytes
Experimente online!
fonte
JavaScript (ES6),
3732 bytesRetorna uma matriz de seqüências de caracteres.
Experimente online!
fonte
Japonês,
53 bytesRecebe entrada como uma matriz de caracteres, gera uma matriz de matrizes de caracteres
Experimente aqui
fonte
05AB1E , 3 bytes
Experimente online!
fonte
brainfuck , 59 bytes
Experimente online!
Produz cada sequência separada por bytes nulos.
Explicação:
fonte
MATL ,
65 bytes1 byte salvo graças a @luis!
Experimente no MATL Online !
Explicação :
fonte
Wolfram Language (Mathematica) ,
3526 bytesExperimente online!
Leva uma lista de caracteres como entrada.
Partition
(mas não sua varianteStringPartition
usada abaixo) tem um quarto argumento opcional para tratar sua entrada como cíclica (e para especificar exatamente como fazê-lo), o que torna essa solução mais simples que a da cadeia anterior - além de não ter 15 caracteres construídos em funções.Wolfram Language (Mathematica) , 44 bytes
Experimente online!
O mesmo, mas recebe uma string como entrada.
Se
"john"
transforma e"johnjohn"
, em seguida, pega todas asStringLength["john"]
subseqüências de comprimento dessa sequência com o deslocamento 1, produzindo e{"john","ohnj","hnjo","njoh","john"}
, em seguida, descarta a primeira delas comRest
.fonte
Rest@Partition[#~Join~#,Length@#,1]&
seriam 36 bytes.Anexo , 13 bytes
Experimente online!
Explicação
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)
fonte
J , 7 bytes
Experimente online!
Explicação:
fonte
"
dessa maneira é muito inteligente e requer conhecimento de dicionário do idioma. Existe também um verbo com classificação1 0
?"#:
. Aprendi isso aqui com FrownyfrogR , 58 bytes
Experimente online!
fonte
C # (compilador interativo do Visual C #) , 34 bytes
Experimente online!
fonte
C (32 bits),
585150 bytes-1 byte para um número redondo agradável, graças a
Experimente online!
Degolf
fonte
~++i+printf("%s%.*s\n",s+i,i,s)
vez dei++<printf("%s%.*s\n",s+i,i,s)-2
flooringcat
.Carvão , 10 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Para girar na direção oposta, substitua
Minus
porPlus
.fonte
Vermelho ,
4943 bytesExperimente online!
fonte
Python 2 ,
5448 bytesExperimente online!
Bem derrotado pelo xnor, mas postado como uma abordagem alternativa de qualquer maneira.
fonte
Perl 6 , 32 bytes
Experimente online!
m:ex/^(.*)(.+)$/
ex
haustivelym
atches o regex dada, dividindo a cadeia de entrada em todos os lugares possíveis, exceto que a segunda substring deve ter pelo menos um caractere - que impede a cadeia de entrada de aparecer duas vezes na saída. Em seguida, cada um dosMatch
grupos de captura dos objetos resultantes é reduzido ([]
) a uma única cadeia comR~
o operador de concatenação de cadeia reversa.fonte
Pushy , 4 bytes
Experimente online!
fonte
V , 8 bytes
Experimente online!
Hexdump:
fonte
ýñx$pÙñd
dá 8 removendo a necessidade deH
tio.run/##K/v///DewxsrVAoOzzy8MeX/f6/8jDwAý<M-->ñx$pÙ
Powershell, 44 bytes
Script de teste:
saída:
fonte
Tcl , 80
91bytesExperimente online!
fonte
proc R t {time {puts [set t [string ra $t 1 end][string in $t 0]]} [string len $t]}
SNOBOL4 (CSNOBOL4) , 82 bytes
Experimente online!
fonte
Lua , 61 bytes
Experimente online!
Divida a sequência em índices sucessivos de um para o comprimento da sequência (indexação baseada em uma), concatene as partes na ordem inversa, imprima.
fonte
Ruby , 39 bytes
Experimente online!
fonte
JavaScript,
484336 bytes-5 bytes cortesia de @Bubbler * -7 bytes cortesia de @Shaggy
Entrada é uma matriz de caracteres e saída é uma matriz de matrizes de caracteres.
Experimente online!
fonte
[..."john"]
conta como manipulação da string de entrada em uma matriz antes da chamada da função?Lisp comum, 88 bytes
Experimente online!
fonte
MBASIC ,
6966 bytes-3 bytes, graças a Ørjan Johansen
fonte
1 INPUT S$:L=LEN(S$):FOR I=1 TO L:S$=MID$(S$+S$,2,L):PRINT S$:NEXT
.brainfuck , 38 bytes
Experimente online!
Com base na idéia do JoKing de usar caracteres nulos como símbolos de espaço. Esse código marca as letras atuais a serem impressas e faz um loop até atingir a extremidade esquerda.
fonte