Emacs, 26 byte (có thể + 10 = 36 hoặc - 2 = 24)
Chìa khóa bổ sung cần thiết trong câu trả lời này là Esc. Đây là một nửa của bàn phím vẫn còn nguyên vẹn, nhưng không được đề cập trong câu hỏi vì một số lý do, vì vậy có thể hoặc không thể đưa ra một hình phạt cho điểm số. ( EscVà Alttương đương trong Emacs; Altlà cũng trên nửa còn nguyên vẹn của bàn phím nhưng không được đề cập trong câu hỏi, nhưng phải được tổ chức chứ không phải khai thác vì vậy tôi không thể sử dụng nó như là chìa khóa phụ của tôi Nó sẽ tiết kiệm hai byte. mặc dù, bởi vì nó có mã hóa ngắn hơn Esc.)
Bản thân chương trình (dấu phẩy phân định ranh giới giữa các byte theo định dạng trên dây mà Emacs sử dụng để chấp nhận đầu vào của nó):
W, S, Esc, $, D, A, Ctrl- T, S, R, W, D, Esc, $, 5, Ctrl- Q, 5, f, Ctrl- X, r, Ctrl- Space, 1, Ctrl- X, r, g, 1, Ctrl-T
Mã hóa này dưới dạng byte thô, để chứng minh số byte:
00000000: 5753 1b24 4441 1453 5257 441b 2435 1135 WS.$DA.SRWD.$5.5
00000010: 6618 7200 3118 7267 3114 f.r.1.rg1.
(Lưu ý: một số chi tiết có thể thay đổi dựa trên cách Emacs được định cấu hình; câu trả lời này yêu cầu trích dẫn-char-radix được đặt thành 16 và để Emacs sử dụng từ điển kiểm tra chính tả mặc định trên hệ thống tiếng Anh của tôi. giống như cài đặt cấu hình hợp lý, nhưng có thể bản sao Emacs của bạn có thể được cấu hình khác. Một từ điển khác có thể vẫn cung cấp chương trình 26 byte, nhưng có thể cần phải sử dụng các lỗi chính tả khác nhau để có thể chấp nhận các chỉnh sửa mà chúng tôi muốn phím không đạn.)
Giải trình
Tôi không chắc liệu nó có ảnh hưởng gì đến cuộc chiến biên tập hay không, nhưng Emacs dường như đánh bại vim ít nhất là trong trường hợp của câu hỏi này. Emacs khá phù hợp với trình soạn thảo golf được đo bằng byte, vì nó phụ thuộc rất nhiều vào các hợp âm chiếm nhiều phím bấm nhưng chỉ có một byte duy nhất (do đó, một chương trình Emacs thường gõ chậm hơn chương trình Vim tương đương, nhưng ngắn hơn trên đĩa). Ngoài ra, hầu hết các lệnh Emacs quan trọng nhất nằm ở góc dưới bên trái của bàn phím, gần với Ctrl, rất hữu ích với một câu hỏi như câu hỏi này.
"Bạn có thể giả sử rằng bạn đã mở trình soạn thảo trình biên dịch / trình biên dịch nguồn trước khi các viên đạn xuất hiện. Đáng buồn là bạn không viết bất cứ điều gì trong đó trước khi bàn phím bị đánh.", Vì vậy tôi giả sử rằng chúng tôi có một tệp trống mở trong Emacs và cần phải nhập mật khẩu vào nó (Chúng ta cần lưu tệp sau đó và có thể thoát Emacs, nhưng các byte không được tính trong câu trả lời của người khác nên tôi cũng không đếm chúng ở đây. Hoàn toàn có thể sử dụng phía bên trái của bàn phím, mặc dù, Ctrl- X, Ctrl- S, Ctrl- X, Ctrl- C.)
Lấy một lệnh (hoặc khối các lệnh tương tự) tại một thời điểm:
- W, S: Nhập
WS
vào tài liệu.
- Esc, $: Gọi trình kiểm tra chính tả.
WS
không phải là một từ thực sự, nhưng nó tìm thấy rất nhiều từ hai chữ cái tương tự.
- D: Sử dụng trình kiểm tra chính tả, sửa
WS
thành PS
. (Khi trình kiểm tra chính tả được gọi bằng cách sử dụng Alt- $, như đã xảy ra ở đây ( Escvà Alttương đương với Emacs), nó chỉ kiểm tra một từ, do đó, nó sẽ tắt sau khi thực hiện việc này.)
- A: chèn
A
, cho PSA
.
- Ctrl- T: Hoán đổi hai ký tự trước, cho
PAS
.
- S, R, W, D: Loại
SRWD
, hiến PASSRWD
.
- Esc, $, 5: Chúng tôi gọi kiểm tra chính tả một lần nữa, bởi vì chúng tôi muốn sửa sai chính tả của chúng tôi
PASSRWD
vào PASSWORD
. Lưu ý rằng chúng ta không thể đoán từ mà chúng ta muốn trong lần thử đầu tiên, giống như từ đó PASSWRD
, bởi vì chìa khóa để chấp nhận từ thực gần nhất là từ 0mà chúng ta không thể nhấn. Kết quả là, lỗi chính tả cực đoan hơn một chút PASSRWD
được sử dụng để đẩy từ chúng ta muốn vào vị trí 5, nơi chúng ta có thể chấp nhận nó.
- Ctrl- Q, 5, f: Chèn nhân vật với mã ký tự U + 5f, tức là
_
. Bây giờ tài liệu sẽ đọc PASSWORD_
(hoặc sẽ khi chúng ta bắt đầu nhập lệnh tiếp theo; trước đó, dấu gạch dưới không xuất hiện trong trường hợp chúng ta nhập một chữ số hex khác).
- Ctrl- X, r, Ctrl- Space, 1: Cất giữ vị trí con trỏ hiện hành (tương ứng với sự bắt đầu của tập tin) trong sổ đăng ký 1. Đối với một số lý do kỳ lạ, đây là 1 lập chỉ mục, vì vậy (đã viết 9 nhân vật cho đến nay) là con trỏ tại vị trí
10
.
- Ctrl- X, r, g, 1: Sao chép nội dung của đăng ký 1 vào tài liệu. Bây giờ nó đọc
PASSWORD_10
.
- Ctrl- T: Hoán đổi hai ký tự trước con trỏ. Bây giờ chúng tôi có
PASSWORD_01
, giống như câu hỏi yêu cầu.
Nếu chúng ta được phép sử dụng Alt, có lẽ chúng ta có thể mã hóa lệnh "gọi trình kiểm tra chính tả" dưới dạng một byte a4
thay vì đánh vần là 1b
24
; nó xuất hiện hai lần, do đó dẫn đến hai byte tiết kiệm. (Hầu hết các thiết bị đầu cuối hiện đại sử dụng 1b
24
làm mã hóa cho Alt- $để tránh xung đột với UTF-8, nhưng đôi khi a4
mã hóa cũng gặp phải, đôi khi có sẵn dưới dạng tùy chọn cấu hình.)
Tiết kiệm byte có thể có thể liên quan đến lỗi chính tả golfier. PSASWRD
sẽ là một byte ngắn hơn để gõ, nhưng thật không may, trình kiểm tra chính tả dường như không có khả năng lượm lặt được PASSWORD
điều đó, vì vậy đây PASSRWD
là cách tiếp cận tốt nhất mà tôi tìm thấy cho đến nay. Cách tiếp cận dựa trên đăng ký để đạt 10
được cũng vô cùng khó sử dụng, nhưng không có nhiều cách tạo số từ hư không trong Emacs, và 0
là một nhân vật đau đớn để nắm bắt bằng cách khác. (Ít nhất đã có một vài sự trùng hợp đáng ngạc nhiên hữu ích: con trỏ chỉ xảy ra với kết thúc ở vị trí 10
, trong đó có một 0
, ngay khi cần thiết, và thực tế là Emacs chấp nhận dự phòng g
hoạt động đăng ký để chèn nội dung của một thanh ghi vào tài liệu , ngoài việc trực quan hơni
.)