Tugas Anda adalah untuk menciptakan sebuah program yang akan menampilkan teks berikut, menunggu pengguna untuk menekan tombol (tidak apa-apa untuk mengabaikan kunci seperti ctrl
, alt
, caps lock
, dll, selama kunci seperti letters
, numbers
, symbols
, dan enter
tidak diabaikan), dan kemudian menghentikan program:
Press any key to continue...
Trailing newlines diizinkan. Program harus segera keluar setelah tombol ditekan. Selain itu, program harus cukup portabel (yaitu tidak ada header atau modul khusus OS, berjalan di luar IDE, dll.).
Prompt harus persis seperti yang ditunjukkan di atas, kecuali baris baru yang tertinggal tidak dapat dihindari.
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang. Ini juga pertanyaan kode-golf pertama saya, jadi saya minta maaf jika saya tidak tahu aturan tentang PPCG.
PAUSE
menjadi jawaban yang valid (elipsis tersebar dari...
ke. . .
)?pause
fungsi bahasa mungkin tidak sensitif terhadap tombol-tombol seperti Caps-Lock atau Control (ditekan sendiri). Mungkin Anda harus mengklarifikasi jika program diizinkan untuk tidak melihat kunci-kunci ituJawaban:
SmallBasic,
1817 byte17 byte
18 byte
sumber
TextWindow.Show()
? Berdasarkan situs ini yang seharusnya memiliki efek yang sama.Batch, 46 byte
Karena
pause
output berisi ruang sebelum masing-masing.
.sumber
x
,? Kemudian filex
akan dibuat yang menampung teksPress any key to continue . . .
. Menghemat 2 byte, tapi saya tidak yakin apakah itu bertentangan dengan tantangan ini atau celah standar apa pun.@choice /n /m Press any key to continue...
mungkin juga beberapa dekade yang lalu.choice
setara denganchoice /c SN
(untuksim
(ya) dannão
(tidak) dalam bahasa Portugis).HTML + JavaScript (ES6), 36 + 25 = 61 byte
Anda tidak dapat benar-benar keluar dari program JavaScript, jadi membersihkan halaman web adalah yang terbaik yang bisa saya pikirkan.
HTML + JavaScript (ES6), 33 + 28 = 61 byte
Solusi alternatif yang disarankan oleh @LarsW yang dialihkan ke
about:blank
.HTML / JavaScript, 60 byte
Solusi hebat lainnya dari @Ismael Miguel yang tidak menggunakan JS mandiri. 1 byte disimpan!
HTML + JavaScript (ES6), 26 + 28 = 54 byte
Namun solusi lain oleh @George Reith memanfaatkan penulisan dokumen.
HTML + JavaScript (ES7), 23 + 28 = 51 byte
Program yang sama menggunakan operator mengikat ES7 yang diusulkan :
Karena sebagian besar solusi ini bukan milik saya, lakukan penghormatan dan pilih mereka di komentar!
sumber
<html onkeyup=this.innerHTML=''>Press any key to continue...
<- 60 byte. Cobalah di jsfiddle.net/xhb69401 (ini bekerja dengan keduanya<html>
dan<body>
)onkeyup=_=>document.open()
denganPress any key to continue...
total 54 byte.onkeyup=::document.open
.MATL, 35 byte
Penjelasan
sumber
Y.
tidak juga. Mungkin OP harus mengklarifikasi. Kunci-kunci seperti Control dan Caps-lock akan gagal di sebagian besar solusiTI-Basic, 55 byte
Pada dasarnya, loop sampai tombol ditekan. Huruf kecil yang terlalu buruk masing-masing dua byte di TI-Basic ...
PS Lihat komentar oleh @GoldenRatio untuk penjelasan tentang cara kerjanya. Itu jenius!
sumber
:Disp "Press any
(jangan lupa: dalam kode Anda, itu penting) danDisp "key to continuesin(
(Dosa memaksa ... dalam 1 byte untuk mengganti baris baru dan disp, dan ini menghemat ruang antara apa pun dan kunci)getKey
2 byte ketika itu sebenarnya 1. Saya kira denganText(
atauOutput(
Anda bisa memasukkan semuanya pada satu baris. Tapi, saran Anda lebih baik. Saya tidak berpikir tentang menggunakan elipsis implisit di akhir baris. Terima kasih lagi, saya akan mengeditnya sekarang.Disp
dua baris atau tidak (tapi, tidak selalu seperti ini).Bash,
464342 byteDisimpan 1 byte berkat @DigitalTrauma
Menggunakan
read
built-in.-r
memastikan itu tidak memungkinkan pengguna untuk memasukkan lolos.-n 1
memungkinkan hanya satu karakter.-p
adalah promptsumber
-n 1
. Ia bekerja tanpa menekan enter untuk saya (v3.2.57) dan pada mesin debain saya (v4.3.30)-rn1
menghemat 1 byteHaskell ,
5150 byte (Terima kasih @ villou24)Cobalah online!
sumber
getChar
.putStr
dan string.Oktaf / MATLAB, 42 byte
sumber
QBasic ( QB64 ), 37 (42?) Byte
Sayangnya, prompt akhir program bawaan QBasic tidak memiliki ellipsis, jadi kita harus mencetaknya sendiri:
(
SLEEP
tanpa argumen menunggu sampai penekanan tombol.)Kode ini melakukan apa yang ditanyakan secara harfiah, tetapi sepertinya tidak cocok dengan semangat pertanyaan karena, tentu saja, QBasic kemudian menampilkan "Tekan sembarang tombol untuk melanjutkan" dan menunggu penekanan tombol sebelum kembali ke IDE. Inilah yang langsung menuju IDE, untuk +5 byte:
STOP
adalah pernyataan debugging. Dalam QBasic reguler, ia menetapkan breakpoint: eksekusi berhenti dan kami kembali ke IDE, tetapi eksekusi dapat dilanjutkan kembali dengan F5. Tidak jelas apakah itu akan dianggap sebagai program "keluar." Namun, saya menggunakan emulator QB64, yang tidak dapat melakukan breakpoint. Setelah bertemuSTOP
, itu hanya berhenti - kembali langsung ke IDE tanpa pesan "Tekan sembarang tombol" yang berlebihan.sumber
LOCATE
hanya untuk mencetak titik-titik setelahnya, tetapi QBasic menghapus seluruh baris bawah ketika mencetak pesan ini ...Memproses,
8981 bytePenjelasan
Ini diperlukan karena saya menggunakan lebih dari satu fungsi dalam program saya. Apa pun di dalamnya
setup()
dipanggil, dalam hal ini string"Press any key to continue..."
.Cek apakah
key
(key
akan selalu berisi nilai int dari tombol terakhir yang ditekan) lebih dari0
(yaitu bukan byte nol). Jika kondisinya terpenuhi, maka program keluar.draw()
memastikan bahwa program akan selalu terus mencari kunci alih-alih berhenti setelah program dimulai.(Rasanya ketika builtin dalam bahasa seperti Java masih bertele-tele ...)
sumber
void steup(){...}
denganstatic{...}
Pascal,
7565 byteIni diuji dengan Free Pascal Compiler, versi 3.0.0.
Ini dapat bekerja dengan TurboPascal 7 atau lebih baru.
Sayangnya, saya tidak bisa menggantikan
readkey
denganreadln
sejak tantangan mensyaratkan bahwa setiap kunci diterima.Saya telah menguji kode ini di http://rextester.com/l/pascal_online_compiler , dengan dan tanpa memasok input.
Seperti yang diharapkan, program dihentikan setelah 10-an, karena duduk menunggu penekanan tombol yang tidak pernah terjadi.
Terima kasih kepada @manatwork karena telah menyelamatkan saya 10 byte dengan membuktikan saya salah, dan menunjukkan bahwa saya tidak memerlukannya
program _;
.sumber
program
kata kunci. (Sebenarnya saya tidak pernah bertemu dengan implementasi kuno seperti itu.)program
dan itu mengeluh. Juga, saya terkadang menggunakan TurboPascal. Yang satu membutuhkan (perhatikan: membutuhkan ) yangprogram
ada. Jika Anda tahu tempat saya dapat menguji di mana ia berjalan tanpaprogram
, saya akan menghapusnya. Aku benci memilikinya di sana. Dan ituuses Crt;
.program;
alih-alih menghapus bagian itu. Terima kasih sudah mengingatkan saya akan hal itu.Gores, 81 byte
( Tautan Scratchblock )
Jika Anda ingin menghentikan seluruh program ketika Anda menekan tombol (termasuk utas lainnya) Anda harus menambahkan
stop all
. Jika Anda ingin menyingkirkan dialog say, Anda memerlukansay
blok kosong (stop all
berfungsi juga).Nyaman bahwa Scratch memiliki builtin untuk ini!
sumber
Bash
484442 byte@ mame98 Terima kasih telah menyimpan 4 byte.
@RaisingAgent Terima kasih telah menyimpan 2 byte.
sumber
read -srn1 -p".."
dan menghapus spasi terakhir dalam kutipan promt. Juga, saya tidak yakin apakah Anda memerlukan 's' flag_
&-s
R, 56 byte
Ini berfungsi di terminal Linux dan OSX.
sumber
Ruby (2.3) (+ Batch),
5255545346 byteSekarang 46 byte berkat Alexis Andersen.
Catatan: Diuji pada Windows, mungkin tidak berfungsi jika tidak ada
pause
perintah.Penjelasan
Puts
teks yang dibutuhkan:Akhiri garis:
Jalankan
pause
perintah Batch dan output pipa kenul
:sumber
pause>nul
` atau bahkan lebih pendek, cukup gunakan get (juga, tidak ada cara yang baik untuk memasukkan backtick dalam blok kode dalam komentar)gets
menunggu masuk, dan bukan sembarang tombol?Java, 127 byte
Catatan: konsol harus diatur ke mode mentah agar ini berfungsi.
sumber
Also, the program must be fairly portable (i.e no OS-specific headers or modules, runs outside of an IDE, etc.)
jika Anda mengikuti tautan SO itu, tidak ada cara OS-independen untuk melakukan ini. Artinya, jawaban yang Anda tautkan sama validnya dengan jawaban ini.SmileBASIC, 52 byte
sumber
Python 2, 110 byte
sumber
Mathematica, 62 byte
Penjelasan
sumber
SmileBASIC, 55 byte
Dijelaskan:
sumber
WHILE""==INKEY$()WEND
lebih kecilPython 2/3 POSIX, 85 byte
sumber
Python 3, 65 byte
Membutuhkan versi Windows Python.
msvcrt.getch () tidak menunggu tombol enter ditekan seperti input (), ia mengembalikan tombol pertama yang ditekan.
Python Documents untuk msvcrt.getch (): https://docs.python.org/3/library/msvcrt.html#msvcrt.getch
Berkat @ Fliptack untuk menghemat beberapa byte
sumber
import msvcrt
tempatfrom msvcrt import*
tampaknya lebih pendek 1 byteNode.js,
10210199 bytesumber
with
: pastebin.com/BhrAyq2Kwith
telah menyelamatkan saya byte (atau byte)stdout.write`Press any key to continue...`
akan menghemat 2 byte di ES6.process.stdout.write
tidak melakukan konversi implisit ke string (itu hanya kesalahan).Sinclair ZX81 / Timex TS1000 BASIC: Metode 1 kira-kira 41 byte
Metode 2 sekitar 38 BYTES
Saya lebih suka metode 1 seperti pada ZX81, ada layar berkedip ketika
PAUSE
dipanggil, dan jika Anda ingin cukup lama (memberikan ZX81 tidak terlalu panas atau crash) jeda akhirnya akan berakhir, sedangkan metode 1 terjebak dalam loop tak terbatas hingga tombol ditekan, dan tidak ada layar berkedip.Saya akan menghitung jumlah byte yang benar yang digunakan nanti ketika saya memiliki bit BASIC yang tepat yang akan memberi tahu saya. Ngomong-ngomong, menggunakan VAL "x" alih-alih nomornya menghemat RAM yang berharga pada ZX81 (saya pikir ini juga sama untuk ZX Spectrum).
sumber
1 PRINT "Press any key to continue...": PAUSE 4e4
PAUSE 0
berhenti selamanya.PAUSE 0
di ZX81 BASIC tidak berhenti selamanya.Perl 5, 79 byte
digunakan sebagai:
Tentu saja tidak ada hadiah. Saya yakin beberapa orang perl akan memiliki cara yang lebih baik.
(89 byte jika doa penerjemah juga perlu dimasukkan dalam hitungan)
sumber
system
dalam bytecount-nya, jadi saya tidak tahu apa yang Anda maksud dengan komentar itu.$|=1
tidak perlu, Anda memiliki spasi setelahnyaprint
, Anda dapat meletakkan tanda kurung di sekitar argumenread
, Anda dapat menggunakan backticks alih-alih sistem, dan akhirnya,print
mengembalikan 1, sehingga Anda dapat menggunakannya sebagai ganti sampah1
dalam panggilan keread
. Jadi pada akhirnya, kita mendapatkan:perl -e '`stty cbreak`;read STDIN,$a,print"Press any key to continue..."'
say
, meskipun saya pikir pendekatan ini gagal persyaratan "portabel". Solusi portabel terbaik yang dapat saya temukan adalahperl -MTerm::ReadKey -E'say"Press any key to continue...";ReadMode 3;ReadKey'
(52 byte + 16 byte untuk-MTerm::ReadKey<space>
). Hati-hati, ini akan mengacaukan terminal Anda kecuali Anda mengembalikan mode baca di akhirReadMode 1
.say
, saya cenderung tidak menggunakannya lagi (saya setuju sebagian besar dengan posting meta ini ). Sekarang kembali ke kode pendek,IO::Prompt
akan lebih pendek dariTerm::ReadKey
(40 + 13 = 53 bytes):perl -MIO::Prompt -e 'prompt"Press any key to continue... ",-1'
. Dan seperti yang terjadi, itu bahkan lebih pendek dari apa yang saya sarankan di komentar saya sebelumnya.-E
argumen. Namun, terakhir kali saya memeriksa, jawaban JB tidak dipertanyakan selama empat tahun, jadi itulah yang saya ikuti. Mungkin saya perlu mengunjungi lagi. Adapun IO :: Prompt, temukan bagus! Meskipun tidak bekerja pada Strawberry 5.20.2 saya di Windows, sementara Term :: ReadKey tidak.PHP, 73 byte
Jalankan di shell interaktif PHP (
php -a
)sumber
C #, 101 byte
Diuji di Linux, harus berjalan pada sistem yang memiliki pustaka .NET dan Common Language Runtime
Program tidak digabungkan:
CTRL, ALT, SHIFT diabaikan. Tombol yang ditekan akan bergema di layar jika dapat dicetak.
Echo dapat dinonaktifkan dengan mengganti C.Read () dengan C.ReadKey (0 <1) dengan biaya 6 byte lebih banyak.
sumber
8 , 47 byte
Program ini mengabaikan kunci seperti ctrl, alt, caps lock. Berhenti dengan tombol seperti huruf, angka, simbol, dan masukkan.
Penjelasan
sumber
cr
C #, 29 byte
Tidak yakin apakah ini dianggap valid karena mencetak:
Tetapi ada jawaban Batch yang mencetak ini juga.
sumber
Keempat (gforth), 39 byte
(Ya, sudah ada solusi ke-8 tetapi ini lebih pendek)
sumber