Szybki! Ucieczka z czarnej dziury!

28

Jest rok 87.539.319 i samotne spacery kosmiczne są teraz powszechne, wiele osób podróżuje w kosmos sami, napędzani jedynie plecakiem odrzutowym na plecach, programując swój kurs za pomocą komputera osobistego i klawiatury.

Jesteś jedną z takich osób; byłeś na pięknym, spokojnym spacerze kosmicznym, kiedy nagle ogarnęła Cię grawitacja czarnej dziury!

Kiedy lecisz w kierunku tej czarnej dziury i kręcisz się coraz szybciej do wewnątrz, zdajesz sobie sprawę, że jedyną szansą na przetrwanie jest nadanie komunikatu o niebezpieczeństwie i masz nadzieję, że pobliski statek przybędzie na Ciebie.

Więc wyłamujesz klawiaturę i zaczynasz pisać program.

Twój program może być w dowolnym języku i musi być drukowany HELP!na standardowym wyjściu (komputer przesyła wszystkie standardowe sygnały w głąb przestrzeni).

Jednak gdy jesteś w pobliżu czarnej dziury, twoja klawiatura jest powoli rozrywana na strzępy!

Załóżmy, że używasz klawiatury QWERTY takiej jak ta poniżej i że blackhole znajduje się po lewej stronie;

UKŁAD KLAWIATURY QWERTY

Pamiętaj, że lewy i prawy shift to dwa różne klawisze.

po każdym naciśnięciu klawisza lewy rząd klawiatury (klawisze pokryte czerwoną lewą linią) jest odrywany i wrzucany do czarnej dziury!

Tak więc, pierwszym może być naciśnięcie dowolnego klawisza na klawiaturze, ale od tego momentu żaden z LEFTMOST Tab , Caps, Shift, Ctrllub `klucze mogą być używane, w ogóle . (nadal można używać r-shift i r-ctrl)

Po następnym naciśnięciem klawisza, klucze 1, Q, A, Zi Altsą odrzucił w otchłań i nie mogą być wykorzystane później. Po tym, można stracić Space, X, S, W, 2i tak dalej.

Oczywiście chcesz zakończyć program tak szybko, jak to możliwe, aby wydłużyć czas ratowania; dlatego jest to gra w golfa i wygrywa najkrótszy program w naciśnięciach klawiszy !

Każda odpowiedź powinna zawierać listę naciśnięć klawiszy, więc jeśli moją odpowiedzią był ten program (w języku squardibblyack)

!HELP\.

lista klawiszy może wyglądać następująco:

Shift!HELP zmiana zwolnienia \.

długość: 8

Obawiam się, że to wyzwanie może być zbyt trudne, ale chciałbym zobaczyć rodzaje odpowiedzi!

theonlygusti
źródło
13
Głosuję za tym, ponieważ czuję się zbyt ograniczony, aby mieć dużą kreatywność.
isaacg
4
Czy możemy założyć, że używanie powłoki Pythona bez printkwalifikuje się jako STDOUT?
user80551,
3
Co jeśli moja klawiatura ma klawiaturę numeryczną?
mbomb007
4
Może to być nieco lepsze w przypadku klawiszy strzałek.
user80551
6
Czy Caps Lock jest nadal skuteczny, jeśli zostanie naciśnięty, mimo że klawisz zniknął?
Josh Caswell

Odpowiedzi:

42

CJam, 11 naciśnięć klawiszy

Kod jest

"HELP*")9-

a lista klawiszy jest

Shift"HELP*") zmiana zwolnienia 9-

a oto demonstracja tego, jak to wygląda:

wprowadź opis zdjęcia tutaj

a oto jak działa kod:

"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";

Wypróbuj kod tutaj

Optymalizator
źródło
2
Używanie gwiazdki było całkiem sprytne! Nigdy o tym nie myślałem.
theonlygusti
2
Nie mogłem tego zrobić w GolfScript. To trochę za długo. Konwersja liczby całkowitej na ascii jest nieefektywna. "HELP*")9-[]+''+. Nie mogę wpisać ostatnich czterech.
mbomb007
3
Po prostu wiedziałem, że CJam będzie miał odpowiedź ...
Jerry Jeremiah
9
Tak więc jednym z najbardziej przyszłościowych języków na świecie jest CJam.
Fors
5
Uważaj na palec, gdy uderzasz w E, wygląda na to, że może zostać zabrany w otchłań!
Kanadyjczyk Luke REINSTATE MONICA
3

rs , 10 naciśnięć klawiszy (zakłada, że ​​użytkownik używa Nano)

Lub równoważny edytor, w którym Shiftnie zaznacza tekstu.

To nie jest tak naprawdę język programowania, ale jeśli sedmożna go używać w Code Golf, rsmożna go użyć.

Right Shift ! Left E Left H Right L P Enter

HELP!

Po prostu zastępuje pusty ciąg „HELP!”, Skutecznie drukując go na ekranie. Z grubsza odpowiada skryptowi sed:

s/^/HELP!/

Fajną częścią jest to, że rsautomatycznie umieszcza się ^/przed wzorem zastępczym, w którym /nie można znaleźć separatora ( ). Przydatny do wcięcia kodu.

kirbyfan64sos
źródło
Zapominasz, że Enterto także udar. 10 uderzeń.
vapcguy
1
@vapcguy Right. Naprawiony.
kirbyfan64sos
-3

Wierzę, że najszybszym, jaki można to zrobić w dowolnym skrypcie, jest Random 11 z Pyth, ponieważ każdy język będzie wymagał jakiegoś znaku, takiego jak „p”, znak cudzysłowu lub gwiazdka, czy coś, to słowo HELP!, i Eto pójdzie szybkie, co oznacza dodatkowe naciśnięcia klawiszy, aby przesunąć kursor z powrotem przed Ewprowadzeniem H, jak znalazł, a następnie ponownie do przodu dla Li P.

Jeśli masz coś, co wymaga słowa polecenia, na przykład displub echo, musisz najpierw zrobić spację, zanim zostanie oderwane, Shifta !następnie użyj Homeklawisza, aby rozpocząć słowo, i klawiszy strzałek, jak opisano losowo HELP. Ale będziesz się szperać, dopóki nie zostaniesz wciągnięty lub zgubisz klucze, których potrzebujesz zbyt szybko, aby wykonać którekolwiek z nich. Jest maksymalnie 14 znaków, i to zakładając, że twój ostatni to \lub |. Potrzebujesz tylko 10, aby HELP!:

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

Cechą "lub *czy Pdostanie wciśnięty tuż przed H. Więc 11 musi być najszybsze. Lub 9, jeśli pomińmy okrzyk i wielkie litery i nie mamy żadnego symbolu do wpisania.

Ale nie, ja, będąc historykiem Internetu w roku 87.539.319 i wszystkim, będąc paranoikiem kosmitów i dziwacznego deszczu meteorów, nie mówiąc już o czarnej dziurze, nie zadowoliłbym się tym. Zanim wyruszyłem w kosmos, byłbym przygotowany, z tym artykułem, który znalazłem w moich badaniach, aby podziękować za to. Załadowałbym plik tekstowy, który ma już „POMOC!” i mieć program, który mógłby zapisać moją pozycję współrzędnych przy użyciu najnowszych danych satelitarnych śledzenia, które mamy do tego pliku. Ten program nazwałbym „hlp.c”, więc powinien wyglądać następująco:

7 naciśnięć klawiszy:

c Home h l p . Enter

Zdaję sobie sprawę, że mogę skrócić nazwę mojego pliku, ale nikt nie chce przypadkowo nadać swojej pozycji, pisząc na klawiaturze, Ha Enterzwłaszcza, jeśli program ostrzega również władze (trochę jak dzwonienie pod 911, gdy nie masz nagłego wypadku?), Więc wybierz trzyliterową nazwę pliku, a założymy, że nadal musimy mieć rozszerzenia plików zawierające co .najmniej 1 znak. Nazwanie go hlpzamiast helpoznacza, że ​​unikniemy korzystania z tych paskudnych, wbudowanych funkcji Pomocy, gdy mamy umrzeć w czarnej dziurze. Zdaję sobie sprawę, że mógłbym nawet pominąć pisanie, .crobiąc to h l p Enter, ale w ten sposób unikam tych paskudnych Please supply file extensionlubCannot find hlpbłędy, kiedy mam zamiar zostać wciągnięty do czarnej dziury. „Śmieci w środku, śmieci w końcu” nadal będą standardem w przyszłości.

Moja grafika wyglądałaby następująco:

wprowadź opis zdjęcia tutaj

Byłoby to również łatwe do zapamiętania, ponieważ jedynym „zacofaniem” jest pisanie na cpoczątku. Reszta jest taka sama jak nazwa pliku.

vapcguy
źródło
2
Przede wszystkim, jeśli zamierzasz uruchomić program (który ma już kod), można go uznać za kombinację kilku standardowych luk . Po drugie, jest to golfowy kod, więc musisz podać rzeczywisty kod, a nie założenie, że kod jest już obecny w pliku o nazwie hlp.c. Po trzecie, należy podać listę naciśnięć klawiszy dla programu, nie uruchamiając programu. Po czwarte, Cprogramy ...
Optymalizator
1
... nie biegaj tak. Musisz je najpierw skompilować i uruchomić. Musisz więc przynajmniej zrobić help.exe(lub help.out), aby uruchomić skompilowany plik kodu. I na koniec, jeśli naginasz reguły i tak często korzystasz z luk, dlaczego po prostu nie wywołać pliku h.c?
Optymalizator
Celem .cpliku było to, że może to być CSCRIPT, a nie rzeczywisty kod C, który wymagałby kompilatora. Mając h.cmoże oznaczać, próbując wpisać nazwę innego pliku, a tylko 1 znak w nazwie, że jest przypadkowo nazywa zamiast innego pliku - Wyjaśniłem, że już. Jakikolwiek kod znajdujący się w .cpliku, czy był Console.Log("HELP!"), Console.WriteLine("HELP!")itp., Jest w dużej mierze nieistotny, zwłaszcza że zamierzał również zawierać kod do interfejsu z satelitami, aby uzyskać poprawkę współrzędnych - coś, co jestem pewien, że w przyszłości będzie otwarte źródło.
vapcguy
Moim celem w tym poście było również wskazanie, że posiadanie nazwy pliku lub czegoś poza granicami reguł będzie jedynym sposobem na pokonanie 11 naciśnięć klawiszy, skoro to zajmuje tylko 10 HELP!, jak wspomniałem, przed Kirby i tylko mniej, na przykład 9, jeśli wielkie litery i użycie Shift nie miały znaczenia i nie musieliśmy mieć postaci przed lub po HELP, na przykład z wykrzyknikiem, lub w przypadku Kirby, konieczności wpisywania klucza znak, jak a plub, *aby zainicjować program.
vapcguy
A help.exei help.outnie będzie działać z czarnej dziury zgrywania oprócz kluczy. eZniknie w momencie exepodszedł, a tznika, gdy próbuje wpisać out. Można wpisać tw outpierwsze, a następnie naciśnij przycisk Start, a następnie wpisz HELPczęść, ale jeśli można zachować rozszerzenie do 1 charakteru, dlaczego nie?
vapcguy