Emacs, 26 байт (возможно, + 10 = 36 или - 2 = 24)
Дополнительный ключ , который необходим в этом ответе есть Esc. Это половина клавиатуры, которая все еще не повреждена, но по какой-то причине не упоминается в этом вопросе, поэтому может давать или не давать штраф к счету. ( Escи Altэквивалентны в Emacs; Altон также находится на неповрежденной половине клавиатуры, но не упоминается в вопросе, но его нужно удерживать, а не постукивать, чтобы я не мог использовать его в качестве дополнительной клавиши. Это сохранит два байта тем не менее, потому что у него более короткая кодировка, чем Escу.)
Сама программа (запятые ограничивают границы между байтами в формате «на проводе», который Emacs использует для приема ввода):
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
Кодирование этого как необработанные байты, чтобы доказать количество байтов:
00000000: 5753 1b24 4441 1453 5257 441b 2435 1135 WS.$DA.SRWD.$5.5
00000010: 6618 7200 3118 7267 3114 f.r.1.rg1.
(Примечание: некоторые детали могут различаться в зависимости от того, как сконфигурирован Emacs; для этого ответа необходимо установить значение quoted-char-radix равным 16, а для Emacs использовать словарь проверки орфографии, который по умолчанию установлен в моей системе британского английского языка. как разумные настройки конфигурации, но возможно, что ваша копия Emacs может быть настроена по-другому. Другой словарь, вероятно, все равно будет содержать 26-байтовую программу, но, возможно, придется использовать несколько иные орфографические ошибки, чтобы требуемые исправления могли быть приняты ключи без пули.)
объяснение
Я не уверен, должно ли это иметь какое-либо влияние на войны редакторов, но Emacs, кажется, побеждает vim, по крайней мере, в случае этого вопроса. Emacs довольно подходит для редактора гольфа, измеряемого в байтах, потому что он в значительной степени опирается на аккорды, которые занимают несколько нажатий клавиш, но только один байт (таким образом, программа Emacs часто медленнее набирает текст, чем эквивалентная программа Vim, но короче на диске). Кроме того, большинство наиболее важных команд Emacs находятся в левом нижнем углу клавиатуры, чтобы быть очень близкими Ctrl, очень полезными для такого вопроса, как этот.
«Вы можете предположить, что у вас открыта оболочка интерпретатора / редактор исходного кода до того, как появились пули. К сожалению, вы ничего не написали до того, как нажали на клавиатуру», поэтому я предполагаю, что у нас есть открытый файл в Emacs и Нужно ввести пароль в него. (Затем нам нужно сохранить файл и, возможно, выйти из Emacs, но байты для этого не учитываются в ответах других людей, поэтому я их здесь тоже не считаю. Это вполне выполнимо, используя левую часть клавиатура, хотя, Ctrl- X, Ctrl- S, Ctrl- X, Ctrl- C.)
Принимая команду (или блок похожих команд) одновременно:
- W, S: Введите
WS
в документ.
- Esc, $: Вызвать проверку орфографии.
WS
не настоящее слово, но оно находит много похожих двухбуквенных слов.
- D: Использование проверки орфографии, правильно
WS
к PS
. (Когда проверка орфографии вызывается с помощью Alt- $, как это произошло здесь ( Escи Altэквивалентно Emacs), он проверяет только одно слово, поэтому после этого он деактивируется.)
- A: вставка
A
, подача PSA
.
- Ctrl- T: поменяйте местами два предыдущих символа, давая
PAS
.
- S, R, W, D: Тип
SRWD
, даяние PASSRWD
.
- Esc, $, 5: Мы призываем к орфографии , опять же , потому что мы хотим , чтобы исправить нашу опечатку
PASSRWD
в PASSWORD
. Обратите внимание, что мы не можем угадать слово, которое мы хотим с нашей первой попытки, как это было бы с PASSWRD
, потому что ключом для принятия ближайшего реального слова является то, 0что мы не можем нажать. В результате, чуть более экстремальное неправильное написание PASSRWD
используется для перевода нужного слова в положение 5, где мы можем его принять.
- Ctrl- Q, 5, f: Вставить символ с кодом символа U + 5f, то есть
_
. Теперь документ читает PASSWORD_
(или будет, когда мы начнем вводить следующую команду; до этого подчеркивание не появляется в случае, если мы вводим другую шестнадцатеричную цифру).
- Ctrl- X, r, Ctrl- Space, 1: Сохранение текущей позиции курсора (относительно начала файла) в регистре 1. По какой - то странной причине, это 1-индексируется, так (написав 9 символов до сих пор) курсор находится в положении
10
.
- Ctrl- X, r, g, 1: Скопируйте содержимое регистра 1 в документ. Это теперь читает
PASSWORD_10
.
- Ctrl- T: поменяйте местами два символа перед курсором. Теперь у нас есть
PASSWORD_01
, как вопрос просит.
Если нам разрешено использовать Alt, мы, вероятно, можем закодировать команду «invoke spellchecker» как один байт, a4
а не записывать ее как 1b
24
; он появляется дважды, что приводит к экономии двух байтов. (Большинство современных терминалов используют 1b
24
в качестве кодировки для Alt- $чтобы избежать конфликтов с UTF-8, но время a4
от времени также встречается кодирование, иногда доступное в качестве опции конфигурации.)
Возможная экономия байтов, вероятно, связана с ошибками игроков в гольф для исправления. PSASWRD
было бы на байт короче, но, к сожалению, проверка орфографии, кажется, не способна PASSWORD
извлечь из этого пользу , так PASSRWD
что это лучший подход, который я нашел до сих пор. Подход на основе регистров к получению 10
также смехотворно громоздок, но в Emacs не так много способов создавать числа из ниоткуда, и 0
это болезненный характер, чтобы заполучить иное. (По крайней мере, было несколько удивительно полезных совпадений: курсор, как оказалось, оказался в положении 10
, которое содержит 0
, когда это необходимо, и тот факт, что Emacs принимает избыточную g
операцию с регистром, чтобы вставить содержимое регистра в документ , в дополнение к более интуитивнымi
.)