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 ninguno P
o p
puede aparecer por sí sola.