Chúng ta đều biết rằng các lập trình viên có xu hướng lười biếng. Để tối đa hóa thời gian rảnh của bạn, bạn quyết định viết một chương trình tạo ra số lượng tổ hợp phím tối thiểu cho văn bản được đưa vào đó.
Đầu vào : Văn bản phải được chuyển đổi thành tổ hợp phím. Bạn có thể quyết định cách nhập văn bản (STDIN / đọc từ tệp được cung cấp trong các đối số)
Đầu ra : Các hành động cần thiết theo định dạng sau:
- Chúng phải được đánh số
H
nó: Nhấn một phím và phát hành ngay lập tứcP
ress: Nhấn phím và không nhả phím (điều này sẽ không bao giờ tối ưu khi phím đượcR
rút ra làm tổ hợp phím tiếp theo)R
elease: Phát hànhP
chìa khóa
Ví dụ :
Đầu vào:
Hello!
Đầu ra:
Một giải pháp ngây thơ sẽ là:
1 P Shift
2 H h
3 R Shift
4 H e
5 H l
6 H l
7 H o
8 P Shift
9 H 1
10 R Shift
Điều này sẽ hiệu quả hơn:
1 P Shift
2 H h
3 H 1
4 R Shift
5 H Left
6 H e
7 H l
8 H l
9 H o
Xung quanh:
- Trình chỉnh sửa sử dụng phông chữ đơn cách
- Văn bản được bọc mềm ở 80 ký tự
- Mũi tên lên và Mũi tên xuống bảo vệ cột, ngay cả khi có các dòng ngắn hơn ở giữa
- Bảng tạm được coi là trống
- Khóa số được cho là được kích hoạt
- Khóa mũ được coi là bị vô hiệu hóa
- Caps lock chỉ hoạt động cho các chữ cái (tức là không có Shift Lock)
Phím nóng / Phím tắt :
- Home: Nhảy đến đầu dòng hiện tại
- End: Nhảy đến cuối dòng hiện tại
- Ctrl+ A: Đánh dấu mọi thứ
- Ctrl+ C: Sao chép
- Ctrl+ X: Cắt
- Ctrl+ V: Dán
- Shift+ Di chuyển con trỏ: Đánh dấu
- Ctrl+ F: Mở hộp thoại tìm kiếm.
- Khớp văn bản ngu ngốc, không có biểu thức chính quy
- Trường hợp nhạy cảm
- Tìm kiếm bao quanh
- Nhập văn bản một dòng cho tìm kiếm
- Đầu vào được điền sẵn với lựa chọn hiện tại, trừ khi có một dòng mới ở giữa, đầu vào hoàn chỉnh được chọn
- Sao chép / dán hoạt động như bình thường
- Nhấn Enterthực hiện tìm kiếm, chọn kết quả khớp đầu tiên sau vị trí con trỏ hiện tại
- F3: Lặp lại tìm kiếm cuối cùng
- Ctrl+ H: Mở hộp thoại thay thế
- Khớp văn bản ngu ngốc, không có biểu thức chính quy
- Trường hợp nhạy cảm
- Thay thế tất cả, với bọc xung quanh
- Nhập văn bản một dòng
- Đầu vào tìm kiếm được điền sẵn với lựa chọn hiện tại, trừ khi có một dòng mới ở giữa, đầu vào hoàn chỉnh được chọn
- Đầu vào thay thế trống
- Sao chép / dán hoạt động như bình thường
- Tab nhảy đến đầu vào thay thế
- Nhấn Enterthực hiện thay thế tất cả. Con trỏ được đặt sau lần thay thế cuối cùng
Quy tắc :
- Các giải pháp phải là một chương trình hoàn chỉnh để biên dịch / phân tích cú pháp và thực thi mà không cần sửa đổi gì thêm
- Bàn phím hiển thị ở trên là bàn phím để sử dụng
- Không bắt buộc phải xử lý các ký tự không thể gõ với nó
- Mỗi khóa phải được phát hành vào cuối
- Con trỏ không cần ở cuối tập tin ở cuối
Ghi điểm :
Điểm của bạn là tổng số lượng hành động cần thiết để nhập các văn bản sau. Người chiến thắng là giải pháp có số điểm thấp nhất. Sử dụng giải pháp ngây thơ của tôi, tôi nhận được 1371 + 833 + 2006 = 4210
. Đánh nó đi Tôi sẽ chọn một người chiến thắng trong hai tuần.
1 giải pháp ngây thơ của tôi
number = 1
H = (char) -> console.log "#{number++} H #{char}"
P = (char) -> console.log "#{number++} P #{char}"
R = (char) -> console.log "#{number++} R #{char}"
strokes = (text) ->
shiftActive = no
for char in text
if /^[a-z]$/.test char
if shiftActive
R "Shift"
shiftActive = no
H char
else if /^[A-Z]$/.test char
unless shiftActive
P "Shift"
shiftActive = yes
H char.toLowerCase()
else
table =
'~': '`'
'!': 1
'@': 2
'#': 3
'$': 4
'%': 5
'^': 6
'&': 7
'*': 8
'(': 9
')': 0
'_': '-'
'+': '='
'|': '\\'
'<': ','
'>': '.'
'?': '/'
':': ';'
'"': "'"
'{': '['
'}': ']'
if table[char]?
unless shiftActive
P "Shift"
shiftActive = yes
H table[char]
else
H switch char
when " " then "Space"
when "\n" then "Enter"
when "\t" then "Tab"
else
if shiftActive
R "Shift"
shiftActive = no
char
R "Shift" if shiftActive
input = ""
process.stdin.on 'data', (chunk) -> input += chunk
process.stdin.on 'end', -> strokes input
2 sự lặp lại dễ dàng
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
3 sự lặp lại phức tạp hơn
We're no strangers to love
You know the rules and so do I
A full commitment's what I'm thinking of
You wouldn't get this from any other guy
I just wanna tell you how I'm feeling
Gotta make you understand
Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you
We've known each other for so long
Your heart's been aching but
You're too shy to say it
Inside we both know what's been going on
We know the game and we're gonna play it
And if you ask me how I'm feeling
Don't tell me you're too blind to see
Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you
Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you
(Ooh, give you up)
(Ooh, give you up)
(Ooh)
Never gonna give, never gonna give
(Give you up)
(Ooh)
Never gonna give, never gonna give
(Give you up)
We've know each other for so long
Your heart's been aching but
You're too shy to say it
Inside we both know what's been going on
We know the game and we're gonna play it
I just wanna tell you how I'm feeling
Gotta make you understand
Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you
Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you
Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you
Bạn có thể sử dụng chương trình phát lại do tôi viết để kiểm tra các giải pháp của bạn (Lưu ý: Nó không hỗ trợ Tìm kiếm / Thay thế, mọi thứ khác sẽ hoạt động).