Emacs, 26 bayt (muhtemelen + 10 = 36 veya - 2 = 24)
Bu cevapta ihtiyaç duyulan ekstra anahtar Esc. Bu, hala sağlam olan klavyenin yarısındadır, ancak bir nedenden ötürü soruda belirtilmemiştir, bu nedenle skor için bir ceza verebilir veya vermeyebilir. ( Escve AltEmacs'ta eşdeğerdir; Altaynı zamanda klavyenin bozulmamış yarısındadır, ancak soruda belirtilmemiştir, ancak dokunulmak yerine tutulması gerekir, bu yüzden fazladan anahtarım olarak kullanamıyorum. , çünkü, olduğundan daha kısa bir kodlamaya sahiptir Esc.)
Programın kendisi (virgüller, Emacs'ın girişini kabul etmek için kullandığı on-line formatındaki baytlar arasındaki sınırları sınırlandırır):
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
Bayt sayısını kanıtlamak için bunun ham bayt olarak kodlanması:
00000000: 5753 1b24 4441 1453 5257 441b 2435 1135 WS.$DA.SRWD.$5.5
00000010: 6618 7200 3118 7267 3114 f.r.1.rg1.
(Not: ayrıntıların bazıları Emacs'ın nasıl yapılandırıldığına bağlı olarak değişebilir; bu cevap, alıntı-radix'in 16'ya ayarlanmasını ve Emac'ın İngiliz İngilizcemde varsayılan olan yazım denetimi sözlüğünü kullanmasını gerektirir. Her ikisi de görünüyor. makul yapılandırma ayarları gibi, ancak Emacs kopyanız farklı şekilde yapılandırılmış olabilir, farklı bir sözlük hala 26 baytlık bir program verebilir, ancak istediğimiz düzeltmelerin kabul edilebilmesi için biraz yanlış yazımların kullanılması gerekebilir. kurşunsuz basılan anahtarlar.)
açıklama
Editör savaşları üzerinde herhangi bir etkiye sahip olması gerekip gerekmediğinden emin değilim, ancak Emacs en azından bu soru söz konusu olduğunda titremeye başladı. Emacs, bayt cinsinden ölçülen editör golfüne oldukça uygundur, çünkü çok sayıda tuşa basan ancak yalnızca tek bir bayt alan akorlara yoğun şekilde dayanır (bu nedenle bir Emacs programı genellikle eşdeğer Vim programından daha yavaş, ancak diskte daha kısadır). Ek olarak, en önemli Emacs komutlarının çoğu, klavyenin sol alt köşesinde, buna Ctrlbenzer bir soruya çok yakın olması için yazıyor.
"Mermi gelmeden önce tercüman kabuğunun / kaynak düzenleyicisinin açık olduğunu varsayabilirsiniz. Ne yazık ki klavyeye basılmadan önce hiçbir şey yazmamışsınızdır.", Bu yüzden Emacs ve şifreyi girmeniz gerekir. (Daha sonra dosyayı kaydetmemiz ve muhtemelen Emacs'tan çıkmamız gerekir, ancak bunun için baytlar diğer kişilerin cevaplarında sayılmaz, bu yüzden burada da saymıyorum. Tamamen sol tarafını kullanarak yapılabilir. klavye olsa da, Ctrl- X, Ctrl- S, Ctrl- X, Ctrl- C.)
Her seferinde bir komut (veya benzer komutları engelle) alarak:
- W, S:
WS
Belgeye girin .
- Esc, $: Yazım denetleyicisini çağırın.
WS
gerçek bir kelime değil, ancak pek çok benzer iki harfli kelime bulur.
- D: İmla kontrolü kullanarak, doğru
WS
için PS
. (Yazım denetleyici Alt- $, burada olduğu gibi ( Escve AltEmacs ile eşdeğerdir) kullanılarak çağrıldığında , yalnızca bir sözcüğü denetler, bu yüzden bunu yaptıktan sonra devre dışı kalır.)
- A: ekleme
A
, verme PSA
.
- Ctrl- T: Önceki iki karakteri değiştirerek
PAS
.
- S, R, W, D: Tür
SRWD
, veren PASSRWD
.
- Esc, $, 5: Biz bizim yanlış yazılmış düzeltmek istiyorum, çünkü tekrar imla kontrolü çağırmak
PASSRWD
içine PASSWORD
. İlk denememizde istediğimiz kelimeyi tahmin edemediğimizi unutmayın PASSWRD
, çünkü olduğu gibi , en yakın gerçek kelimeyi kabul etmenin anahtarı , basmayacağımız şeydir 0. Sonuç olarak, biraz daha aşırı yazım hatası PASSRWD
, istediğimiz sözcüğü kabul edebileceğimiz 5. konuma itmek için kullanılır.
- Ctrl- Q, 5, f: karakter kodu U + 5f, yani karakterin yerleştirin
_
. Belge şimdi okuyor PASSWORD_
(veya bir sonraki komutu yazmaya başladığımızda; o zamandan önce, başka bir onaltılık rakam yazmamız durumunda alt çizgi görünmüyor).
- Ctrl- X, r, Ctrl- Space, 1: Bazı tuhaf nedenle kayıt 1'de (dosyanın başlangıcına göre) geçerli imleç konumunu Mağaza, bu hane üzerine, 1-endeksli böylece (şimdiye kadar 9 karakterleri yazılı olan) 'dir
10
.
- Ctrl- X, r, g, 1: belgeye kayıt 1 içeriğini kopyalayın. Şimdi okuyor
PASSWORD_10
.
- Ctrl- T: İmleçten önceki iki karakteri değiştir. Şimdi
PASSWORD_01
, sorduğumuz gibi.
Kullandığımız izin ediyorsanız Alt, muhtemelen tek bir byte "imla kontrolü çağırmak" komutunu kodlamak a4
yerine olarak belirtmeyi daha 1b
24
; iki kez görünür, böylece iki baytlık tasarruf sağlanır. (Modern terminallerin çoğu UTF-8 ile çakışmalardan kaçınmak 1b
24
için Alt- olarak kodlama kullanır $, ancak a4
zaman zaman bir yapılandırma seçeneği olarak da mevcut olan kodlamaya da rastlanır.)
Olası bayt tasarrufları muhtemelen düzeltmek için golfçü yazım hatalarını içerir. PSASWRD
yazmak için daha kısa bir bayt olurdu, ancak ne yazık ki, yazım denetleyicisi bundan kaçabilecek durumda değil PASSWORD
, PASSRWD
şimdiye kadar bulduğum en iyi yaklaşım bu. Kayıt temelli yaklaşım kazanma yaklaşımı 10
da gülünç derecede hantaldır, ancak Emacs'ta hiçbir yerde sayıları yaratmanın pek fazla yolu yoktur ve 0
başka türlü elde etmek için acı verici bir karakterdir. İmleç haklı pozisyonunu sonuna kadar oluyor: (En azından orada inanılmaz yararlı tesadüfler çiftti 10
bir içeriyorsa, 0
gerektiğinde sağ ne zaman ve Emacs gereksiz kabul olması g
belgeye bir kayıt içeriğini eklemek için kayıt işlemini , daha sezgisel ek olaraki
.)