Sono un robot. Ho comprato questa tastiera per il suo semplice layout rettangolare:
~` !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 =========]
Per stampare un testo umano, devo convertirlo in comandi che i miei manipolatori possono interpretare. Il mio manipolatore sinistro passa sopra la Shiftchiave. Il mio manipolatore destro, all'inizio, passa sopra la ~chiave. I comandi che i miei manipolatori comprendono sono:
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
Scrivi il codice per convertire qualsiasi messaggio ASCII in un elenco di comandi. L'input può contenere qualsiasi numero dei 95 caratteri ASCII stampabili; possibilmente anche personaggi TAB e newline. L'output dovrebbe essere l'elenco dei comandi per i manipolatori.
Quindi, per esempio, per digitare Hello World!
, i comandi sono
SRRRRRRDDPp
sLLLUPp
RRRRRRDPp
Pp
UPp
LLLLDDDPp
SLLLUUUPp
sRRRRRRRPp
LLLLLPp
RRRRRDPp
LLLLLLPp
SLLUUPp
Ho ripristinato i manipolatori allo stato iniziale prima di stampare ogni messaggio.
Esistono alcuni pericoli meccanici che dovrebbero essere evitati mediante un'adeguata programmazione:
- Non è
LRUD
consentito lo spostamento ( ) quandoP
è attivata la stampa ( ) - Nessun inceppamento dei manipolatori: quando un manipolatore è impegnato (
S
oP
), il comando successivo per questo manipolatore dovrebbe essere disimpegnarsi (s
op
) e viceversa Nessun spostamento non necessario: tra ogni due comandi shift (
s
,S
), dovrebbe esserci unP
comandoQuindi, per stampare
~~
, i comandiSPpPp
sono validi, mentreSPpsSPp
non lo sonoNon andare fuori dai limiti: nessun comando di movimento dovrebbe cercare di spostare il manipolatore destro di più di 13 spazi a destra o 4 in fondo alla posizione iniziale (o qualsiasi punto in alto o a sinistra)
Note aggiuntive:
- Premendo un tasto disabilitato (sequenza comandi simile
DDPp
) non si ottiene alcun tasto ed è consentito. - Premere Shift+ Tabnon ha alcun effetto, ma Shift+ Spacee Shift+ Enterhanno lo stesso effetto di senza Shift.
- Premendo in qualsiasi punto della barra spaziatrice il Entertasto ha lo stesso effetto.
- Le chiavi degli spazi bianchi nell'output non hanno alcun significato, ma possono essere utilizzate per formattarlo in modo meraviglioso.
Pp
? Per quanto posso vedere quelli sono sempre una singola azione e nessuno dei due P
o p
possono apparire da solo.