Emacs, 26 byte (possibilmente + 10 = 36 o - 2 = 24)
La chiave aggiuntiva necessaria in questa risposta è Esc. Questo è sulla metà della tastiera che è ancora intatto, ma non è menzionato nella domanda per qualche motivo, quindi potrebbe o non dare una penalità al punteggio. ( Esce Altsono equivalenti in Emacs; Altè anche sulla metà intatta della tastiera, ma non è menzionato nella domanda, ma deve essere trattenuto anziché toccato, quindi non posso usarlo come chiave aggiuntiva. Risparmia due byte , tuttavia, perché ha una codifica più breve di quanto Escnon lo sia.)
Il programma stesso (le virgole delimitano i confini tra i byte nel formato on-the-wire che Emacs utilizza per accettare il suo input):
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
Codifica di questo come byte non elaborati, per dimostrare il conteggio dei 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.
(Nota: alcuni dettagli possono variare in base alla configurazione di Emacs; questa risposta richiede che quoted-char-radix sia impostato su 16 e che Emacs utilizzi il dizionario di controllo ortografico predefinito sul mio sistema inglese britannico. Entrambi sembrano come impostazioni di configurazione ragionevoli, ma è possibile che la tua copia di Emacs sia configurata in modo diverso. Un dizionario diverso probabilmente darebbe comunque un programma a 26 byte, ma potrebbe essere necessario utilizzare errori di ortografia leggermente diversi in modo che le correzioni che desideriamo possano essere accettate da chiavi senza proiettili.)
Spiegazione
Non sono sicuro che dovrebbe avere qualche influenza sulle guerre degli editor, ma Emacs sembra battere Vim almeno nel caso di questa domanda. Emacs è piuttosto adatto all'editor del golf misurato in byte, perché si basa fortemente su accordi che occupano più pressioni di tasti ma solo un singolo byte (quindi un programma Emacs è spesso più lento da digitare rispetto al programma Vim equivalente, ma più corto su disco). Inoltre, la maggior parte dei comandi Emacs più importanti si trova nell'angolo in basso a sinistra della tastiera, per essere vicino Ctrl, molto utile con una domanda come questa.
"Puoi presumere di aver aperto l'interprete shell / editor di sorgenti prima che arrivassero i proiettili. Purtroppo non hai scritto nulla prima che la tastiera fosse premuta.", Quindi presumo che abbiamo un file vuoto aperto in Emacs e è necessario digitare la password al suo interno. (Dovremmo salvare il file in seguito, e probabilmente uscire da Emacs, ma i byte per questo non vengono conteggiati nelle risposte degli altri, quindi non li conto neanche qui. È totalmente fattibile usando il lato sinistro del tastiera, tuttavia, Ctrl- X, Ctrl- S, Ctrl- X, Ctrl- C.)
Prendendo un comando (o un blocco di comandi simili) alla volta:
- W, S: Entra
WS
nel documento.
- Esc, $: Invoca il controllo ortografico.
WS
non è una parola vera, ma trova molte parole simili di due lettere.
- D: Utilizzando il correttore ortografico, corretto
WS
a PS
. (Quando il controllo ortografico viene invocato usando Alt- $, come è successo qui ( Esce Altsono equivalenti a Emacs), controlla solo una parola, quindi si disattiva dopo averlo fatto.)
- A: inserisci
A
, dando PSA
.
- Ctrl- T: scambia i due personaggi precedenti, dando
PAS
.
- S, R, W, D: Tipo
SRWD
, dare PASSRWD
.
- Esc, $, 5: Invochiamo ancora una volta il correttore ortografico, perché vogliamo correggere la nostra errano
PASSRWD
in PASSWORD
. Nota che non possiamo indovinare la parola che desideriamo al nostro primo tentativo, come farebbe PASSWRD
, perché la chiave per accettare la parola reale più vicina è quella 0che non possiamo premere. Di conseguenza, l'ortografia leggermente più estrema PASSRWD
viene utilizzata per spingere la parola che vogliamo in posizione 5, dove possiamo accettarla.
- Ctrl- Q, 5, f: inserire il carattere con il codice di carattere U + 5f, vale a dire
_
. Il documento ora legge PASSWORD_
(o lo farà quando inizieremo a digitare il comando successivo; prima di allora, il carattere di sottolineatura non appare nel caso in cui digitiamo un'altra cifra esadecimale).
- Ctrl- X, r, Ctrl- Space, 1: Conservare la posizione corrente del cursore (relativo all'inizio del file) nel registro 1. Per qualche strana ragione, questo è 1-indicizzato, quindi (dopo aver scritto 9 caratteri finora) il cursore si trova nella posizione
10
.
- Ctrl- X, r, g, 1: copiare il contenuto del registro 1 nel documento. Ora legge
PASSWORD_10
.
- Ctrl- T: scambia i due caratteri prima del cursore. Ora abbiamo
PASSWORD_01
, come fa la domanda.
Se ci è permesso di usare Alt, possiamo probabilmente codificare il comando "invoke spellchecker" come singolo byte a4
anziché scriverlo come 1b
24
; appare due volte, quindi questo porta a due byte di risparmi. (La maggior parte dei terminali moderni usa 1b
24
la codifica per Alt- $per evitare scontri con UTF-8, ma la a4
codifica si incontra anche di volta in volta, a volte disponibile come opzione di configurazione.)
I possibili risparmi in byte implicano probabilmente errori di ortografia da golf. PSASWRD
sarebbe un byte più breve da digitare, ma sfortunatamente, il controllo ortografico non sembra in grado di evitarlo PASSWORD
, quindi PASSRWD
è l'approccio migliore che ho trovato finora. L'approccio basato sui registri per ottenere 10
è anche ridicolmente ingombrante, ma non ci sono molti modi per creare numeri dal nulla in Emacs, ed 0
è un personaggio doloroso da prendere altrimenti. (Almeno ci sono state un paio di coincidenze incredibilmente utili: il cursore sta per finire in posizione 10
, che contiene un 0
, proprio quando necessario; e il fatto che Emacs accetta l' g
operazione di registro ridondante per inserire il contenuto di un registro nel documento , oltre a quello più intuitivoi
.)