fundo
Você recebeu a tarefa de fazer anotações para uma reunião. Você começa a digitar no Google Doc, mas não tem tempo suficiente durante a reunião para olhar o teclado enquanto digita.
Felizmente para você, você pode digitar sem olhar para o teclado. Após a reunião, você percebe que tudo o que digitou foi uma chave à esquerda.
O desafio
Para esse desafio, você usará as letras, números e barra de espaço do layout do teclado QWERTY.
Dada a entrada de texto (de qualquer método de entrada padrão), imprima o texto resultante, onde cada caractere é movido um para a esquerda no teclado.
Para a maioria das letras, basta olhar para a letra e traduzi-la para a letra à esquerda (
c
torna-sex
,t
torna-ser
, etc.).Para letra
q
, traduza para um caractere de tabulação literal (\t
).Para letra
a
, ative caps lock, para que a capitalização do restante da string seja invertida.Para letra
z
, coloque a próxima letra em maiúscula.Nenhuma tradução é necessária para a barra de espaço.
Preserve a capitalização durante a tradução e lembre-se do caps lock (se o caps lock estiver ativado, verifique se o caso é o oposto).
Todos os caracteres na sequência de entrada serão letras, números ou um espaço. Nenhuma pontuação ou outros caracteres podem ser incluídos.
Casos de teste
\t
é um caractere de tabulação literal
Hello world -> Gwkki qieks
Code Golf -> Xisw Fikd
Queried apples -> \tyweuws OOKWA
Pontuação
A menor pontuação em bytes vence. Diverta-se!
Azerty
->wERT
z
, coloque em maiúscula a próxima letra na sequência -> isso significa que precisamos apenas nos preocupar com letras maiúsculas e não ter que alternar entre dígitos e símbolos? Qual é a saída esperada para0123456789
,a0123456789
ez0z1z2z3z4z5z6z7z8z9
? (Além disso, em muitos teclados não-QWERTY, 'Caps Lock' realmente funciona como um 'Shift Lock'. Acredito que o QWERTY não siga esse padrão, mas deve ser especificado para aqueles que não estão familiarizados com ele. )Respostas:
JavaScript (V8) , 271 bytes
Experimente online! Meu primeiro código JavaScript de golfe. Definitivamente poderia ser mais curto, mas acho que este é um bom começo.
Ele basicamente encontra cada caractere na
k
string e o substitui pelo anterior, depois troca o caso de tudo entreA
or oua
remove todas as ocorrências deZ
orz
(como a tecla shift não faz nada por si só).Esse deve ser um layout de teclado QWERTY normal, mas me informe se não.
fonte
zebras=>wveA
o caso de teste parece estar errado. O primeiroz
deve fazere
com que imprima uma letra maiúsculaw
. Do OP: "Para letraz
, coloque a próxima letra em maiúscula na cadeia."Python 3 , 211 bytes
Experimente online!
Usa uma sequência de pesquisa na qual o caractere normal e sua versão modificada por turno são agrupados. Para cada caractere na entrada, ele recuperará o caractere dois lugares à esquerda. Altera a capitalização adicionando
1
(ou-1
se o caractere atual estiver em maiúsculas) ao valor da pesquisa quando o shift XOR caps lock estiver ativo. Os números não são influenciados pelo modificador caps lock.fonte
PHP , 227 bytes
Experimente online!
Eu criei uma string de mapeamento (
~1!2@3#4$5%6^7&8*9(0 qwertyuiopasdfghjklzxcvbnm
) que para cada dígito tem o modo SHIFT à esquerda e para cada letra tem a letra / tecla à esquerda.Eu faço um loop sobre os caracteres de entrada e para cada caractere:
a
ouA
, o sinalizador caps lock será revertido (não é lógico).z
ouZ
, o sinalizador de deslocamento está definido como1
.aAzZ
:$t
.1
,$t
for impresso, caso contrário, se o dígito for1
,`
será impresso, se o dígito for0
,9
será impresso e, caso contrário,digit-1
será impresso.$t
será impresso em letras minúsculas ou maiúsculas. O único caso especial aqui é o caractere de tabulação, que é impresso como está.0
no final.fonte
Vermelho , 218 bytes
Experimente online!
Atualmente
AaZz
não afetam dígitos.fonte
'A pear' -> ' OWe'
C (gcc) , 276 bytes
Graças ao ceilingcat por -33 bytes.
Experimente online!
fonte
k^=!(l^7)
vez dek=l^7?k:!k