Na verdade, não é inspirado nem pelos auto-palindromes de Atbash nem pela Calculadora Gematria Generalizada .
Dada uma sequência s de comprimento n , imprima a sequência Revu'a , que é o primeiro caractere de s , os dois primeiros caracteres de s , ... os primeiros n –2 caracteres de s , os primeiros n –1 caracteres de s , todo o s .
A cadeia de caracteres consistirá apenas em caracteres Unicode (qualquer codificação que você desejar) que tenham forte direcionalidade e sejam encontrados no intervalo de 0x0000 a 0xFFFF. No entanto, nenhum caractere de controle de direcionalidade ocorrerá. Todos os caracteres em qualquer sequência de caracteres terão a mesma direcionalidade.
Você pode retornar em notação de matriz ["t","te","tes","test"]
, como uma sequência separada por espaço "t te tes test"
, como texto de várias linhas t
te
tes
test
, uma matriz pré-formatada
t te tes testeou qualquer coisa semelhante. As quantidades de espaçamento inicial, separador e final não são importantes e nem a nova linha final. Pergunte se estiver em dúvida.
A entrada da direita para a esquerda deve resultar na saída da direita para a esquerda na ordem correta:
Entrada: "נחמן"
Saída: "נ נח נחמ נחמן"
ou
נ נח נחמ נחמן, Ou
["נ","נח","נחמ","נחמן"]
. Entre resultados inválidos são "נחמן נחמ נח נ"
, "ן מן חמן נחמן"
e "נחמן חמן מן ן"
.
JavaScript (ES6),
272625 bytesSalvo um byte graças a @nicael e @ MartinBüttner, um graças a @Neil
Aproveita alguns recursos internos da
.replace
função do JS . Especificamente, na substituição,$`
torna-se tudo o que precede o caractere correspondente. Usar a regex em/.?/g
vez de/./g
significa que ela também corresponde à sequência vazia no final.fonte
f=x=>x.replace(/.?/g,"$
")` Você recebe um espaço à esquerda extra, mas isso é permitido..Japt,
104 bytesNão percebi que uma redução cumulativa seria tão útil nesse caso. :-)
Saídas como uma matriz, separadas por vírgula por padrão. Se isso não for permitido, use este código de 6 bytes:
Experimente online!
Como funciona
fonte
Brainfuck, 40 bytes
Meu console não suporta caracteres da direita para a esquerda, mas não acho que funcione: c
Ungolfed:
fonte
Retina,
117 bytesA saída é separada por espaço, com um espaço à esquerda e um avanço de linha à direita.
Experimente online!
fonte
perl -pE 's/./$
$ & \ n / g'`. (Estou com 11 meses de atraso, eu sei) #Python, 35
Não foi possível encontrar uma maneira
and/or
de simplificar a recursão porque[]
é falso.Solução recursiva, retorna uma lista de seqüências de caracteres.
Experimente online
fonte
Prolog (SWI),
6049 bytesCódigo:
Explicado:
atom_prefix com X definido para entrada e S como uma variável fornece 1 prefixo do átomo X começando com o átomo vazio.
findall obtém todas as soluções e as coloca em uma lista.
[_ | R] joga fora a cabeça (o átomo vazio) e armazena a cauda em R
Exemplos:
Experimente online aqui
Edit: salvo 11 bytes de apenas armazenar a cauda em R .
fonte
Pitão, 3
O prefixo interno faz o truque.
Suíte de teste
fonte
GNU Sed, 21
A pontuação inclui +1 para a
-E
opção sed:Funciona para LTR, mas não RTL - eu perdi esse pedaço.. Na verdade ele faz o trabalho, a RTL não estava prestando corretamente no meu terminal. Funciona bem com IO visualizado em um editor de texto sensato (por exemplo, emacs). Também funciona em Ideone:Experimente online.
fonte
Braquilog , 5 bytes (Não concorrente)
Experimente online!
Explicação
As cordas da direita para a esquerda parecem funcionar corretamente, mesmo que eu nunca as tenha considerado.
fonte
@[
e@w
foram implementadas necessariamente após abril / maio de 2016. É possível encontrar a data exata nos commits do Github, mas certamente não é antes que esse desafio seja enviado.CJam, 9 bytes
A saída é separada por avanço de linha.
Teste aqui.
Explicação
fonte
Ll{+_p}/;
é mesmo comprimento, postagem, porque eu não tenho certeza se alguém com mais experiência pode ser capaz de golf-lo mais, e também talvez corrigir o citações coisa: PJavaScript, 36 bytes
Demo:
O princípio é mapear e gerar a fatia de string do primeiro caractere para cada caractere na palavra. Surpreendentemente, isso também funciona perfeitamente para as strings RTL, sem a necessidade de otimização.
fonte
Meu console não suporta caracteres da direita para a esquerda, mas não acho que funcione: c
C, 74 bytes (segunda entrada)
Ungolfed:
fonte
Meu console não suporta caracteres da direita para a esquerda, mas não acho que funcione: c
C, 105 bytes (terceira entrada)
Ungolfed:
fonte
TI-BASIC, 18 bytes
Não é tecnicamente válido: o TI-BASIC não suporta Unicode.
Nomeie isso
prgmA
e insira usandoAns
.A recursão do programa seria mais curta, mas não havia como inicializar as variáveis. Portanto, exibimos uma substring da entrada em cada iteração. A entrada nunca é substituída, pois Disp não retorna um valor.
Eventualmente, o programa termina com um erro após a impressão de toda a string.
fonte
Python, 54 bytes
fonte
Java 7,
9592 bytesResposta anterior ( 95 bytes ):
Tentei uma abordagem recursiva, mas não consegui fazê-la funcionar. Talvez alguém o faça (mais curto que esse loop for).
Casos não testados e de teste:
Experimente aqui.
Resultado:
fonte
Imersão , 1 byte (não concorrente)
Explicação:
fonte
MATL , 8 bytes
Usa a versão atual (8.0.0) do idioma / compilador
Exemplo
Explicação
fonte
Mathematica, 29 bytes
TODO: explicação
fonte
, 7 caracteres / 16 bytes
Try it here (Firefox only).
Provavelmente há um embutido para isso em algum lugar - simplesmente não o encontrei.
Explicação
fonte
Javascript ES6, 29 bytes
Isso não está ganhando nada, mas é uma solução simples.
fonte
Pyth, 11 bytes
Experimente
Explicação
fonte
Python, 32 bytes
Função recursiva que gera uma cadeia de caracteres separada por espaço com um espaço à esquerda.
Um programa de 34 bytes (Python 2):
fonte
V , 5 bytes (não concorrente)
Experimente online!
Esse idioma é mais novo que o desafio, tornando essa resposta não competitiva. Explicação:
fonte
PowerShell v2 +, 28 bytes
Recebe entrada
$args[0]
, lança como umchar
array, canaliza os caracteres em um loop|%{...}
. Cada iteração, acumulamos$o
através+=
do caractere atual$_
. Essa expressão é encapsulada em parênteses, para que uma cópia seja colocada no pipeline. No final da execução, o pipeline é liberado através doWrite-Output
qual coloca uma nova linha entre os elementos.fonte
PHP, 59 bytes
Versão Online
fonte
Indesejável, desnecessário, oportunista , 9 bytes
fonte