Emacs, 26 bajtów (ewentualnie + 10 = 36 lub - 2 = 24)
Dodatkowy klucz potrzebny w tej odpowiedzi to Esc. Jest to połowa klawiatury, która jest nadal nienaruszona, ale z jakiegoś powodu nie została wymieniona w pytaniu, więc może, ale nie musi, ukarać wynik. ( Esci Altsą równoważne w Emacsie; Altznajduje się również na nienaruszonej połowie klawiatury, ale nie jest wymieniony w pytaniu, ale musi być przytrzymany zamiast stukania, więc nie mogę użyć go jako mojego dodatkowego klucza. Pozwoliłoby to zaoszczędzić dwa bajty , ponieważ ma krótsze kodowanie niżEsc ).
Sam program (przecinki ograniczają granice między bajtami w formacie sieciowym używanym przez Emacsa do akceptacji jego danych wejściowych):
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
Kodowanie tego jako surowych bajtów, aby udowodnić liczbę bajtów:
00000000: 5753 1b24 4441 1453 5257 441b 2435 1135 WS.$DA.SRWD.$5.5
00000010: 6618 7200 3118 7267 3114 f.r.1.rg1.
(Uwaga: niektóre szczegóły mogą się różnić w zależności od konfiguracji Emacsa; ta odpowiedź wymaga quot-char-radix na 16, a Emacs może korzystać ze słownika sprawdzania pisowni, który jest domyślny w moim systemie brytyjsko-angielskim. Oba wydają się być jak rozsądne ustawienia konfiguracji, ale możliwe jest, że twoja kopia Emacsa może być skonfigurowana inaczej. Inny słownik prawdopodobnie nadal dawałby program 26-bajtowy, ale może być konieczne użycie nieco innych błędów pisowni, aby poprawki, które chcieliśmy, mogły zostać zaakceptowane przez klucze bez kul).
Wyjaśnienie
Nie jestem pewien, czy powinno to mieć jakikolwiek wpływ na wojny redaktorów, ale Emacs wydaje się bić vima przynajmniej w przypadku tego pytania. Emacs jest całkiem odpowiedni dla edytora golfa mierzonego w bajtach, ponieważ opiera się w dużej mierze na akordach, które wymagają wielu naciśnięć klawiszy, ale tylko jednego bajtu (dlatego program Emacsa jest często wolniejszy w pisaniu niż równoważny program Vima, ale krótszy na dysku). Ponadto większość najważniejszych poleceń Emacsa znajduje się w lewym dolnym rogu klawiatury, aby być blisko Ctrl, bardzo pomocna przy takim pytaniu.
„Możesz założyć, że edytor powłoki / edytora kodu źródłowego został otwarty przed pojawieniem się pocisków. Niestety nie napisałeś w nim niczego przed uderzeniem klawiatury.”, Więc zakładam, że mamy otwarty plik w Emacsie i musisz wpisać w nim hasło. (Musielibyśmy później zapisać plik i prawdopodobnie wyjść z Emacsa, ale bajty na to nie są liczone w odpowiedziach innych osób, więc też ich tutaj nie liczę. Jest to całkowicie wykonalne przy użyciu lewej strony klawiatura jednak Ctrl- X, Ctrl- S, Ctrl- X, Ctrl- C.)
Jednoczesne przyjmowanie polecenia (lub bloku podobnych poleceń):
- W, S: Wprowadź
WS
do dokumentu.
- Esc, $: Wywołanie sprawdzania pisowni.
WS
nie jest prawdziwym słowem, ale zawiera wiele podobnych dwuliterowych słów.
- D: Korzystanie z sprawdzania pisowni, prawidłowa
WS
do PS
. (Gdy sprawdzanie pisowni jest wywoływane przy użyciu Alt- $, jak to się stało tutaj ( Esci Altsą równoważne Emacsowi), sprawdza tylko jedno słowo, więc wyłącza się po tym.)
- A: wstawić
A
, dając PSA
.
- Ctrl- T: Zamień poprzednie dwa znaki, dając
PAS
.
- S, R, W, D: Rodzaj
SRWD
, dawanie PASSRWD
.
- Esc, $, 5: Wzywamy ponownie sprawdzania pisowni, ponieważ chcemy poprawić nasz błędnie
PASSRWD
się PASSWORD
. Zauważ, że nie możemy zgadnąć słowa, które chcemy za pierwszym razem, tak jak by to zrobiło PASSWRD
, ponieważ kluczem do zaakceptowania najbliższego prawdziwego słowa jest to, 0którego nie możemy nacisnąć. W rezultacie nieco bardziej ekstremalne błędy ortograficzne PASSRWD
są używane do popychania słowa, które chcemy, do pozycji 5, gdzie możemy je zaakceptować.
- Ctrl- Q, 5, f: wstawić znak o kodzie znak U + 5f, tj
_
. Dokument czyta teraz PASSWORD_
(lub będzie, gdy zaczniemy wpisywać następne polecenie; wcześniej znak podkreślenia nie pojawia się w przypadku wpisania innej cyfry szesnastkowej).
- Ctrl- X, r, Ctrl- Space, 1: przechowywać aktualną pozycję kursora (względem początku pliku) w rejestrze 1. Dla jakiegoś dziwacznego powodu, to jest 1-indeksowane, więc (po napisaniu 9 znaków do tej pory) kursor znajduje się w pozycji
10
.
- Ctrl- X, r, g, 1: Skopiuj zawartość rejestru 1 do dokumentu. Teraz czyta
PASSWORD_10
.
- Ctrl- T: Zamień dwa znaki przed kursorem. Mamy teraz
PASSWORD_01
, podobnie jak pytanie.
Jeśli wolno nam użyć Alt, prawdopodobnie możemy zakodować polecenie „invoke spellchecker” jako pojedynczy bajt a4
zamiast przeliterować go jako 1b
24
; pojawia się dwa razy, co prowadzi do dwóch bajtów oszczędności. (Większość współczesnych terminali używa 1b
24
jako kodowania Alt- $aby uniknąć kolizji z UTF-8, ale a4
kodowanie jest również spotykane od czasu do czasu, czasami dostępne jako opcja konfiguracji).
Możliwe oszczędności bajtów prawdopodobnie wymagają poprawek pisowni golfisty. PSASWRD
byłby bajt krótszy do wpisania, ale niestety, moduł sprawdzania pisowni nie wydaje się być w stanie PASSWORD
wyciągnąć z tego, więc PASSRWD
jest to najlepsze podejście, jakie do tej pory znalazłem. Podejście oparte na rejestrach do zdobywania 10
jest również absurdalnie niewygodne, ale Emacs nie ma wielu sposobów tworzenia liczb z nikąd i 0
jest bolesną postacią, aby zdobyć inaczej. (Przynajmniej zdarzyło się kilka niezwykle przydatnych zbiegów okoliczności: kursor właśnie kończy się w pozycji 10
, która zawiera 0
, w razie potrzeby, dokładnie; oraz fakt, że Emacs akceptuje zbędne .)g
operację rejestru, aby wstawić zawartość rejestru do dokumentu , oprócz bardziej intuicyjnychi