Antecedentes
Se le ha asignado la tarea de tomar notas para una reunión. Empiezas a escribir en tu Google Doc, pero no tienes suficiente tiempo durante la reunión para mirar tu teclado mientras escribes.
Afortunadamente para ti, puedes escribir sin mirar tu teclado. Después de la reunión, te das cuenta de que todo lo que escribiste fue una tecla a la izquierda.
El reto
Para este desafío, utilizará las letras, los números y la barra espaciadora del diseño del teclado QWERTY.
Dada una entrada de texto (desde cualquier método de entrada estándar), genera el texto resultante, donde cada carácter se mueve uno a la izquierda en el teclado.
Para la mayoría de las letras, solo mire la letra y traduzca a la letra a la izquierda (se
c
conviertex
, set
convierter
, etc.).Para la letra
q
, traduzca a un carácter de tabulación literal (\t
).Para la letra
a
, habilite el bloqueo de mayúsculas, de modo que se invierta la capitalización del resto de la cadena.Para la letra
z
, escribe en mayúscula la siguiente letra de la cadena.No se requiere traducción para la barra espaciadora.
Preserve las mayúsculas durante la traducción y tenga en cuenta el bloqueo de mayúsculas (si el bloqueo de mayúsculas está habilitado, asegúrese de que el caso sea el opuesto).
Todos los caracteres en la cadena de entrada serán letras, números o un espacio. No se pueden incluir signos de puntuación u otros caracteres.
Casos de prueba
\t
es un carácter de tabulación literal
Hello world -> Gwkki qieks
Code Golf -> Xisw Fikd
Queried apples -> \tyweuws OOKWA
Puntuación
La puntuación más baja en bytes gana. ¡Que te diviertas!
Azerty
->wERT
z
, escriba en mayúscula la siguiente letra de la cadena -> ¿eso significa que solo tenemos que preocuparnos por la mayúscula y no tener que alternar entre dígitos y símbolos? ¿Cuál es la salida esperada para0123456789
,a0123456789
yz0z1z2z3z4z5z6z7z8z9
? (Además, en muchos teclados que no son QWERTY, 'Caps Lock' realmente actúa como 'Shift Lock'. Creo que QWERTY no sigue este patrón, pero debería especificarse para aquellos de nosotros que no estamos familiarizados con él. )Respuestas:
JavaScript (V8) , 271 bytes
Pruébalo en línea! Mi primer código JavaScript de golf. Definitivamente podría ser más corto, pero creo que este es un buen comienzo.
Básicamente, encuentra cada carácter en la
k
cadena y lo reemplaza con el anterior, luego intercambia el caso de todo entre elA
oa
, y elimina todas las ocurrencias deZ
oz
(ya que la tecla shift no hace nada por sí sola).Este debería ser un diseño de teclado QWERTY normal, pero avíseme si no.
fuente
zebras=>wveA
caso de prueba parece estar equivocado. El primeroz
debería hacere
que se imprima una mayúsculaw
. De OP: "Para la letraz
, escribe con mayúscula la siguiente letra de la cadena".Python 3 , 211 bytes
Pruébalo en línea!
Utiliza una cadena de búsqueda en la que el carácter normal y su versión modificada por desplazamiento se agrupan. Para cada carácter en la entrada, volverá a recibir el personaje dos lugares a la izquierda. Cambia las mayúsculas agregando
1
(o-1
si el carácter actual está en mayúsculas) al valor de búsqueda cuando el bloqueo de mayúsculas XOR está activo. Los números no están influenciados por el modificador de bloqueo de mayúsculas.fuente
PHP , 227 bytes
Pruébalo en línea!
He creado una cadena de mapeo (
~1!2@3#4$5%6^7&8*9(0 qwertyuiopasdfghjklzxcvbnm
) que para cada dígito tiene su modo SHIFT a la izquierda y para cada letra tiene la letra / tecla a su izquierda.Doy vueltas sobre los caracteres de entrada y para cada carácter:
a
oA
, el indicador de bloqueo de mayúsculas se invierte (lógico, no).z
oZ
, el indicador de cambio se establece en1
.aAzZ
:$t
.1
,$t
se imprime, de lo contrario, si el dígito es1
,`
se imprime, si el dígito es0
,9
se imprime y de lo contrario,digit-1
se imprime.$t
se imprime en mayúsculas o minúsculas , en función del estado de la bandera de cambio, la bandera de bloqueo de mayúsculas y la carcasa del carácter actual (inferior / superior) . El único caso especial aquí es el carácter de tabulación, que se imprime tal cual.0
poner al final.fuente
Rojo , 218 bytes
Pruébalo en línea!
Actualmente
AaZz
no afecta a los dígitos.fuente
'A pear' -> ' OWe'
C (gcc) , 276 bytes
Gracias a ceilingcat por -33 bytes.
Pruébalo en línea!
fuente
k^=!(l^7)
lugar dek=l^7?k:!k