Soy un robot. Compré este teclado debido a su diseño rectangular fácil:
~` !1 @2 #3 $4 %5 ^6 &7 *8 (9 )0 _- +=
tab Qq Ww Ee Rr Tt Yy Uu Ii Oo Pp {[ }] \|
Aa Ss Dd Ff Gg Hh Jj Kk Ll :; "' [-enter-]
Zz Xx Cc Vv Bb Nn Mm <, >. ?/
[========= space =========]
Para imprimir texto humano, necesito convertirlo en comandos que mis manipuladores puedan interpretar. Mi manipulador izquierdo se cierne sobre la Shiftllave. Mi manipulador derecho, al principio, se cierne sobre la ~tecla. Los comandos que entienden mis manipuladores son:
S : press the shift key
s : release the shift key
L : move the right manipulator left by 1
R : move the right manipulator right by 1
U : move the right manipulator up by 1
D : move the right manipulator down by 1
P : press the key under the right manipulator
p : release the key by the right manipulator
Escriba código para convertir cualquier mensaje ASCII en una lista de comandos. La entrada puede contener cualquier número de los 95 caracteres ASCII imprimibles; posiblemente también TAB y caracteres de nueva línea. La salida debe ser la lista de los comandos para los manipuladores.
Entonces, por ejemplo, para escribir Hello World!
, los comandos son
SRRRRRRDDPp
sLLLUPp
RRRRRRDPp
Pp
UPp
LLLLDDDPp
SLLLUUUPp
sRRRRRRRPp
LLLLLPp
RRRRRDPp
LLLLLLPp
SLLUUPp
Restablezco los manipuladores al estado inicial antes de imprimir cada mensaje.
Hay algunos riesgos mecánicos que deben evitarse mediante una programación adecuada:
- No se
LRUD
permite mover ( ) cuando se activa la impresión (P
) - Sin atascos de manipuladores: cuando un manipulador está activado (
S
oP
), el siguiente comando para este manipulador debe ser la desactivación (s
op
), y viceversa Sin cambios innecesarios: entre cada dos comandos shift (
s
,S
), debe haber unP
comandoEntonces, para imprimir
~~
, los comandosSPpPp
son válidos, mientras queSPpsSPp
no lo sonNo moverse fuera de los límites: ningún comando de movimiento debe tratar de mover el manipulador derecho más de 13 espacios a la derecha o 4 a la parte inferior de la posición inicial (o cualquier punto en la parte superior o izquierda)
Notas adicionales:
- Al presionar una tecla deshabilitada (secuencia de comandos como
DDPp
) no se presionan teclas y está permitido. - Presionar Shift+ Tabno tiene ningún efecto, pero Shift+ Spacey Shift+ Entertienen el mismo efecto que sin Shift.
- Al presionar cualquier punto de la barra espaciadora, la Entertecla tiene el mismo efecto.
- Las teclas de espacio en blanco en la salida no tienen significado, pero se pueden usar para formatearlo de una manera hermosa.
Pp
? Por lo que yo puedo ver esos son siempre una sola acción y ningunoP
op
puede aparecer por sí sola.Respuestas:
Python 2 ,
338337335331325 bytesPruébalo en línea!
Se mueve directamente de cada personaje al siguiente.
Explicación:
S=[c in K,s][c in' \n']
, comprueba si el siguiente carácter debe estar en mayúsculas o minúsculas. Sic
es un espacio o una nueva línea, el caso sigue siendo el mismo.X=[max(x,12),min(max(x,5),10),p%15]['\n '.find(c)]
. Sic
es un espacio o una nueva línea, se elige la coordenada x más cercana a la actual (ya que las teclas abarcan varias columnas)print'sS'[S]*(s!=S)+'LR'[X>x]*abs(X-x)+'UD'[Y>y]*abs(Y-y)+'Pp'
, imprime el interruptor de mayúsculas y minúsculas, el número de movimientos de coordenadas x, el número de movimientos de coordenadas y, y finalmentePp
, para cada personajeVersión más corta, si no se requiere la ruta más corta:
Python 2 ,
294293291287281 bytesPruébalo en línea!
fuente
space
/enter
?o
)JavaScript (ES6), 263 bytes
Toma entrada como una matriz de caracteres.
Pruébalo en línea!
fuente
.COM código operativo,
108104bytesTome la entrada del teclado con el bloqueo de mayúsculas desactivado
Aunque mal golf
fuente
Take input from keyboard
¿Cómo está nuestro amigo robot, que está pidiendo ayuda para usar su teclado, para utilizar este programa?