Швидкий! Уникнути чорної діри!


28

Настає 87 539 399 року, і поодинокі прогулянки по космосу зараз звичні, багато людей подорожують у космос самі, приводячись у рух, окрім реактивного пакета на спині, програмуючи свій курс за допомогою персонального комп’ютера та клавіатури.

Ви одна така людина; ви були на чудовому, спокійному космодромі, коли раптом вас захопила сила тяжіння чорної діри!

Піднімаючись до цієї чорної діри, все швидше спіралюючись всередину, ви усвідомлюєте, що ваш єдиний шанс на виживання - це трансляція повідомлення про лихо, і сподіваєтесь, що сусідський корабель прийде врятувати вас.

Отже, ви вириваєте клавіатуру і починаєте набирати програму.

Ваша програма може бути будь-якою мовою і повинна друкуватися HELP!до stdout (ваш ПК транслює всю stdout далеко в глибину простору.)

Однак, коли ви знаходитесь біля чорного отвору, клавіатура поволі виривається на клаптики!

Припустимо, що ви використовуєте клавіатуру QWERTY, як та, яка знаходиться нижче, і що чорна криниця знаходиться зліва;

РОЗМІСТАННЯ КВІТНОГО КЛЮЧА

Пам'ятайте, зсув вліво і вправо - це дві різні клавіші.

після кожного натискання клавіші найменший лівий рядок вашої клавіатури (клавіші, охоплені найбільш лівою червоною лінією) виривається і кидається в чорну діру!

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

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

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

Кожна відповідь повинна містити список натискань клавіш, тому, якщо моєю відповіддю була ця програма (на мові squardibblyack)

!HELP\.

кейліст може виглядати так:

Shift!HELP зміна випуску \.

довжина: 8

Я переживаю, що цей виклик може бути надто складним, але я хотів би побачити відповіді, що подаються!


13
Я заперечую це, тому що це занадто обмежено, щоб мати велику кількість творчості.
isaacg

4
Чи можна вважати, що використання оболонки python не printкваліфікується як STDOUT?
користувач80551

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!

Він просто замінює порожній рядок на "ДОПОМОГА!", Ефективно друкуючи його на екран. Приблизно еквівалентний сценарію sed:

s/^/HELP!/

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


Ви забуваєте, що Enterце теж інсульт. 10 ударів.
vapcguy

1
@vapcguy Правильно. Виправлено.
kirbyfan64sos

-3

Я вважаю, що найшвидше це можна зробити в будь-якому сценарії - це Random's 11 з Pyth, оскільки будь-яка мова потребує певного символу, наприклад, "p", лапки або зірочки чи чогось, то слово HELP!, і Eце буде йти швидкі, значущі додаткові натискання клавіш для переміщення курсору назад, перш ніж Eввести його H, як він знайшов, потім знову вперед для Lі P.

Якщо у вас є щось, що вимагає командного слова, як-от dispабо echo, вам доведеться спочатку зробити пробіл, перш ніж воно відірветься, Shiftі !, а потім скористатися Homeклавішею, щоб почати своє слово, і клавішами зі стрілками, як описано випадково HELP. Але ви будете махати своєю дорогою, поки ви просто не засмоктуєтесь або не втратите ключі, які вам потрібні занадто швидко, щоб зробити будь-який із них. Максимум 14 символів, і це припускають, що ваш останній є \або |. Вам потрібно 10, щоб зробити HELP!:

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

Визначальним "або *або Pб отримати натискається безпосередньо перед до H. Тож 11 має стати найшвидшим. Або 9, якщо ми не залишимо все вигуки та великі літери і не маємо символу для набору.

Але ні, я, будучи Інтернет-істориком у 87,539,319 року і все, і будучи параноїком прибульців та чудовищним метеорним зливом, не кажучи вже про чорну діру, я б не погодився з цим. До того, як я пішов на прогулянку в космос, я був би готовий, і ця стаття я б знайшла в своїх дослідженнях, щоб подякувати за це. Я б завантажував текстовий файл, у якому вже є "ДОПОМОГА!" і мати програму, яка могла б записати моє координатне положення, використовуючи останні дані супутникових даних для відстеження, які ми маємо у цьому файлі. Цю програму я б назвав "hlp.c", тому вона пішла б:

7 натискань клавіш:

c Home h l p . Enter

Я розумію , що я міг би зробити моє ім'я файлу коротше, але ніхто не хоче , щоб транслювати свої позиції випадково по типізації Hта Enter, особливо , якщо програма також попереджає владу (трохи як виклик 911 , коли у вас немає екстреної ситуації?) , Так що давайте перейдіть з 3-літерним ім'ям файлу, і ми припустимо, що ми все ще повинні мати розширення файлів з .мінімальним символом 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 натискань клавіш, btw, оскільки це займає 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.