Dada la siguiente entrada:
- Un número entero
n
donden > 0
. - Una cadena
s
dondes
no está vacía ys~=[0-9A-Z]+
(solo mayúsculas alfanuméricas).
Usando un teclado QWERTY simplificado estándar (como se muestra a continuación):
1234567890
QWERTYUIOP
ASDFGHJKL
ZXCVBNM
Realice la siguiente operación:
- Encuentra la fila original en la que se encuentra cada personaje en el teclado.
- Reemplace la letra con el equivalente desplazado correcto
n
basado en su posición original + n.- EG
s="AB"
yn=2
:A
se convertiríaD
yB
se convertiríaM
.
- EG
- Si
keyboard_row[position + n] > keyboard_row.length
, vuelve al inicio.- EG
s="0P"
yn=2
:0
se convertiría2
yP
se convertiríaW
.
- EG
Ejemplos:
f("0PLM",1) = 1QAZ
f("ZXCVB",2) = CVBNM
f("HELLO",3) = LYDDW
f("0PLM",11) = 1QSV
f("0PLM",2130) = 0PHX
Reglas
- Este es el código de golf , el menor recuento de bytes gana.
Esto es un poco más difícil de lo que parece a primera vista.
Respuestas:
Jalea , 13 bytes
Pruébalo en línea!
Cómo funciona
fuente
Python 2 , 110 bytes
Pruébalo en línea!
Esto utiliza una cadena lo suficientemente grande (99 copias de cada fila) y el MCM entre las longitudes de las filas (630) para encontrar la sustitución correcta evitando la corrección individual entre cada fila.
fuente
Java 8,
159158bytes-1 byte gracias a @ OlivierGrégoire que modifica la matriz de entrada en lugar de imprimir directamente.
Explicación:
Pruébalo en línea.
fuente
char[]
.Retina , 49 bytes
Pruébalo en línea! Toma entrada
n
ys
en líneas separadas. Explicación:Repite
n
veces.Desplaza todos los caracteres una tecla a la derecha.
Eliminar
n
.fuente
JavaScript (ES6),
10199 bytesToma entrada en la sintaxis de curry
(s)(n)
. Funciona con matrices de personajes.Casos de prueba
Mostrar fragmento de código
¿Cómo?
Buscamos la posición p de cada carácter de la entrada dentro de una cadena S donde las filas del teclado están intercaladas: los primeros 4 caracteres son '1QAZ' (primera columna del teclado), los siguientes 4 caracteres son '2WSX' (segunda columna del teclado) y así sucesivamente. Las posiciones no utilizadas se rellenan con guiones bajos y las últimas simplemente se descartan.
Esto nos permite identificar fácilmente la fila con p mod 4 y elimina la necesidad de separadores explícitos entre las filas.
Avanzamos por 4n posiciones, aplicamos el módulo correcto para esta fila (40, 40, 36 y 28, respectivamente) y recoger el carácter de sustitución encontrado en esta nueva posición en S .
fuente
Jalea , 18 bytes
Pruébalo en línea!
fuente
C,
152149 bytes¡Gracias a @gastropner por guardar tres bytes!
Pruébalo en línea!
Desenrollado:
fuente
for(j=l;j--;)
pero no sé por qué sin ningún otro cambio. Aún así, debería llevarte a 149.Rojo , 152 bytes
Pruébalo en línea!
Sin golf:
fuente
Haskell , 99 bytes
Pruébalo en línea!
fuente
s#n= ...
lugar de lof(s,n)= ...
cual es solo una notación de ejemplo utilizada para los ejemplos.Perl 5 , 94 + 1 (
-p
) = 95 bytesPruébalo en línea!
fuente
Japt, 20 bytes
Corriendo por la puerta de la cena, así que más golf y una explicación a seguir.
Intentalo
fuente
Perl,
59585756 bytesIncluye
+
para-p
Dé entrada en STDIN como 2 líneas, primero la cadena, luego la repetición
fuente
Perl 5 , 85 bytes
Código de 84 bytes + 1 para
-p
.Pruébalo en línea!
fuente
Limpio ,
144119 bytesPruébalo en línea!
Función lambda con la firma
Int ![Char] -> [Char]
fuente
Ruby , 101 bytes
Pruébalo en línea!
Sinceramente, estoy un poco decepcionado de que no podría mejorar con los métodos "más inteligentes". Lo más cerca que estuve fue en la línea de
para una ganancia neta de 7 caracteres.
fuente