O desafio:
Dada qualquer entrada que possa ser digitada em um teclado, mova o texto por N caracteres.
Aqui está o teclado QWERTY a ser usado. Você pode ignorar as teclas modificadoras (Shift, Caps, Enter, Delete e Tab). Quando você alcança um lado (por exemplo |
), volta para trás, o que |
acontece com Q
if N = 1
.
Os espaços não precisam ser movidos (eles retornam ao espaço à medida que você pula os modificadores). Se shift foi usado para digitar o caractere (por exemplo, !
e @
), o caractere alterado também deve ser digitado usando shift (ou seja, !
passa a @
não 2
se N = 1
).
Os teclados do Reino Unido são diferentes disso, mas use-o para que possamos comparar.
Entrada:
Qualquer frase que possa ser digitada no teclado acima, seguida por um número inteiro positivo. Não há um máximo para o tamanho desse número inteiro.
Resultado:
A mesma frase, deslocada por N.
Exemplos:
My name is Tim 3
?o .f/y [g I[/
Hello World 7
Spgge Oe[g;
I Wi5h I h4d b3773r C@d3ing ski{{s 3
{ T[8l { l7h ,6006u N%h6[.k g'[QQg
Isso é código de golfe, então o código mais curto vence.
N<= 13
você precisará mudar no máximo 13 para retornar ao personagem original?Hello World 7
exemplo não deveria serSpgge Oe[g;
? Os doiso
devem mapear para o mesmo personagemRespostas:
C, 217 bytes
Versão legível com espaço em branco, inclui, etc:
O código praticamente fala por si. Apenas uma tabela de pesquisa que mapeia de cada caractere para o próximo caractere, que é aplicado o número especificado de vezes. Grande parte do código é, na verdade, para analisar o número da entrada.
fonte
05AB1E , 61 bytes
-1 byte graças a Kevin Cruijssen
Experimente online!
fonte
Pitão, 126 bytes
Experimente on-line: Demonstration or Test Suite
Explicação:
fonte
Python 3, 311 bytes
fonte
" " for c in " "
Python 3,
271255 bytesLinha de base, quase não-destruída, usada para criar as palavras alteradas na pergunta.
Explicação:
fonte
JavaScript (ES6), 200
216Usando cadeias de modelo, as novas linhas são significativas e contadas.
Nota sobre
replace
: os dois trechosstring.split('x').map(w=>...)
estring.replace(/[^x]+/g,w=>...)
são maneiras igualmente válidas de executar uma função para cada parte de uma sequência, usando um separador. O uso de uma nova linha como separador é útil à medida que a regexp de substituição se torna/.+/g
, porque o ponto corresponde a qualquer linha que não seja nova. E usando seqüências de modelo, as novas linhas não têm custo extra.fonte
CJam, 107 bytes
Experimente on-line no intérprete CJam .
Como funciona
fonte
Geléia , 67 bytes
Experimente online!
Um link diádico que toma a string como argumento à esquerda e o número de lugares a serem deslocados como argumento à direita.
fonte
Python 2 , 194 bytes
Experimente online!
fonte