Быстро! Побег из черной дыры!


28

Это 87 539 319 год, и теперь уединение в космосе стало обычным делом: многие люди сами путешествуют в космосе, движимые не более чем реактивным ранцем на спине, программируя свой курс с помощью персонального компьютера и клавиатуры.

Вы один такой человек; вы вышли на прекрасный, мирный выход в открытый космос, когда внезапно вы были захвачены гравитацией черной дыры!

Когда вы падаете в сторону этой черной дыры, двигаясь все быстрее внутрь, вы понимаете, что ваш единственный шанс на выживание - передать сообщение о бедствии и надеяться, что ближайший корабль придет, чтобы спасти вас.

Итак, вы ломаете клавиатуру и начинаете набирать программу.

Ваша программа может быть на любом языке и должна печатать HELP!на стандартный вывод (ваш компьютер транслирует весь стандартный вывод в глубину космоса.)

Однако, когда вы находитесь рядом с черной дырой, ваша клавиатура постепенно разрывается в клочья!

Предположим, что вы используете QWERTY-клавиатуру, подобную приведенной ниже, и черная дыра находится слева от вас;

QWERTY KEYBOARD LAYOUT

Помните, что левый и правый сдвиг - это две разные клавиши.

после каждого нажатия клавиши крайний левый ряд вашей клавиатуры (клавиши, обозначенные самой левой красной линией) срывается и бросается в черную дыру!

Таким образом, ваш первый нажатие клавиши может быть любой клавиши на клавиатуре, но с этого момента ни один из крайней левой Tab , Caps, Shift, Ctrlили `могут быть использованы ключи, на всех . (r-shift и r-ctrl все еще могут быть использованы)

После очередного нажатия клавиши, клавиши 1, Q, A, Zи Altбудут сброшены в пропасть, и не могут быть использованы в дальнейшем. После этого, вы теряете Space, X, S, W, 2и так далее.

Очевидно, вы хотите завершить свою программу как можно быстрее, чтобы время спасения было увеличено; следовательно, это код-гольф, и выигрывает самая короткая программа при нажатии клавиш !

Каждый ответ должен содержать список нажатий клавиш, поэтому, если мой ответ был этой программой (на языке squardibblyack)

!HELP\.

список ключей может выглядеть так:

Shift!HELP отпустить сдвиг \.

длина: 8

Я волнуюсь, что этот вызов может быть слишком сложным, но я хотел бы видеть ответы на эти вопросы!


13
Я подавляю это, потому что оно слишком ограничено, чтобы иметь много творчества.
Исаак

4
Можем ли мы предположить, что использование оболочки Python без printквалифицируется как STDOUT?
user80551

3
Что если моя клавиатура имеет цифровую клавиатуру?
mbomb007

4
Это может быть немного лучше с клавишами со стрелками.
user80551

6
Блокировка заглавных букв все еще эффективна, если она была нажата, хотя клавиша исчезла?
ОАО

Ответы:


42

CJam, 11 нажатий клавиш

Код

"HELP*")9-

и список ключей

Shift"HELP*") отпустить сдвиг 9-

и вот демонстрация того, как это выглядит:

введите описание изображения здесь

и вот как работает код:

"HELP*"              "This puts the string HELP* on stack";
       )             "This takes out the last character of the string and puts it
                      on the stack as a character";
        9-           "This simply reduces 9 from the ASCII code of * character
                      present on the stack which makes it an !";
                     "CJam automatically prints everything that is on stack";

Попробуйте код здесь


2
Использовать звездочку было довольно умно! Я никогда не думал об этом.
theonlygusti

2
Ну, я не смог сделать это в GolfScript. Это слишком долго. Преобразование из целого числа в ascii неэффективно. "HELP*")9-[]+''+, Я не могу напечатать последние четыре.
mbomb007

3
Я просто знал, что у CJam будет ответ ...
Джерри Иеремия,

9
Таким образом, один из самых перспективных языков в мире, по-видимому, CJam.
Форс

5
Наблюдайте за своим пальцем, когда вы попадаете в Eнего, похоже, его могут унести в пропасть!
Канадский Люк ОБНОВЛЯЕТ МОНИКУ

3

rs , 10 нажатий клавиш (предполагается, что пользователь использует Nano)

Или эквивалентный редактор, где Shiftне выделяется текст.

Это на самом деле не язык программирования, но если sedего можно использовать в Code Golf, то rsего можно использовать.

Right Shift ! Left E Left H Right L P Enter

HELP!

Он просто заменяет пустую строку на «HELP!», Эффективно выводя ее на экран. Примерно эквивалентно сценарию sed:

s/^/HELP!/

Крутая часть заключается в том, что rsавтоматически ставится ^/перед шаблоном замены, где разделитель ( /) не найден. Удобно для отступа кода.


Вы забываете, что Enterэто тоже инсульт. 10 ударов.
vapcguy

1
@vapcguy Верно. Исправлена.
kirbyfan64sos

-3

Я полагаю, что самым быстрым, что это можно сделать в любом скрипте, является 11-й случайный случай с Pyth, поскольку любой язык будет нуждаться в каком-либо символе, таком как «p» или кавычка или звездочка или что-то, затем слово HELP!, и это Eбудет происходить быстрый, означающий дополнительные нажатия клавиш для перемещения курсора назад, прежде чем Eвставить H, как он нашел, затем снова вперед для Lи P.

Если у вас есть что-либо, требующее командного слова, например dispили echo, вам нужно будет сначала сделать пробел, прежде чем оно будет оторвано, Shiftи !, а затем использовать Homeклавишу, чтобы начать свое слово, и клавиши со стрелками, как описано для Random HELP. Но вы будете возиться с ними, пока вы просто не засосете или не потеряете ключи, которые вам нужны слишком быстро, чтобы сделать что-то из этого. Максимум 14 символов, и это при условии, что ваш последний - \или |. Вам нужно 10, чтобы сделать HELP!:

SHIFT ! HOME E LT ARROW H RT ARROW L P ENTER

Определение "или *или Pбудет нажата непосредственно перед H. Так что 11 должно быть самым быстрым. Или 9, если мы опускаем восклицательный знак и пишем все с заглавной буквы и не имеем символа для ввода.

Но нет, я, будучи интернет-историком в 87,539,319 году и всем, и будучи параноиком инопланетян и странного метеорного потока, не говоря уже о черной дыре, я не согласился бы на это. До того, как я отправился в открытый космос, я был бы готов, с этой статьей, которую я нашел бы в своем исследовании, чтобы поблагодарить за это. Я хотел бы загрузить текстовый файл, который уже имеет «HELP!» в нем и есть программа, которая могла бы записать мою координату, используя последние данные о спутниках слежения, которые мы имеем в этом файле. Эту программу я бы назвал "hlp.c", так что она пошла бы:

7 нажатий клавиш:

c Home h l p . Enter

Я понимаю, что мог бы сделать свое имя файла короче, но никто не хочет сообщать о своей позиции случайно, печатая, Hи Enter, особенно, если программа также предупреждает власти (немного похоже на вызов 911, когда у вас нет экстренной помощи?), Так что давайте перейдите к трехбуквенному имени файла, и мы будем предполагать, что у нас все еще должны быть расширения файла с .минимум 1 символом. Кроме того, присвоение ему имени hlpвместо того, helpчтобы избежать использования этих неприятных встроенных функций справки, когда мы собираемся умереть в черной дыре. Я понимаю, что могу даже пропустить ввод .c, просто делая это h l p Enter, но таким образом я избегаю этих неприятных Please supply file extensionилиCannot find hlpошибки, когда я собираюсь засосать в черную дыру. «Мусор, мусор», в конце концов, все еще будет стандартом в будущем.

Таким образом, моя графика будет выглядеть так:

введите описание изображения здесь

И это также будет легко запомнить, поскольку единственная «отсталость» - это печатать cпервым. Остальное так же, как имя файла.


2
Прежде всего, если вы собираетесь запустить программу (в которой уже есть код), то это можно рассматривать как комбинацию нескольких стандартных лазеек . Во-вторых, это код-гольф, поэтому вы должны дать реальный код, а не допускать, что код уже присутствует в файле с именем hlp.c. В-третьих, вы должны предоставить список нажатий клавиш для программы, не запускающей программу. В-четвертых, Cпрограммы ...
Оптимизатор

1
... не беги так. Вы должны сначала скомпилировать их и запустить их. Так что вам, по крайней мере, придется сделать help.exe(или help.out), чтобы запустить файл скомпилированного кода. И, наконец, если вы слишком сильно нарушаете правила и используете лазейки, почему бы просто не получить файл с именем h.c?
Оптимизатор

Намерение с .cфайлом состояло в том, что это мог быть CSCRIPT, а не фактический код C, который потребовал бы компилятора. Если h.cпри попытке ввести имя другого файла, содержащего только 1 символ в имени, это может означать, что он случайно вызывается вместо другого файла - я уже объяснил это. Независимо от кода , который был в .cфайле, был ли он Console.Log("HELP!"), Console.WriteLine("HELP!")и т.д., в основном не имеет значения, тем более , что она также будет включать в себя код для интерфейса со спутниками , чтобы получить координату исправить - что - то я уверен , что в будущем будут открыты источник.
vapcguy

Моя точка зрения в этом посте также заключалась в том, чтобы указать, что наличие имени файла или чего-то другого, выходящего за пределы правил, будет единственным способом преодолеть 11 нажатий клавиш, кстати, поскольку это занимает 10 раз HELP!, как я уже упоминал до Кирби и только меньше, например 9, если капитализация и использование Shift не имели значения, и нам не нужно было иметь символ до или после HELP, например, с восклицательным знаком или, в случае с Кирби, вводить ключ символ, как pили, *чтобы начать программу.
vapcguy

А help.exeи help.outне будет работать с черной дырой, разорваны ключами. К eтому времени, когда exeпридет время , tоно исчезнет, ​​а при попытке напечатать исчезнет out. Вы можете введите tв out, первый, а затем нажмите кнопку Home, и введите HELPчасть, но если вы можете сохранить расширение на 1 символ, почему бы не вы?
vapcguy
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.