Dada una palabra (o cualquier secuencia de letras) como entrada, debe interpolar entre cada letra de manera que cada par de letras adyacentes en el resultado también sea adyacente en un teclado QWERTY, como si escribiera la entrada caminando en un teclado gigante. Por ejemplo, ' sí ' podría convertirse en ' y tr es ', ' cat ' podría convertirse en ' c xz a wer t '.
Reglas:
Este es el formato de teclado que debe usar:
q
w
e
r
t
y
u
i
o
p
a
s
d
f
g
h
j
k
l
z
x
c
v
b
n
m
Cualquier par de teclas que se toque en este diseño se considera adyacente. Por ejemplo, 's' y 'e' son adyacentes, pero 's' y 'r' no lo son.
- La "palabra" de entrada consistirá en cualquier secuencia de letras. Solo tendrá letras, por lo que no debe tratar con caracteres especiales.
- La entrada puede estar en cualquier forma conveniente: stdin, una cadena, una lista, etc. El caso de las letras no importa; puedes tomar lo que sea más conveniente.
- El resultado puede ser de cualquier forma conveniente: stdout, una cadena, una lista, etc. Las mayúsculas y minúsculas no importan, y no necesitan ser consistentes.
- Cualquier ruta en el teclado es válida, excepto que no puede volver a cruzar la letra anterior antes de llegar a la siguiente. Por ejemplo, ' hola ' podría convertirse en ' h j i ' o ' h jnbgyu i ', pero no ' h b h u i '.
- Una carta no es adyacente a sí misma, por lo que ' encuesta ' no puede convertirse en ' encuesta '. En cambio, tendría que convertirse en algo así como ' pol k l '.
- No se permiten letras de salida antes o después de la palabra. Por ejemplo, ' was ' no puede convertirse en 'tre was ' o ' was dfg'.
Este es el código de golf, gana la respuesta más corta en bytes.
dewqwerty
es un camino válido parady
. ¿Podrías confirmar eso?Respuestas:
Japt
-g
, 23 bytesPruébalo en línea!
Toma entrada como una matriz de letras mayúsculas. Muy similar a las otras respuestas de lo contrario.
Explicación:
fuente
Python 2 , 83 bytes
Pruébalo en línea!
Camina todo el teclado hasta que se escribe la palabra.
fuente
import re
viene después del código, no antes?re.findall
se evaluaría cuando se ejecute el lambda, por lo que importar después de la definición del lambda está bien. Dicho esto, es más claro importar antes, simplemente no hay necesidad de hacerloPython 2 , 274 bytes (solución óptima)
296300302308315319324327328430432bytes-4 bytes gracias a mypetlion
Pruébalo en línea!
Esta solución ofrece la salida más corta posible. El teclado se transforma en un gráfico utilizado para encontrar la ruta más corta para calcular la cadena de salida:
fuente
JavaScript (ES6), 70 bytes
La misma estrategia que TFeld.
Pruébalo en línea!
fuente
05AB1E , 43 bytes
No es el lenguaje correcto para este desafío, ya que no puede usar expresiones regulares como las otras respuestas.
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente
Carbón , 48 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Consigue la cuerda
qwertyuioplkmjnhbgvfcdxsza
.Encuentra la posición del primer carácter de la palabra. Este índice normalmente es uno más allá del carácter que se acaba de alcanzar, pero este valor falsifica la primera iteración del bucle para imprimir el primer carácter de la palabra.
Pase sobre cada personaje.
Calcule cuántos caracteres imprimir para incluir el siguiente carácter de la palabra y el bucle tantas veces.
Imprima el siguiente carácter indexado cíclicamente e incremente el índice.
fuente