tekan tombol apa saja untuk melanjutkan

36

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 entertidak 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 , jadi jawaban tersingkat dalam byte menang. Ini juga pertanyaan kode-golf pertama saya, jadi saya minta maaf jika saya tidak tahu aturan tentang PPCG.

ckjbgames
sumber
4
Apakah case text output sensitif? Apakah WinBatch PAUSEmenjadi jawaban yang valid (elipsis tersebar dari ...ke . . .)?
FlipTack
13
Saya juga menyarankan menunggu satu atau dua minggu sebelum menerima jawaban apa pun
Kritixi Lithos
3
Sebagian besar pausefungsi 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 itu
Luis Mendo
15
Anda harus menunggu beberapa minggu sebelum menerima jawaban, seperti yang tak terhitung orang lain telah menyarankan Anda (namun Anda telah memilih untuk mengabaikan saran mereka)
FlipTack
12
@JungHwanMin Saya setuju dengan yang lain. Harap tunggu untuk menerima solusi sampai entri berhenti bergulir. Saya benar-benar tidak menikmati mengendarai Roller Coaster Reputasi
Suever

Jawaban:

5

SmallBasic, 18 17 byte

  • Versi 2.0

17 byte

TextWindow.Show()
  • Versi 1.0

18 byte

TextWindow.Pause()
Roman Gräf
sumber
3
Tidak bisakah kamu juga melakukannya TextWindow.Show()? Berdasarkan situs ini yang seharusnya memiliki efek yang sama.
Suever
20

Batch, 46 byte

@echo Press any key to continue...
@pause>nul

Karena pauseoutput berisi ruang sebelum masing-masing ..

Neil
sumber
5
Pengalihan bagus. Bisakah Anda juga mengirim output ke, katakanlah x,? Kemudian file xakan dibuat yang menampung teks Press any key to continue . . .. Menghemat 2 byte, tapi saya tidak yakin apakah itu bertentangan dengan tantangan ini atau celah standar apa pun.
steenbergh
Saya menggunakan sistem choice.exe-free sejak beberapa saat, tetapi saya merasa @choice /n /m Press any key to continue...mungkin juga beberapa dekade yang lalu.
manatwork
Pilihan memiliki nilai default sebagai J dan N, sehingga program hanya akan berjalan ketika J atau N ditekan jika saya ingat dengan benar.
geisterfurz007 Hentikan kekacauan ini
@ geisterfurz007 Juga, nilai default dilokalkan. Misalnya, bagi saya choicesetara dengan choice /c SN(untuk sim(ya) dan não(tidak) dalam bahasa Portugis).
Ismael Miguel
Ah, Anda benar, @ geisterfurz007. Sekarang saya ingat betapa konyolnya tampak file batch saya memiliki seluruh alfabet disebutkan. Ok, maka ini adalah ide mati.
manatwork
15

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.

onkeyup=_=>a.innerHTML=''
<a id=a>Press any key to continue...


HTML + JavaScript (ES6), 33 + 28 = 61 byte

Solusi alternatif yang disarankan oleh @LarsW yang dialihkan ke about:blank.

onkeyup=_=>location='about:blank'
Press any key to continue...


HTML / JavaScript, 60 byte

Solusi hebat lainnya dari @Ismael Miguel yang tidak menggunakan JS mandiri. 1 byte disimpan!

<html onkeyup=this.innerHTML=''>Press any key to continue...


HTML + JavaScript (ES6), 26 + 28 = 54 byte

Namun solusi lain oleh @George Reith memanfaatkan penulisan dokumen.

onkeyup=_=>document.open()
Press any key to continue...

HTML + JavaScript (ES7), 23 + 28 = 51 byte

Program yang sama menggunakan operator mengikat ES7 yang diusulkan :

onkeyup=::document.open
Press any key to continue...


Karena sebagian besar solusi ini bukan milik saya, lakukan penghormatan dan pilih mereka di komentar!

Darrylyeo
sumber
10
36 + 25 adalah 61 atau apakah saya melewatkan sesuatu?
2
@ LarsW, ckjbgames Baiklah, apa peluangnya? Anda tidak pernah tahu sampai Anda menulisnya! ;)
darrylyeo
2
<html onkeyup=this.innerHTML=''>Press any key to continue...<- 60 byte. Cobalah di jsfiddle.net/xhb69401 (ini bekerja dengan keduanya <html>dan <body>)
Ismael Miguel
2
Cara yang lebih singkat untuk menghapus dokumen dan tidak perlu berlabuh. onkeyup=_=>document.open()dengan Press any key to continue...total 54 byte.
George Reith
2
Juga dengan operator mengikat yang diusulkan berikutnya itu dapat dikurangi menjadi onkeyup=::document.open.
George Reith
14

MATL, 35 byte

'Press any key to continue...'D0$Y.

Penjelasan

'Press any key to continue...'      % String literal
D                                   % Display the string (has trailing newline)
0$Y.                                % Pause until the user presses any key
Suever
sumber
@LuisMendo Ah tangkapan bagus
Suever
2
Di sisi lain, Y.tidak juga. Mungkin OP harus mengklarifikasi. Kunci-kunci seperti Control dan Caps-lock akan gagal di sebagian besar solusi
Luis Mendo
1
@LuisMendo Tidak masalah melewatkan kunci kontrol, kunci caps, dll.
ckjbgames
@LuisMendo Bukankah modifikasi Anda memerlukan kunci enter? Atau mungkin saya salah mengingatnya
Suever
@Suever Oh, tentu saja! Masuk diperlukan
Luis Mendo
11

TI-Basic, 55 byte

Pada dasarnya, loop sampai tombol ditekan. Huruf kecil yang terlalu buruk masing-masing dua byte di TI-Basic ...

Disp "Press any","key to continuesin(
Repeat getKey
End

PS Lihat komentar oleh @GoldenRatio untuk penjelasan tentang cara kerjanya. Itu jenius!

Timtech
sumber
Pertama-tama, jumlah byte Anda saat ini tidak aktif, itu sebenarnya 55 byte (hanya membuat program pada TI-84 + dan diuji). Kedua, ini secara teknis tidak valid, karena tidak menampilkan Tekan tombol apa saja untuk melanjutkan ... dan alih-alih memotong hingga 15 karakter plus ... Alih-alih, mempertahankan jumlah byte, menjadikannya dua perintah disp. :Disp "Press any(jangan lupa: dalam kode Anda, itu penting) dan Disp "key to continuesin((Dosa memaksa ... dalam 1 byte untuk mengganti baris baru dan disp, dan ini menghemat ruang antara apa pun dan kunci)
Golden Ratio
Kalahkan saya untuk ini, bahasa pertama yang saya pikirkan.
C Anderson
Terima kasih atas tipnya @GoldenRatio, saya kira saya berpikir getKey2 byte ketika itu sebenarnya 1. Saya kira dengan Text(atau Output(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.
Timtech
Terima kasih untuk memperbarui itu, dan saya kira menggunakan disp dengan koma akhirnya memiliki alasan yang bagus, karena tidak pernah disimpan byte. Saya biasanya meletakkannya di baris yang terpisah karena kecenderungan saya untuk menekan tombol hapus: D. Juga, apakah ada metode resmi tentang cara menilai ukuran? Dengan ini saya maksudkan, seharusnya 9 byte saya tidak menghitung untuk hitungan nama program yang? Dan haruskah 1 byte untuk titik dua awal yang tidak dapat dihapus dihitung? Saya menandai itu sebagai 0 byte, karena untuk menemukan ruang saya terbiasa mengurangi 10 untuk ukuran program, tapi mungkin titik dua harus dihitung.
Rasio Emas
Tidak, pada dasarnya jika Anda membuat program yang benar-benar kosong dan dihitung 0 byte, maka Anda mulai dari sana. Itu seperti menghitung nama file file sumber. Juga, titik dua awal hanya untuk pertunjukan dan sebenarnya bukan bagian dari program. Faktanya, setiap baris baru secara otomatis menunjukkan titik dua di editor pada kalkulator, tetapi sekali lagi, ini hanya untuk pertunjukan (coba cemetech sourcecoder untuk melihat apa yang saya maksud). Terakhir, bytecount sama apakah kita membagi Dispdua baris atau tidak (tapi, tidak selalu seperti ini).
Timtech
8

Bash, 46 43 42 byte

Disimpan 1 byte berkat @DigitalTrauma

read -rn1 -p"Press any key to continue..."

Menggunakan readbuilt-in. -rmemastikan itu tidak memungkinkan pengguna untuk memasukkan lolos. -n 1memungkinkan hanya satu karakter. -padalah prompt

Downgoat
sumber
Tidak berlanjut sampai saya menekan <cr>
Glenn Randers-Pehrson
@ GlennRanders-Pehrson Saya percaya itu bisa terjadi jika bash Anda tidak mendukung -n 1. Ia bekerja tanpa menekan enter untuk saya (v3.2.57) dan pada mesin debain saya (v4.3.30)
Downgoat
Juga tidak berfungsi jika saya mengetikkan kutipan (")
Glenn Randers-Pehrson
1
Apakah berfungsi OK jika saya meletakkan baris dalam file (anykey.sh) dan jalankan itu. Bekerja dengan baik juga bahkan jika saya menghapus ruang antara "-rn" dan "1".
Glenn Randers-Pehrson
1
-rn1menghemat 1 byte
Trauma Digital
8

Haskell , 51 50 byte (Terima kasih @ villou24)

main=putStr"Press any key to continue...">>getChar

Cobalah online!

Erik
sumber
6
Itu menunggu masuk. Anda bisa menggunakannya getChar.
Christian Sievers
1
Anda dapat menyimpan byte dengan menghapus spasi di antara putStrdan string.
villou24
Biarkan penjawab mengedit posnya sendiri, @ckjbgames, jangan lakukan itu untuknya
MildlyMilquetoast
5

Oktaf / MATLAB, 42 byte

disp('Press any key to continue...');pause
Suever
sumber
Saya memutakhirkan jawaban ini sebulan yang lalu, dengan asumsi itu optimal ... Tapi Anda sudah kalah :)
Stewie Griffin
4

QBasic ( QB64 ), 37 (42?) Byte

Sayangnya, prompt akhir program bawaan QBasic tidak memiliki ellipsis, jadi kita harus mencetaknya sendiri:

?"Press any key to continue..."
SLEEP

( SLEEPtanpa 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:

?"Press any key to continue..."
SLEEP
STOP

STOPadalah 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 bertemu STOP, itu hanya berhenti - kembali langsung ke IDE tanpa pesan "Tekan sembarang tombol" yang berlebihan.

DLosc
sumber
Anehnya, 'Tekan tombol apa saja untuk melanjutkan' juga muncul ketika menjalankan exe QB64 mandiri. Saya mencoba menggunakan LOCATEhanya untuk mencetak titik-titik setelahnya, tetapi QBasic menghapus seluruh baris bawah ketika mencetak pesan ini ...
steenbergh
4

Memproses, 89 81 byte

void setup(){print("Press any key to continue...");}void draw(){if(key>0)exit();}

Penjelasan

void setup(){print("Press any key to continue...");}

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

if(key>0)exit();

Cek apakah key( keyakan selalu berisi nilai int dari tombol terakhir yang ditekan) lebih dari 0(yaitu bukan byte nol). Jika kondisinya terpenuhi, maka program keluar.

void draw(){}

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 ...)

Kritixi Lithos
sumber
Saya tidak benar - benar tahu Sedang Mengolah, tapi saya pikir Anda harusnya bisa menggantinya void steup(){...}denganstatic{...}
Pavel
2
@ Pavel Nggak, tidak berfungsi
Kritixi Lithos
4

Pascal, 75 65 byte

Ini diuji dengan Free Pascal Compiler, versi 3.0.0.
Ini dapat bekerja dengan TurboPascal 7 atau lebih baru.

uses Crt;begin write('Press any key to continue...');readkey;end.

Sayangnya, saya tidak bisa menggantikan readkeydengan readlnsejak 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 _;.

Ismael Miguel
sumber
Baik FreePascal maupun TurboPascal tidak membutuhkan penggunaan programkata kunci. (Sebenarnya saya tidak pernah bertemu dengan implementasi kuno seperti itu.)
manatwork
@Manatwork saya mencobanya tanpa programdan itu mengeluh. Juga, saya terkadang menggunakan TurboPascal. Yang satu membutuhkan (perhatikan: membutuhkan ) yang programada. Jika Anda tahu tempat saya dapat menguji di mana ia berjalan tanpa program, saya akan menghapusnya. Aku benci memilikinya di sana. Dan itu uses Crt;.
Ismael Miguel
1
Saya tidak mengerti Anda. Ini berfungsi dengan baik termasuk layanan rextester yang Anda tautkan. Di baris perintah saya: pastebin.com/pVr9dqxd
manatwork
@manatwork Kamu benar. Saya tahu mengapa komplain: Saya menulis program;alih-alih menghapus bagian itu. Terima kasih sudah mengingatkan saya akan hal itu.
Ismael Miguel
4

Gores, 81 byte

gambar

when gf clicked
say [Press any key to continue...
wait until <key [any v] pressed

( 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 memerlukan sayblok kosong ( stop allberfungsi juga).

Nyaman bahwa Scratch memiliki builtin untuk ini!

Florrie
sumber
4

Bash 48 44 42 byte

read -rn1 -p"Press any key to continue..."

@ mame98 Terima kasih telah menyimpan 4 byte.

@RaisingAgent Terima kasih telah menyimpan 2 byte.

Abel Tom
sumber
Anda dapat meningkatkan ini dengan menambahkan flag, menyukai read -srn1 -p".."dan menghapus spasi terakhir dalam kutipan promt. Juga, saya tidak yakin apakah Anda memerlukan 's' flag
mame98
1
hapus spasi terakhir dalam tanda kutip _&-s
RaisingAgent
@RaisingAgent Terima kasih, diperbarui :)
Abel Tom
3

R, 56 byte

cat('Press any key to continue...');keypress::keypress()

Ini berfungsi di terminal Linux dan OSX.

Sven Hohenstein
sumber
3

Ruby (2.3) (+ Batch), 52 55 54 53 46 byte

Sekarang 46 byte berkat Alexis Andersen.

Catatan: Diuji pada Windows, mungkin tidak berfungsi jika tidak ada pauseperintah.

puts"Press any key to continue...";`pause>nul`

Penjelasan

Puts teks yang dibutuhkan:

puts"Press any key to continue..."

Akhiri garis:

;

Jalankan pauseperintah Batch dan output pipa ke nul:

`pause>nul`
notme1560
sumber
Halo, selamat datang di PPCG. Saya melihat bahwa Anda memiliki daftar suntingan di badan kiriman Anda. Meskipun hal ini biasa dilakukan di situs lain, karena siapa pun dapat melihat riwayat edit suatu posting, kami biasanya membiarkan riwayat posting tersebut keluar dari badan (selain dari mogok melalui penghitungan byte). Ini sepertinya golf pertama yang bagus dan saya harap Anda bersenang-senang di sini.
Wheat Wizard
@WheatWizard Terima kasih, haruskah saya meninggalkan suntingan di sana atau menghapusnya?
notme1560
1
Saya pikir itu membuat jawaban yang jauh lebih mudah dibaca jika Anda menghapusnya dan saya pribadi akan merekomendasikan melakukannya.
Wheat Wizard
Anda dapat mempersingkatnya dengan mengganti sistem dengan backticks: ` pause>nul` atau bahkan lebih pendek, cukup gunakan get (juga, tidak ada cara yang baik untuk memasukkan backtick dalam blok kode dalam komentar)
Alexis Andersen
@AlexisAndersen tidak getsmenunggu masuk, dan bukan sembarang tombol?
notme1560
3

Java, 127 byte

class P{public static void main(String[]a)throws Exception{System.out.print("Press any key to continue...");System.in.read();}}

Catatan: konsol harus diatur ke mode mentah agar ini berfungsi.

Komunitas
sumber
Maka aku takut kode Anda harus mengatur konsol jadi, seperti original.legin 's Perl solusi tidak.
manatwork
@manatwork 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.
3

SmileBASIC, 52 byte

?"Press any key to continue...
WHILE""==INKEY$()WEND
12Me21
sumber
3

Python 2, 110 byte

import curses as c
s=c.initscr()
c.cbreak()
s.addstr(0,0,'Press any key to continue...')
while not s.getch():1
Zach Gates
sumber
2

Mathematica, 62 byte

EventHandler["Press any key to continue...","KeyDown":>Exit[]]

Penjelasan

EventHandler["Press any key to continue...","KeyDown":>Exit[]]
EventHandler[                                                ]  (* Create a new EventHandler *)
             "Press any key to continue..."                     (* Print the dialog text *)
                                            "KeyDown":>Exit[]   (* When a key is pressed down, exit *)
JungHwan Min
sumber
2

SmileBASIC, 55 byte

?"Press any key to continue..."@L IF INKEY$()!=""GOTO@L

Dijelaskan:

?"Press any key to continue..."  '? means PRINT
@L                               'start of loop
IF INKEY$()!="" GOTO @L          'if no key pressed goto @L
siput_
sumber
WHILE""==INKEY$()WENDlebih kecil
12Me21
2

Python 2/3 POSIX, 85 byte

import sys,tty
print('Press any key to continue...')
tty.setraw(1)
sys.stdin.read(1)
plafon
sumber
2

Python 3, 65 byte

Membutuhkan versi Windows Python.

from msvcrt import*
print("Press any key to continue...")
getch()

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

Zachary Smith
sumber
Jawaban ini tidak valid tanpa di suatu import msvcrttempat
FlipTack
2
Karena ini adalah kode-golf, Anda harus menghapus komentar dari kode Anda. Selain itu, penggunaan from msvcrt import* tampaknya lebih pendek 1 byte
FlipTack
cool, thx @FlitTack
Zachary Smith
2

Node.js, 102 101 99 byte

with(process)stdout.write('Press any key to continue...'),s=stdin,s.setRawMode(1),s.on('data',exit)
George Reith
sumber
Tidak banyak untung, hanya 1 karakter lebih pendek dengan with: pastebin.com/BhrAyq2K
manatwork
@manatwork Bagus sekali! Pertama kali withtelah menyelamatkan saya byte (atau byte)
George Reith
1
Sekarang Anda dapat menghapus kurung keriting dan mengganti jeda baris dengan koma selama 2 byte lebih.
darrylyeo
Juga jika saya tidak salah, stdout.write`Press any key to continue...`akan menghemat 2 byte di ES6.
darrylyeo
@darrylyeo Commas bekerja, itu luar biasa, terima kasih! Sayangnya literal template yang ditandai tidak dapat digunakan di sini karena sebenarnya dilewatkan dalam array dan process.stdout.writetidak melakukan konversi implisit ke string (itu hanya kesalahan).
George Reith
2

Sinclair ZX81 / Timex TS1000 BASIC: Metode 1 kira-kira 41 byte

1 PRINT "PRESS ANY KEY TO CONTINUE..."
2 GOTO (INKEY$<>"")+VAL "2"

Metode 2 sekitar 38 BYTES

1 PRINT "PRESS ANY KEY TO CONTINUE..."
2 PAUSE VAL "4E4"

Saya lebih suka metode 1 seperti pada ZX81, ada layar berkedip ketika PAUSEdipanggil, 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).

Shaun Bebbers
sumber
Kedua metode akan bekerja pada Sinclair ZX Spectrum juga, keuntungannya adalah bahwa Spectrum memiliki huruf besar dan kecil, sedangkan ZX81 tidak secara default (dan tidak memiliki kutipan tunggal baik sebagai karakter standar).
Shaun Bebbers
Metode 2 dari Sinclair ZX Spectrum dapat dikondensasi menjadi1 PRINT "Press any key to continue...": PAUSE 4e4
Shaun Bebbers
1
PAUSE 0berhenti selamanya.
Neil
Ya saya sudah lama tidak memprogram dalam Sinclair Spectrum BASIC sehingga saya lupa tentang itu. PAUSE 0di ZX81 BASIC tidak berhenti selamanya.
Shaun Bebbers
1

Perl 5, 79 byte

system "stty cbreak";$|=1;print "Press any key to continue...";read(STDIN,$a,1)

digunakan sebagai:

perl -e 'system "stty cbreak";$|=1;print "Press any key to continue...";read(STDIN,$a,1)'

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)

original.legin
sumber
@Pavel, ia menghitung systemdalam bytecount-nya, jadi saya tidak tahu apa yang Anda maksud dengan komentar itu.
Dada
1
@ original.legin Saya pikir Perl tidak akan jauh lebih baik dari ini. Beberapa byte Anda masih bisa bermain golf: $|=1tidak perlu, Anda memiliki spasi setelahnya print, Anda dapat meletakkan tanda kurung di sekitar argumen read, Anda dapat menggunakan backticks alih-alih sistem, dan akhirnya, printmengembalikan 1, sehingga Anda dapat menggunakannya sebagai ganti sampah 1dalam panggilan ke read. Jadi pada akhirnya, kita mendapatkan:perl -e '`stty cbreak`;read STDIN,$a,print"Press any key to continue..."'
Dada
@ Dada Anda juga dapat mengurangi 2 byte dengan say, meskipun saya pikir pendekatan ini gagal persyaratan "portabel". Solusi portabel terbaik yang dapat saya temukan adalah perl -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 akhir ReadMode 1.
ThisSuitIsBlackNot
1
@ ThisSuitIsBlackNot Memang, saya tidak melihat persyaratan tentang portabilitas. Tentang say, saya cenderung tidak menggunakannya lagi (saya setuju sebagian besar dengan posting meta ini ). Sekarang kembali ke kode pendek, IO::Promptakan lebih pendek dari Term::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.
Dada
1
@Dada saya bisa melihat kedua sisi -Eargumen. 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.
ThisSuitIsBlackNot
1

PHP, 73 byte

echo"Press any key to continue...";$h=fopen("php://stdin","r");fgets($h);

Jalankan di shell interaktif PHP ( php -a)

ʰᵈˑ
sumber
“Program harus keluar segera setelah tombol ditekan.” - Ini menunggu hingga Enter atau padam ...
manatwork
1

C #, 101 byte

using C=System.Console;class P{static void Main(){C.Write("Press any key to continue...");C.Read();}}

Diuji di Linux, harus berjalan pada sistem yang memiliki pustaka .NET dan Common Language Runtime

Program tidak digabungkan:

using C = System.Console; // creating a shorter alias for the System.Console class

class P
{
    static void Main()
    {
        C.Write("Press any key to continue...");    // prints the message
        C.Read();   // waits for key press
    }
}

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.

adrianmp
sumber
1

8 , 47 byte

"Press any key to continue..." . cr con:key bye

Program ini mengabaikan kunci seperti ctrl, alt, caps lock. Berhenti dengan tombol seperti huruf, angka, simbol, dan masukkan.

Penjelasan

"Press any key to continue..." . cr \ Print message 
con:key                             \ Wait for key input from console  
bye                                 \ Quit program 
Kekacauan Manor
sumber
Hanya pada Windows Anda dapat menyimpan 3 byte yang dihilangkancr
Chaos Manor
1

C #, 29 byte

class P{static void Main(){}}

Tidak yakin apakah ini dianggap valid karena mencetak:

Tekan tombol apa saja untuk melanjutkan . . .

Tetapi ada jawaban Batch yang mencetak ini juga.

TheLethalCoder
sumber
1

Keempat (gforth), 39 byte

." Press any key to continue..."key bye

(Ya, sudah ada solusi ke-8 tetapi ini lebih pendek)

di sanaarfarfd
sumber