Tôi là người máy. Tôi đã mua bàn phím này vì cách bố trí hình chữ nhật dễ dàng:
~` !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 =========]
Để in văn bản của con người, tôi cần chuyển đổi nó thành các lệnh mà người thao tác của tôi có thể diễn giải. Trình điều khiển bên trái của tôi dao động trên Shiftphím. Thao tác bên phải của tôi, lúc đầu, di chuyển trên ~phím. Các lệnh mà người thao tác của tôi hiểu là:
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
Viết mã để chuyển đổi bất kỳ thông điệp ASCII nào sang danh sách các lệnh. Đầu vào có thể chứa bất kỳ số nào trong số 95 ký tự ASCII có thể in được; cũng có thể là TAB và các ký tự dòng mới. Đầu ra phải là danh sách các lệnh cho các trình thao tác.
Vì vậy, ví dụ, để gõ Hello World!
, các lệnh là
SRRRRRRDDPp
sLLLUPp
RRRRRRDPp
Pp
UPp
LLLLDDDPp
SLLLUUUPp
sRRRRRRRPp
LLLLLPp
RRRRRDPp
LLLLLLPp
SLLUUPp
Tôi đặt lại các thao tác về trạng thái ban đầu trước khi in từng tin nhắn.
Có một số mối nguy cơ học cần tránh bằng cách lập trình đúng:
- Không di chuyển (
LRUD
) được phép khi in (P
) được tham gia - Không gây nhiễu cho các trình thao tác: khi một trình thao tác được tham gia (
S
hoặcP
), lệnh tiếp theo cho trình thao tác này sẽ được giải phóng (s
hoặcp
) và ngược lại Không có sự dịch chuyển không cần thiết: giữa mỗi hai lệnh shift (
s
,S
), cần có mộtP
lệnhVì vậy, để in
~~
, các lệnhSPpPp
là hợp lệ, trong khiSPpsSPp
khôngKhông di chuyển ra khỏi giới hạn: không có lệnh di chuyển nào nên cố gắng di chuyển bộ điều khiển bên phải nhiều hơn 13 khoảng trắng sang phải hoặc 4 xuống dưới cùng của vị trí ban đầu (hoặc bất kỳ vị trí nào ở trên cùng hoặc bên trái)
Ghi chú bổ sung:
- Nhấn một phím bị vô hiệu hóa (chuỗi lệnh như
DDPp
) sẽ không có phím nào được nhấn và được phép. - Nhấn Shift+ Tabkhông có tác dụng, nhưng Shift+ Spacevà Shift+ Entercó tác dụng tương tự như không có Shift.
- Nhấn vào bất kỳ vị trí nào trên thanh không gian và Enterphím có cùng tác dụng.
- Các khóa khoảng trắng trong đầu ra không có ý nghĩa, nhưng có thể được sử dụng để định dạng nó một cách đẹp mắt.
Pp
? Theo như tôi có thể thấy đó luôn là một hành động duy nhất và không P
hoặc p
có thể tự xuất hiện.