Một công ty cáp nổi tiếng nào đó có tính năng 'Tìm kiếm chương trình' hơi vụng về, hoạt động thông qua điều khiển từ xa. Nó mất nhiều nút đẩy; Vì vậy, là một người ngưỡng mộ nền kinh tế của chuyển động, tôi nghĩ tôi sẽ tìm kiếm sự giúp đỡ của một lập trình viên để giảm thiểu số lượng chuyển động ngón tay mà tôi phải thực hiện.
Tính năng Tìm kiếm Craptastic có bố cục gồm các ô có thể chọn, 1 hàng 3 ô theo sau là 6 hàng 6 ô, trông giống như sau:
del spa sav
A B C D E F
G H I J K L
M N O P Q R
S T U V W X
Y Z 0 1 2 3
4 5 6 7 8 9
Có các ô cho mỗi chữ cái A-Zvà spađược sử dụng để thêm khoảng trắng vào chuỗi tìm kiếm. delđược cho là được sử dụng để xóa một ký tự; và savđược dùng để lưu chuỗi tìm kiếm. Chúng tôi sẽ bỏ qua các chức năng thực tế cho thách thức này; nhưng các tế bào vẫn có thể lựa chọn cho mục đích của chúng tôi.
Chúng tôi bắt đầu với một chuỗi tìm kiếm trống và Aô được chọn; và chúng tôi sử dụng các nút mũi tên trái, phải, lên và xuống để thay đổi ô đã chọn. Khi nhấn phím 'OK' trung tâm, ký tự trong ô đã chọn sẽ được thêm vào chuỗi tìm kiếm. Để thuận tiện, chúng tôi sẽ sử dụng <, >, ^, vvà _cho trái, phải, lên, xuống và OK, tương ứng.
Đối với các chữ cái và số, hành động của các nút định hướng rất đơn giản. Không có "bao quanh"; ví dụ, nếu ô hiện tại là G, thì <không có hiệu lực.
Vì vậy, để nhập chuỗi tìm kiếm BIG, chúng ta có thể sử dụng chuỗi
>_>v_<<_
(ban đầu >là bắt buộc để di chuyển chúng tôi từ ô bắt đầu mặc định Asang ô B). Ngoài ra, tất nhiên chúng ta có thể sử dụng >_v>_<<_; nhưng lưu ý không có chuỗi ngắn hơn 8 phím có thể thực hiện công việc.
Bây giờ vì hàng trên cùng chỉ có ba ô, hành động có một chút khác biệt và làm phức tạp mọi thứ một chút:
Đầu tiên, nếu ô được chọn nằm ở hàng chữ cái trên cùng A-F, ^phím sẽ di chuyển ô được chọn ngay phía trên; để A,Bđi đến del, C,Dđi spavà E,Fđi đến sav.
Mặt khác, nếu ô được chọn là 'del', vphím sẽ di chuyển ô đã chọn sang Avà >phím tạo ra ô được chọn spa. vPhím tương tự di chuyển ô đã chọn từ spađến Cvà savsang E.
Điều này có nghĩa là, ví dụ, nếu bạn hiện đang ở Bô, trình tự ^vkhông đưa bạn trở lại Bô; thay vào đó nó đưa bạn đến phòng Agiam.
Và bắt đầu từ Aô, chuỗi v>>^di chuyển chúng ta đến Cô; trong khi trình tự ^>>vdi chuyển chúng ta đến Etế bào.
Các thách thức
Với một chương trình truyền hình hoặc tiêu đề phim s, bao gồm bằng các nhân vật trong A-Z, 0-9và space, chương trình của bạn / chức năng nên một đầu ra của chuỗi bấm phím có độ dài tối thiểu để nhập snhư chuỗi tìm kiếm từ trạng thái bắt đầu từ năm Craptastic thời trang.
Đầu ra của bạn phải là một chuỗi hoặc một danh sách các giá trị riêng biệt đại diện cho một chuỗi lên, xuống, phải, trái và OK; do đó, bạn không bị giới hạn trong bộ ký tự <>^v_(ví dụ: udrl*hoặc một danh sách có các phần tử nguyên 0,1,2,3,4 sẽ là các lựa chọn thay thế chấp nhận được, miễn là bạn nói rõ lược đồ của bạn là gì).
Đây là môn đánh gôn ; những điều cấm kị thông thường được áp dụng. Có thể tỷ lệ cược là bao giờ có lợi cho bạn cho mỗi ngôn ngữ.
Các trường hợp thử nghiệm
Dưới đây là các đầu vào và một câu trả lời có thể chấp nhận được (các trình tự khác nhau khác cũng sẽ đúng, nhưng phải có độ dài tối đa của các ví dụ được cung cấp).
(Tôi đăng lại bàn phím ở đây để người ta có thể dễ dàng chơi hơn, nếu đó không phải là ...)
del spa sav
A B C D E F
G H I J K L
M N O P Q R
S T U V W X
Y Z 0 1 2 3
4 5 6 7 8 9
BIG >_>v_<<_
THE OFFICE >vvv_^^_>>>^_^<_vvv_>>>^^__<<<v_^_>>_
FARGO ^>>v>_^<<v_^>>v>vv_<<<<<^_>>v_
BUFFY >_>vvv_>>>^^^__^<<vvvvv_
DALLAS >>>_<<<_^>>v>v__^^<<v_vvv_
THX1138 >vvv_^^_>>>>vv_<<v__>>_<v_
ON DEMAND >>vv_<_^^^>_v>_>_<<<<vv_^^_>vv_>>^^_
NEWS RADIO >vv_>>>^^_vvv_<<<<_^^^^>_>vvv>_^^^<<v_>>>_<v_v_
ROOM 909 ^>>v>vv_<<<__<<_^^^>_>vvvvvv>_<<<^_>>>v_
delvà savvô dụng ở đây?
delvà savkhông có chức năng nếu 'OK' được sử dụng khi chúng được chọn; nhưng điều đó sẽ lãng phí một phím nhấn.
FAkhông đi thẳng mà lên xuống