Code Golf Challenge
Eu tenho um problema, meus dedos estão gordos e eu frequentemente juro um problema de digitar um pressionamento de tecla à direita no meu teclado.
Receio que o atraso esteja piorando e piorando com o passar do tempo.
Sopn cada tecla que eu faço; desloque-se para a direita!
Antes, eu gostaria que um programa (ou functipn) autp mudasse cada tecla pressionada de volta para a esquerda.
Certificarei-me de que tomo meu tomo pelo resto do tempo, para não causar confusão.
Objetivo:
Escreva um programa ou função que utilize uma das seguintes teclas verdes em um teclado QWERTY padrão e retorne o caractere da tecla à esquerda.
Condições:
• Você pode supor que a pessoa que está executando este programa está usando um teclado QWERTY como o da foto acima.
• Entrada e Saída não fazem distinção entre maiúsculas e minúsculas, você pode usar qualquer caso (ou uma mistura de combinações de casos) para esse desafio e também pode assumir que todas as entradas estarão em um caso, se desejar.
• Se o seu idioma não tiver como permitir que um usuário insira a tecla Enter por algum motivo, você poderá ignorar o pressionamento de uma tecla para isso.
• Esse desafio é apenas para os valores padrão das teclas, por exemplo, se a 4
tecla for pressionada, você pode assumir que sempre será 4
e nunca$
• Você pode assumir que apenas as teclas verdes serão pressionadas.
Exemplo Input
-> Output
:
S
-> a
4
-> 3
=
-> -
[
->p
Isso é código-golfe , então o programa com o menor número de bytes vence!
]
->[
?Respostas:
Ruby,
76 7169 bytesfonte
Perl 6 ,
878369 bytesExperimente online!
Pensando se existe uma maneira de codificar essa sequência codificada para algo mais curto ...
(Roubou a ideia de regex do GB por -14 bytes.)
fonte
$"
os intervalos, pudéssemos economizar alguns caracteres.Geléia ,
3433 bytesExperimente online!
Como funciona
fonte
Øq
bacana! Eu gosto disso, obrigado!Python 3,
8578 bytes:fonte
lambda x,k="1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm<>?":k[k.find(x)-1]
para reduzir alguns bytesPython , 76 bytes
Experimente online!
Cria um dicionário que leva cada tecla à esquerda, fechando a seqüência de caracteres com sua versão deslocada. A linha inferior é a função, a superior é uma definição.
Usar
translate
para criar um mapeamento deu uma solução mais longa. Experimente online!fonte
Retina ,
5351 bytesExperimente online!
Uma transliteração simples deslocando cada posição do personagem 1 para trás. Tudo, de
1
até,/
é o conjunto de caracteres original, enquanto a parte a seguir é o novo conjunto, usandoo
para indicar o outro conjunto.H
eL
são classes de caracteres especiais para transliteração na retina (mapeamento respectivamente para dígitos hexadecimais e letras maiúsculas), mas, felizmente, ocorrem no teclado dentro de seqüências ordenadas alfabeticamente (FGH
eJKL
), para que possamos evitá-las, colocando-as em intervalos e ganhando assim. 2 bytes.fonte
C ++, 109 bytes
Experimente online!
fonte
TI-Básico, 70 bytes
Duvido que poderia ficar mais curto do que isso ...
PS As fichas de dois bytes são
Str1
,`
,\
,sub(
, einString(
.fonte
V ,
575451 bytes3 bytes salvos graças a @ nmjcman101 por usar em
hxVp
vez do que eu tinha para o teclado multilinhaExperimente online!
<esc>
é0x1b
e<c-r>
é0x12
Nota: isso não suporta a tecla Enter
Contém imprimíveis, então aqui está o hexdump
Explicação
A maior parte do programa gera o teclado.
i
entra no modo de inserção e todos os caracteres a seguir são impressos no buffer. Mas há uma pequena peculiaridade aqui,¬19
insere caracteres entre 1 e 9.O programa sai do modo de inserção no
<esc>
. E então aqui/<c-r>a
ele procura o argumento no buffer. Isso coloca o cursor em cima do caractere encontrado.fonte
hylHVGp
você, você pode fazer o que o @DJMcMayhem fez na questão da motocicletahxVp
. Não sei ao certo por que você coloca oG
arquivo lá, não é tudo uma linha? TambémdhVp
funcionaria.G
desde quando o teclado costumava ser multilinha. Obrigado!PowerShell, 82 bytes
A tecla Enter é suportada, mas não pode ser testada
Read-Host
porque o ato de pressionar Enter sem valor não retorna nada no PowerShell.fonte
Japonês ,
5642 bytesExplicação
Experimente online!
fonte
Java 8, 99 bytes
Explicação:
Experimente aqui.
fonte
c->"`1234567890-=qwertyuiop[]\\asdfghjkl;'\nzxcvbnm,./".replaceAll("(?s).*(.)"+c+".*","$1")
.JavaScript (ES6), 74 bytes
Como
/
não está na minha string,indexOf
retorna-1
, que quando incrementado causa.
a saída. 93 bytes para processar uma sequência:fonte
GNU sed , 72 + 1 (sinalizador r) = 73 bytes
A chave de retorno não pode ser testada, porque o sed by design divide a entrada usando
\n
como delimitador e, em seguida, executa o script quantas vezes houver linhas.Execução de teste: par contínuo de entrada e saída (quando terminar, pressione Ctrl + D ou Ctrl + C)
fonte
05AB1E , 50 bytes
Experimente online!
Explicação:
fonte
Pitão - 56 bytes
Conjunto de Teste .
fonte