Twoim zadaniem jest stworzyć program, który będzie wyświetlany następujący tekst, poczekaj użytkownikowi naciśnięciu klawisza (to jest w porządku, jak ignorowanie klawiszy ctrl
, alt
, caps lock
, itd., Tak długo, jak klucze podoba letters
, numbers
, symbols
, i enter
nie są ignorowane), a następnie zakończ program:
Press any key to continue...
Końcowe znaki nowej linii są dozwolone. Program musi wyjść natychmiast po naciśnięciu klawisza. Ponadto program musi być dość przenośny (tzn. Nie może mieć nagłówków ani modułów specyficznych dla systemu operacyjnego, działa poza środowiskiem IDE itp.).
Monit musi być dokładnie taki, jak pokazano powyżej, chyba że nie można uniknąć końcowego znaku nowej linii.
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach. To jest również moje pierwsze pytanie dotyczące golfa, więc przepraszam, jeśli nie znam zasad dotyczących PPCG.
PAUSE
byłby prawidłową odpowiedzią (elipsa jest przenoszona od...
do. . .
)?pause
funkcji języka jest prawdopodobnie niewrażliwa na klawisze, takie jak Caps-Lock lub Control (naciśnięta samodzielnie). Może powinieneś wyjaśnić, czy program może nie zauważać tych kluczyOdpowiedzi:
SmallBasic,
1817 bajtów17 bajtów
18 bajtów
źródło
TextWindow.Show()
? Na podstawie tej strony, która powinna mieć taki sam efekt.Partia, 46 bajtów
Ponieważ
pause
wynik zawiera przed każdym spacją.
.źródło
x
,? Następnie utworzonyx
zostanie plik zawierający tekstPress any key to continue . . .
. Oszczędza 2 bajty, ale nie jestem pewien, czy jest to sprzeczne z tym wyzwaniem lub standardowymi lukami.@choice /n /m Press any key to continue...
było to możliwe jeszcze kilkadziesiąt lat temu.choice
jest równoważnechoice /c SN
(dlasim
(tak) inão
(nie) w języku portugalskim).HTML + JavaScript (ES6), 36 + 25 = 61 bajtów
Naprawdę nie możesz wyjść z programu JavaScript, więc wyczyszczenie strony internetowej jest najlepsze, o czym myślę.
HTML + JavaScript (ES6), 33 + 28 = 61 bajtów
Alternatywne rozwiązanie sugerowane przez @LarsW, które przekierowuje do
about:blank
.HTML / JavaScript, 60 bajtów
Kolejne niesamowite rozwiązanie @Ismael Miguel, które nie korzysta z samodzielnego JS. Zapisano 1 bajt!
HTML + JavaScript (ES6), 26 + 28 = 54 bajty
Kolejne rozwiązanie @George Reith wykorzystujące zapisy dokumentów.
HTML + JavaScript (ES7), 23 + 28 = 51 bajtów
Ten sam program korzystający z proponowanego operatora powiązania ES7 :
Ponieważ większość z tych rozwiązań nie należy do mnie, prosimy o uprzejmość i oddać je w komentarzach!
źródło
<html onkeyup=this.innerHTML=''>Press any key to continue...
<- 60 bajtów. Wypróbuj na jsfiddle.net/xhb69401 (działa z oboma<html>
i<body>
)onkeyup=_=>document.open()
zPress any key to continue...
łączną liczbą 54 bajtów.onkeyup=::document.open
.MATL, 35 bajtów
Wyjaśnienie
źródło
Y.
też nie. Może PO powinien to wyjaśnić. Klawisze takie jak Control i Caps-lock zawiodą w większości rozwiązańTI-Basic, 55 bajtów
Zasadniczo pętla do momentu naciśnięcia klawisza. Szkoda, że małe litery to dwa bajty w TI-Basic ...
PS Zobacz komentarz @GoldenRatio, aby uzyskać wyjaśnienie, jak to działa. To geniusz!
źródło
:Disp "Press any
(nie zapomnij: w twoim kodzie liczy się) iDisp "key to continuesin(
(Grzech zmusza ... w 1 bajcie, aby nadrobić nową linię i disp, a to oszczędza przestrzeń między dowolnym a kluczem)getKey
ma 2 bajty, gdy w rzeczywistości jest 1. Przypuszczam, że zText(
lubOutput(
możesz zmieścić to wszystko w jednym wierszu. Ale twoja sugestia jest lepsza. Nie myślałem o użyciu niejawnej elipsy na końcu linii. Jeszcze raz dziękuję, teraz to zmodyfikuję.Disp
dwie linie, czy nie (ale nie zawsze tak jest).Bash,
464342 bajtówZapisano 1 bajt dzięki @DigitalTrauma
Korzysta z
read
wbudowanego.-r
upewnia się, że nie pozwala użytkownikowi na wprowadzanie znaków ucieczki.-n 1
pozwala tylko jednej postaci.-p
jest monitemźródło
-n 1
. Działa bez naciskania Enter dla mnie (v3.2.57) i na mojej maszynie debain (v4.3.30)-rn1
oszczędza 1 bajtHaskell ,
5150 bajtów (Thanks @ villou24)Wypróbuj online!
źródło
getChar
.putStr
i ciąg.Octave / MATLAB, 42 bajty
źródło
QBasic ( QB64 ), 37 (42?) Bajtów
Niestety, wbudowany monit QBasic na końcu programu nie ma wielokropka, więc będziemy musieli go wydrukować:
(
SLEEP
bez argumentu czeka na naciśnięcie klawisza).Ten kod robi to, o co pyta dosłownie pytanie, ale nie wydaje się, aby pasował do ducha pytania, ponieważ, oczywiście, QBasic wyświetla „Naciśnij dowolny klawisz, aby kontynuować” i czeka na naciśnięcie klawisza przed powrotem do IDE. Oto jeden, który idzie prosto do IDE, dla +5 bajtów:
STOP
jest instrukcją debugowania. W zwykłym QBasic ustawia punkt przerwania: wykonanie zatrzymuje się i wracamy do IDE, ale wykonanie można wznowić za pomocą F5. Nie jest jasne, czy byłoby to liczone jako program „wychodzący”. Używam jednak emulatora QB64, który nie może wykonywać punktów przerwania. Po napotkaniuSTOP
po prostu zatrzymuje się - wraca prosto do IDE bez zbędnego komunikatu „Naciśnij dowolny klawisz”.źródło
LOCATE
prostu wydrukować kropki po nim, ale QBasic usuwa cały dolny wiersz, gdy drukuje ten komunikat ...Przetwarzanie,
8981 bajtówWyjaśnienie
Jest to wymagane, ponieważ w moim programie korzystam z więcej niż jednej funkcji. Wywoływane
setup()
jest wszystko wewnątrz , w tym przypadku ciąg znaków"Press any key to continue..."
.Sprawdza, czy
key
(key
zawsze będzie zawierała wartość int ostatniego naciśniętego klawisza) jest większa niż0
(tj. Nie jest bajtem zerowym). Jeśli warunek jest spełniony, program kończy działanie.draw()
zapewnia, że program zawsze będzie szukał klucza zamiast zatrzymywać się po uruchomieniu programu.(To uczucie, gdy wbudowane narzędzie w języku Java jest wciąż pełne ...)
źródło
void steup(){...}
zstatic{...}
Pascal,
7565 bajtówZostało to przetestowane za pomocą kompilatora Free Pascal, wersja 3.0.0.
Może działać z TurboPascal 7 lub nowszym.
Niestety, nie mogę wymienić
readkey
zreadln
ponieważ wyzwanie wymaga, aby każdy klucz zostać zaakceptowane.Przetestowałem ten kod na http://rextester.com/l/pascal_online_compiler , z lub bez podania danych wejściowych.
Zgodnie z oczekiwaniami program zostaje zakończony po 10 sekundach, ponieważ czeka na naciśnięcie klawisza, które nigdy się nie zdarza.
Dzięki @manatwork za uratowanie mi 10 bajtów przez udowodnienie, że się mylę i pokazanie, że nie potrzebuję
program _;
.źródło
program
słowa kluczowego. (Właściwie nigdy nie spotkałem się z tak starożytną implementacją, która to zrobiła.)program
i narzekałem. Czasami używam TurboPascal. Ten wymaga (zauważ: wymaga )program
tam. Jeśli znasz jakieś miejsce, w którym mogę przetestować, gdzie działa bez niegoprogram
, usunę je. Nienawidzę go tam mieć. I żeuses Crt;
.program;
zamiast faktycznie usunąć ten kawałek. Dzięki za powiadomienie mnie o tym.Scratch, 81 bajtów
( Link Scratchblocks )
Jeśli chcesz, aby zatrzymał cały program po naciśnięciu klawisza (w tym innych wątków), musisz dodać
stop all
. Jeśli chcesz pozbyć się okna dialogowego powiedz, potrzebujesz pustegosay
bloku (stop all
działa również).Wygodne, że Scratch ma do tego wbudowaną funkcję!
źródło
Bash
484442 bajtów@ mame98 Dziękujemy za zapisanie 4 bajtów.
@ RaisingAgent Dziękujemy za zapisanie 2 bajtów.
źródło
read -srn1 -p".."
i usuń ostatnie miejsce w ofercie promt. Poza tym nie jestem pewien, czy potrzebujesz flagi „s”_
&-s
R, 56 bajtów
Działa to w terminalach Linux i OSX.
źródło
Ruby (2.3) (+ partia),
5255545346 bajtówTeraz 46 bajtów dzięki Alexis Andersen.
Uwaga: Testowany w systemie Windows może nie działać, jeśli nie ma
pause
polecenia.Wyjaśnienie
Puts
wymagany tekst:Zakończ linię:
Uruchom
pause
polecenie Batch i dane wyjściowe potoku, abynul
:źródło
pause>nul
` lub nawet krócej, wystarczy użyć get (także, nie ma dobrego sposobu na włączenie backsticka w bloku kodu w komentarzu)gets
czeka na wejście, a nie tylko dowolny klucz?Java, 127 bajtów
Uwaga: aby to działało, konsola musi być ustawiona w tryb raw .
źródło
Also, the program must be fairly portable (i.e no OS-specific headers or modules, runs outside of an IDE, etc.)
jeśli podążysz za linkiem SO, nie ma na to niezależnego sposobu. Oznacza to, że odpowiedź, którą podałeś, jest równie ważna jak ta.SmileBASIC, 52 bajty
źródło
Python 2, 110 bajtów
źródło
Mathematica, 62 bajty
Wyjaśnienie
źródło
SmileBASIC, 55 bajtów
Wyjaśnił:
źródło
WHILE""==INKEY$()WEND
jest mniejszyPython 2/3 POSIX, 85 bajtów
źródło
Python 3, 65 bajtów
Wymaga wersji Python dla systemu Windows.
msvcrt.getch () nie czeka na naciśnięcie klawisza Enter tak jak input (), zwraca pierwszy naciśnięty klawisz.
Python Docs dla msvcrt.getch (): https://docs.python.org/3/library/msvcrt.html#msvcrt.getch
Dzięki @Fliptack za zapisanie niektórych bajtów
źródło
import msvcrt
gdzieśfrom msvcrt import*
wydaje się być o 1 bajt krótszeNode.js,
10210199 bajtówźródło
with
: pastebin.com/BhrAyq2Kwith
zapisałem bajty (lub bajty)stdout.write`Press any key to continue...`
zapisze 2 bajty w ES6.process.stdout.write
nie dokonuje niejawnej konwersji na ciąg znaków (tylko błędy).Sinclair ZX81 / Timex TS1000 BASIC: Metoda 1 około 41 bajtów
Metoda 2 około 38 bajtów
Wolę metodę 1, jak w ZX81, gdy
PAUSE
wywoływany jest migotanie ekranu , a jeśli chcesz wystarczająco długo (pod warunkiem, że ZX81 nie przegrzeje się lub nie zawiesi), pauza w końcu dobiegnie końca, podczas gdy metoda 1 utknie w nieskończona pętla do momentu naciśnięcia klawisza i brak migotania ekranu.Wyliczę poprawną liczbę bajtów używanych później, kiedy mam odpowiedni BASIC, który mi powie. Nawiasem mówiąc, użycie VAL „x” zamiast liczby pozwala zaoszczędzić cenną pamięć RAM na ZX81 (myślę, że to samo dotyczy ZX Spectrum).
źródło
1 PRINT "Press any key to continue...": PAUSE 4e4
PAUSE 0
zatrzymuje się na zawsze.PAUSE 0
w ZX81 BASIC nie zatrzymuje się na zawsze.Perl 5, 79 bajtów
użyty jako:
Oczywiście żadnych nagród. Jestem pewien, że jakaś osoba Perla będzie miała lepszy sposób.
(89 bajtów, jeśli należy również uwzględnić inwokację interpretera)
źródło
system
na swoim bytecount, więc nie wiem, co miałeś na myśli z tym komentarzem.$|=1
nie jest to konieczne, masz po nim spacjęprint
, możesz upuścić nawias wokół argumentówread
, możesz użyć odwrotności zamiast systemu, a na koniecprint
zwraca 1, więc możesz użyć go zamiast literatura1
w wezwaniu doread
. W końcu otrzymujemy:perl -e '`stty cbreak`;read STDIN,$a,print"Press any key to continue..."'
say
, chociaż myślę, że to podejście nie spełnia wymogu „przenośności”. Najlepsze przenośne rozwiązanie, jakie mogę znaleźć, toperl -MTerm::ReadKey -E'say"Press any key to continue...";ReadMode 3;ReadKey'
(52 bajty + 16 bajtów-MTerm::ReadKey<space>
). Uważaj, to spieprzy twój terminal, chyba że przywrócisz tryb odczytu na końcu przy pomocyReadMode 1
.say
, raczej nie używam go już (zgadzam się głównie z tym postem). Teraz z powrotem do krótkiego kodu,IO::Prompt
będzie krótszy niżTerm::ReadKey
(40 + 13 = 53 bajty):perl -MIO::Prompt -e 'prompt"Press any key to continue... ",-1'
. I tak się składa, że jest nawet krótszy niż sugerowałem w poprzednim komentarzu.-E
argumentu. Ostatnim razem, gdy sprawdzałem, odpowiedź JB była niekwestionowana przez cztery lata, więc po to poszedłem. Może muszę to jeszcze raz odwiedzić. Co do IO :: Monit, dobre znalezisko! Chociaż nie działa na moim Strawberry 5.20.2 w systemie Windows, podczas gdy działa Term :: ReadKey.PHP, 73 bajty
Uruchom go w interaktywnej powłoce PHP (
php -a
)źródło
C #, 101 bajtów
Testowany na Linuksie, powinien działać na każdym systemie z bibliotekami .NET i środowiskiem uruchomieniowym Common Language.
Program bez golfa:
CTRL, ALT, SHIFT są ignorowane. Naciśnięty klawisz zostanie wyświetlony na ekranie, jeśli można go wydrukować.
Echa może być wyłączone przez zastąpienie C.Read () z C.ReadKey (0 <1) kosztem dodatkowych 6 bajtów.
źródło
8th , 47 bajtów
Ten program ignoruje klawisze takie jak Ctrl, Alt, Caps Lock. Wychodzi z klawiszami takimi jak litery, cyfry, symbole i enter.
Wyjaśnienie
źródło
cr
C #, 29 bajtów
Nie jestem pewien, czy jest to uważane za prawidłowe, ponieważ drukuje:
Ale istnieje odpowiedź wsadowa, która również to drukuje.
źródło
Dalej (gforth), 39 bajtów
(Tak, jest już 8. rozwiązanie, ale jest ono krótsze)
źródło