Emacs, 26 bytes (possivelmente + 10 = 36 ou - 2 = 24)
A chave extra necessária nesta resposta é Esc. Isso está na metade do teclado que ainda está intacta, mas não é mencionada na pergunta por algum motivo, portanto, pode ou não dar uma penalidade à pontuação. ( Esce Altsão equivalentes no Emacs; tambémAlt está na metade intacta do teclado, mas não é mencionado na pergunta, mas deve ser mantido em vez de ser tocado para que eu não possa usá-lo como minha chave extra. Isso economizaria dois bytes , porém, porque possui uma codificação mais curta que a.)Esc
O próprio programa (as vírgulas delimitam os limites entre os bytes no formato on-the-wire que o Emacs usa para aceitar sua entrada):
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ção disso como bytes brutos, para provar a contagem de bytes:
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: alguns dos detalhes podem variar de acordo com a configuração do Emacs; esta resposta exige que o quoted-char-radix seja definido como 16 e que o Emacs use o dicionário de verificação ortográfica padrão no meu sistema de inglês britânico. Ambos parecem como definições de configuração razoáveis, mas é possível que sua cópia do Emacs seja configurada de maneira diferente.Um dicionário diferente provavelmente ainda forneceria um programa de 26 bytes, mas erros de ortografia ligeiramente diferentes podem precisar ser usados para que as correções desejadas possam ser aceitas por chaves não controladas por marcadores.)
Explicação
Não tenho certeza se deve ter alguma influência nas guerras dos editores, mas o Emacs parece vencer o vim pelo menos no caso desta pergunta. O Emacs é bastante adequado para golfe de editor medido em bytes, porque depende muito de acordes que usam várias teclas pressionadas, mas apenas um byte (portanto, um programa Emacs costuma ser mais lento do que o programa Vim equivalente, mas mais curto no disco). Além disso, a maioria dos comandos mais importantes do Emacs estão no canto inferior esquerdo do teclado, para estar perto Ctrl, muito útil com uma pergunta como esta.
"Você pode assumir que o editor de shell / fonte do intérprete foi aberto antes que os marcadores chegassem. Infelizmente, você não escreveu nada antes do teclado ser pressionado.", Então estou assumindo que temos um arquivo vazio aberto no Emacs e precisa digitar a senha nele. (Precisamos salvar o arquivo posteriormente e provavelmente sair do Emacs, mas os bytes para isso não estão sendo contados nas respostas de outras pessoas, por isso também não os estou contando aqui. É totalmente viável usando o lado esquerdo do teclado, porém, Ctrl- X, Ctrl- S, Ctrl- X, Ctrl- C.)
Assumindo um comando (ou bloco de comandos semelhantes) de cada vez:
- W, S: Entra
WS
no documento.
- Esc, $: Invoque o corretor ortográfico.
WS
não é uma palavra real, mas encontra muitas palavras semelhantes de duas letras.
- D: Usando o corretor ortográfico, corrija
WS
para PS
. (Quando o verificador ortográfico é chamado usando Alt- $, como aconteceu aqui ( Esce Alté equivalente ao Emacs), ele verifica apenas uma palavra, sendo desativado depois de fazer isso.)
- A: inserir
A
, dando PSA
.
- Ctrl- T: Troque os dois caracteres anteriores, dando
PAS
.
- S, R, W, D: Tipo
SRWD
, doação PASSRWD
.
- Esc, $, 5: Nós invocamos o verificador ortográfico novamente, porque queremos corrigir a nossa grafada
PASSRWD
em PASSWORD
. Observe que não podemos adivinhar a palavra que queremos na primeira tentativa, como faria com PASSWRD
, porque a tecla para aceitar a palavra real mais próxima é a 0que não podemos pressionar. Como resultado, o erro de ortografia um pouco mais extremo PASSRWD
é usado para empurrar a palavra que queremos para a posição 5, onde podemos aceitá-la.
- Ctrl- Q, 5, f: Insira o personagem com código de caracteres U + 5F, ou seja
_
. O documento agora lê PASSWORD_
(ou será quando começarmos a digitar o próximo comando; antes disso, o sublinhado não aparecerá se digitarmos outro dígito hexadecimal).
- Ctrl- X, r, Ctrl- Space, 1: armazenar a posição atual do cursor (em relação ao início do arquivo) no registo 1. Por alguma razão bizarra, este é 1-indexados, então (tendo escrito 9 caracteres até agora) o cursor estiver na posição
10
.
- Ctrl- X, r, g, 1: Copie o conteúdo do registo 1 no documento. Agora lê
PASSWORD_10
.
- Ctrl- T: Troque os dois caracteres antes do cursor. Agora temos
PASSWORD_01
, como a pergunta pede.
Se for permitido o uso Alt, provavelmente podemos codificar o comando "invocar verificação ortográfica" como o byte único, em a4
vez de explicá-lo como 1b
24
; aparece duas vezes, o que leva a dois bytes de economia. (A maioria dos terminais modernos usa 1b
24
como codificação para Alt- $para evitar conflitos com o UTF-8, mas a a4
codificação também é encontrada de tempos em tempos, às vezes disponível como opção de configuração.)
Possíveis economias de bytes provavelmente envolvem erros de ortografia nos jogadores para corrigir. PSASWRD
seria um byte mais curto para digitar, mas, infelizmente, o corretor ortográfico não parece capaz de entender PASSWORD
isso, então PASSRWD
é a melhor abordagem que encontrei até agora. A abordagem baseada em registros para ganhar 10
também é ridiculamente difícil, mas não há muitas maneiras de criar números do nada no Emacs, e 0
é um personagem doloroso para se controlar. (Pelo menos, houve algumas coincidências incrivelmente úteis: o cursor acabou por terminar na posição 10
, que contém a 0
, exatamente quando necessário; e o fato de o Emacs aceitar a g
operação de registro redundante para inserir o conteúdo de um registro no documento , além do mais intuitivoi
.)