Emacs, 26 Bytes (möglicherweise + 10 = 36 oder - 2 = 24)
Der zusätzliche Schlüssel, der in dieser Antwort benötigt wird, ist Esc. Dies ist die Hälfte der Tastatur, die noch intakt ist, aber aus irgendeinem Grund nicht in der Frage erwähnt wird. Sie kann also eine Strafe für die Partitur auslösen oder auch nicht. ( Escund Altsind in Emacs gleichwertig; Altbefindet sich ebenfalls auf der intakten Tastaturhälfte, wird aber in der Frage nicht erwähnt, sondern muss gehalten und nicht getippt werden, damit ich ihn nicht als zusätzlichen Schlüssel verwenden kann. Es würden zwei Bytes gespart Allerdings, weil es eine kürzere Kodierung hat als Esc.)
Das Programm selbst (die Kommas begrenzen die Grenzen zwischen den Bytes im On-the-Wire-Format, mit dem Emacs seine Eingaben akzeptiert):
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
Codierung als Rohbyte, um die Anzahl der Bytes zu beweisen:
00000000: 5753 1b24 4441 1453 5257 441b 2435 1135 WS.$DA.SRWD.$5.5
00000010: 6618 7200 3118 7267 3114 f.r.1.rg1.
(Hinweis: Einige Details können je nach Konfiguration von Emacs variieren. Für diese Antwort muss der Anführungszeichen-Radix auf 16 gesetzt sein und für Emacs muss das Rechtschreibwörterbuch verwendet werden, das auf meinem britischen Englisch-System standardmäßig eingestellt ist. Beide scheinen zu sein Dies entspricht den üblichen Konfigurationseinstellungen, es ist jedoch möglich, dass Ihre Emacs-Kopie anders konfiguriert ist. Ein anderes Wörterbuch würde wahrscheinlich noch ein 26-Byte-Programm ergeben, aber möglicherweise müssen leicht unterschiedliche Rechtschreibfehler verwendet werden, damit die von uns gewünschten Korrekturen akzeptiert werden Schlüssel ohne Kugel.)
Erläuterung
Ich bin mir nicht sicher, ob es irgendeinen Einfluss auf die Herausgeberkriege haben sollte, aber Emacs scheint zumindest bei dieser Frage vim zu schlagen. Emacs eignet sich sehr gut für das Editieren von in Bytes gemessenem Golf, da es stark von Akkorden abhängt, die mehrere Tastendrücke, aber nur ein einziges Byte benötigen (daher ist ein Emacs-Programm oft langsamer zu tippen als das entsprechende Vim-Programm, aber kürzer auf der Festplatte). Außerdem befinden sich die meisten der wichtigsten Emacs-Befehle in der linken unteren Ecke der Tastatur Ctrl.
"Sie können davon ausgehen, dass Sie die Interpreter-Shell / den Quellcode-Editor vor dem Eintreffen der Aufzählungszeichen geöffnet haben. Leider haben Sie nichts geschrieben, bevor die Tastatur gedrückt wurde." Ich gehe also davon aus, dass in Emacs und Emacs eine leere Datei geöffnet ist müssen das Passwort eingeben. (Wir müssten die Datei danach speichern und Emacs wahrscheinlich beenden, aber die Bytes dafür werden nicht in den Antworten anderer Leute gezählt, daher zähle ich sie auch hier nicht. Es ist absolut machbar, wenn man die linke Seite von verwendet Tastatur, obwohl, Ctrl- X, Ctrl- S, Ctrl- X, Ctrl- C.)
Nehmen Sie jeweils einen Befehl (oder einen Block ähnlicher Befehle):
- W, S:
WS
In das Dokument eingeben .
- Esc, $: Rufe die Rechtschreibprüfung auf.
WS
ist kein richtiges Wort, findet aber viele ähnliche Wörter mit zwei Buchstaben.
- D: Verwenden Sie die Rechtschreibprüfung, um
WS
zu korrigieren PS
. (Wenn die Rechtschreibprüfung wie hier mit Alt- aufgerufen wird $( Escund AltEmacs entspricht), wird nur ein Wort überprüft und danach deaktiviert.)
- A: einfügen
A
, geben PSA
.
- Ctrl- T: Vertausche die beiden vorherigen Zeichen und gib
PAS
.
- S, R, W, D: Typ
SRWD
, geben PASSRWD
.
- Esc, $, 5Wir die Rechtschreibprüfung wieder aufrufen, weil wir unsere falsch geschrieben korrigieren möchten
PASSRWD
in PASSWORD
. Beachten Sie, dass wir nicht das Wort erraten können, das wir bei unserem ersten Versuch wollen, wie es bei dem ersten Versuch der Fall wäre PASSWRD
, da der Schlüssel zum Akzeptieren des nächsten echten Wortes der ist, 0den wir nicht drücken können. Infolgedessen wird die etwas extremere Rechtschreibfehler PASSRWD
verwendet, um das gewünschte Wort auf Position 5 zu verschieben, wo wir es akzeptieren können.
- Ctrl- Q, 5, f: Legen Sie die Zeichen mit Zeichencode U + 5f, das heißt
_
. Das Dokument liest jetzt PASSWORD_
(oder wird, wenn wir mit der Eingabe des nächsten Befehls beginnen; vorher wird der Unterstrich nicht angezeigt, falls wir eine andere Hex-Ziffer eingeben).
- Ctrl- X, r, Ctrl- Space, 1: Speichert die aktuelle Cursor - Position (relativ zum Anfang der Datei) in Register 1. Aus irgendeinem Grund , bizarre, ist dies 1-indexiert, so (9 Zeichen geschrieben zu haben bisher) der Cursor an der Position ist
10
.
- Ctrl- X, r, g, 1: Kopieren Sie den Inhalt des Registers 1 in das Dokument. Es liest jetzt
PASSWORD_10
.
- Ctrl- T: Vertauschen Sie die beiden Zeichen vor dem Cursor. Wir haben jetzt
PASSWORD_01
, wie die Frage fragt.
Wenn wir es verwenden dürfen Alt, können wir den Befehl "Rechtschreibprüfung aufrufen" wahrscheinlich als einzelnes Byte codieren, a4
anstatt es als zu buchstabieren 1b
24
. es erscheint zweimal, so dass sich zwei Bytes Einsparung ergeben. (Die meisten modernen Terminals verwenden 1b
24
die Codierung für Alt- $, um Konflikte mit UTF-8 zu vermeiden. Die a4
Codierung wird jedoch auch von Zeit zu Zeit angetroffen und ist manchmal als Konfigurationsoption verfügbar.)
Mögliche Einsparungen bei den Bytes sind wahrscheinlich mit Schreibfehlern bei der Korrektur verbunden. PSASWRD
wäre ein Byte kürzer zu tippen, aber leider scheint die Rechtschreibprüfung nicht dazu in der Lage zu sein, dies PASSWORD
herauszufinden. Dies PASSRWD
ist der beste Ansatz, den ich bisher gefunden habe. Der auf Registern basierende Ansatz des Gewinnens 10
ist ebenfalls lächerlich unhandlich, aber es gibt in Emacs nicht viele Möglichkeiten, Zahlen aus dem Nichts zu erstellen, und es 0
ist eine schmerzhafte Angelegenheit, etwas anderes in die Hand zu nehmen. (Zumindest gab es ein paar erstaunlich nützliche Zufälle: Der Cursor landete zufällig an der Position 10
, die 0
bei Bedarf ein a enthält , und die Tatsache, dass Emacs die redundante g
Registeroperation akzeptiert , um den Inhalt eines Registers in das Dokument einzufügen , zusätzlich zu den intuitivereni
.)