Emacs 26 ไบต์ (อาจเป็น +10 = 36 หรือ - 2 = 24)
Escคีย์พิเศษที่จำเป็นในคำตอบนี้อยู่ นี่เป็นครึ่งหนึ่งของแป้นพิมพ์ที่ยังคงเหมือนเดิม แต่ไม่ได้กล่าวถึงในคำถามด้วยเหตุผลบางประการดังนั้นอาจมีหรือไม่มีโทษปรับกับคะแนน ( EscและAltเทียบเท่าใน Emacs; Altเป็นยังในครึ่งเหมือนเดิมของแป้นพิมพ์ แต่ไม่ได้กล่าวถึงในคำถาม แต่จะต้องมีการจัดขึ้นมากกว่าเคาะดังนั้นผมจึงไม่สามารถใช้มันเป็นกุญแจสำคัญพิเศษของฉันมันจะประหยัดไบต์ที่สอง. แต่เนื่องจากมีการเข้ารหัสที่สั้นกว่าที่Escทำ)
โปรแกรมเอง (คอมม่าคั่นขอบเขตระหว่างไบต์ในรูปแบบ on-the-wire ที่ Emacs ใช้เพื่อยอมรับอินพุต):
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
การเข้ารหัสนี้เป็นไบต์ดิบเพื่อพิสูจน์จำนวนไบต์:
00000000: 5753 1b24 4441 1453 5257 441b 2435 1135 WS.$DA.SRWD.$5.5
00000010: 6618 7200 3118 7267 3114 f.r.1.rg1.
(หมายเหตุ: รายละเอียดบางอย่างอาจแตกต่างกันขึ้นอยู่กับวิธี Emacs มีการกำหนดค่า; คำตอบนี้ต้องยกถ่านกี่ที่จะตั้ง 16 และสำหรับ Emacs ใช้พจนานุกรมตรวจการสะกดที่เป็นค่าเริ่มต้นในระบบอังกฤษของฉันทั้งสองเหล่านี้ดูเหมือน. ชอบการตั้งค่าที่สมเหตุสมผล แต่อาจเป็นไปได้ว่าสำเนาของ Emacs ของคุณอาจมีการกำหนดค่าที่แตกต่างกันพจนานุกรมที่ต่างกันน่าจะยังคงให้โปรแกรมขนาด 26 ไบต์ แต่อาจต้องใช้การสะกดที่แตกต่างกันเล็กน้อยเพื่อให้การแก้ไขที่เราต้องการ กุญแจที่ไม่ใช้กระสุน)
คำอธิบาย
ฉันไม่แน่ใจว่ามันควรจะมีอิทธิพลต่อสงครามเอดิเตอร์หรือไม่ แต่ดูเหมือนว่า Emacs จะเอาชนะกลุ่มอย่างน้อยในกรณีของคำถามนี้ Emacs นั้นค่อนข้างเหมาะสมกับเอดิเตอร์กอล์ฟที่วัดเป็นไบต์เนื่องจากต้องอาศัยคอร์ดที่ใช้คีย์มากหลายตัว แต่มีเพียงไบต์เดียว (ดังนั้นโปรแกรม Emacs มักจะพิมพ์ช้ากว่าโปรแกรม Vim ที่เทียบเท่า แต่สั้นกว่าบนดิสก์) นอกจากนี้คำสั่ง Emac ที่สำคัญที่สุดส่วนใหญ่จะอยู่ที่มุมล่างซ้ายของคีย์บอร์ดเพื่อให้ใกล้เคียงCtrlและมีประโยชน์มากสำหรับคำถามเช่นนี้
"คุณสามารถสันนิษฐานได้ว่าคุณเปิดล่ามเชลล์ / ซอร์สโค้ดก่อนที่กระสุนจะมาน่าเสียดายที่คุณไม่ได้เขียนอะไรลงไปก่อนที่คีย์บอร์ดจะถูกโจมตี" ดังนั้นฉันคิดว่าเราเปิดไฟล์ว่างใน Emacs และ ต้องพิมพ์รหัสผ่านลงไป (เราต้องการบันทึกไฟล์หลังจากนั้นและอาจออกจาก Emacs แต่จำนวนไบต์สำหรับสิ่งนั้นไม่ถูกนับในคำตอบของคนอื่นดังนั้นฉันจึงไม่นับพวกมันที่นี่เช่นกันมันทำได้โดยใช้มือซ้ายของ แป้นพิมพ์แม้ว่า, Ctrl- X, Ctrl- S, Ctrl- X, Ctrl- C.)
ใช้คำสั่ง (หรือบล็อกคำสั่งที่คล้ายกัน) ในแต่ละครั้ง
- W, S: ป้อน
WS
ลงในเอกสาร
- Esc, $: เรียกใช้เครื่องมือตรวจการสะกดคำ
WS
ไม่ใช่คำที่แท้จริง แต่พบคำสองตัวที่คล้ายกันจำนวนมาก
- D: การใช้เครื่องตรวจตัวสะกดที่ถูกต้องไป
WS
PS
(เมื่อเครื่องตรวจการสะกดถูกเรียกใช้Alt- $ตามที่เกิดขึ้นที่นี่ ( EscและAltเทียบเท่ากับ Emacs) จะตรวจสอบเพียงหนึ่งคำเท่านั้นดังนั้นจึงปิดการใช้งานหลังจากทำเช่นนี้)
- A: ใส่ให้
A
PSA
- Ctrl- T:
PAS
สลับตัวละครสองตัวก่อนหน้านี้ให้
- S, R, W, D: ประเภทให้
SRWD
PASSRWD
- Esc, $, 5: เราเรียกเช็คคำสะกดอีกครั้งเพราะเราต้องการที่จะแก้ไขสะกดผิดของเราเข้าไป
PASSRWD
PASSWORD
โปรดทราบว่าเราไม่สามารถเดาได้ว่าคำที่เราต้องการในการลองครั้งแรกของเราจะเป็นเช่นPASSWRD
ไรเพราะกุญแจสำคัญในการยอมรับคำจริงที่ใกล้เคียงที่สุดคือ0สิ่งที่เราไม่สามารถกดได้ ผลที่ตามมาคือการสะกดผิดมากขึ้นเล็กน้อยPASSRWD
ใช้เพื่อผลักดันคำที่เราต้องการให้อยู่ในตำแหน่งที่ 5 ซึ่งเราสามารถยอมรับได้
- Ctrl- Q, 5, f: ใส่ตัวอักษรที่มีรหัสตัวอักษร U + 5f
_
คือ ตอนนี้อ่านเอกสารPASSWORD_
(หรือจะเมื่อเราเริ่มพิมพ์คำสั่งต่อไปก่อนหน้านั้นขีดเส้นใต้ไม่ปรากฏในกรณีที่เราพิมพ์เลขฐานสิบหกหลักอื่น)
- Ctrl- X, r, Ctrl- Space, 1: เก็บตำแหน่งเคอร์เซอร์ปัจจุบัน (เทียบกับจุดเริ่มต้นของไฟล์) ในการลงทะเบียน 1. สำหรับเหตุผลที่แปลกประหลาดบางนี้เป็น 1 การจัดทำดัชนีเพื่อให้ (การเขียน 9 ตัวอักษรเพื่อให้ห่างไกล)
10
เคอร์เซอร์อยู่ในตำแหน่ง
- Ctrl- X, r, g, 1: คัดลอกเนื้อหาของการลงทะเบียน 1 ลงในเอกสาร ตอนนี้อ่าน
PASSWORD_10
แล้ว
- Ctrl- T: สลับอักขระสองตัวก่อนเคอร์เซอร์ ตอนนี้เรามี
PASSWORD_01
เหมือนคำถามที่ถาม
หากเราได้รับอนุญาตให้ใช้Altเราสามารถเข้ารหัสคำสั่ง "invoke spellchecker" เป็นไบต์เดียวa4
แทนที่จะสะกดมันออกมาเป็น1b
24
; มันปรากฏขึ้นสองครั้งดังนั้นจึงนำไปสู่การประหยัดสองไบต์ (เทอร์มินัลสมัยใหม่ส่วนใหญ่ใช้1b
24
เป็นการเข้ารหัสสำหรับAlt- $เพื่อหลีกเลี่ยงการปะทะกับ UTF-8 แต่การa4
เข้ารหัสจะพบเป็นครั้งคราวบางครั้งก็เป็นตัวเลือกการกำหนดค่า)
การประหยัดไบต์ที่เป็นไปได้อาจเกี่ยวข้องกับการสะกดคำผิดของนักกอล์ฟ PSASWRD
น่าจะเป็นไบต์ที่สั้นกว่าในการพิมพ์ แต่น่าเสียดายที่เครื่องตรวจคำสะกดไม่สามารถรวบรวมได้PASSWORD
ดังนั้นจึงPASSRWD
เป็นวิธีการที่ดีที่สุดที่ฉันเคยพบมา วิธีการลงทะเบียนเพื่อรับ10
ยังเป็นเทอะทะขัน แต่มีหลายวิธีในการสร้างตัวเลขจากที่ไหนเลยใน Emacs และ0
เป็นตัวละครที่เจ็บปวดที่จะได้รับอย่างอื่น (อย่างน้อยก็มีเรื่องบังเอิญที่มีประโยชน์สองสามอย่าง: เคอร์เซอร์เพิ่งจะเกิดขึ้นในตำแหน่ง10
ซึ่งประกอบด้วย0
, เมื่อจำเป็น, และความจริงที่ว่า Emacs ยอมรับการg
ลงทะเบียนซ้ำซ้อนเพื่อแทรกเนื้อหาของการลงทะเบียนในเอกสาร นอกเหนือจากการใช้งานง่ายขึ้นi
.)