Bấm phím bất kỳ để tiếp tục


36

Nhiệm vụ của bạn là tạo ra một chương trình sẽ hiển thị các văn bản sau đây, chờ đợi cho người dùng nhấn một phím (nó không quan trọng để bỏ qua các phím như ctrl, alt, caps lockvv, miễn là các phím thích letters, numbers, symbols, và enterkhông được bỏ qua), và sau đó chấm dứt chương trình:

Press any key to continue... 

Trailing newlines được cho phép. Chương trình phải thoát ngay lập tức sau khi nhấn phím. Ngoài ra, chương trình phải khá di động (nghĩa là không có các tiêu đề hoặc mô-đun dành riêng cho hệ điều hành, chạy bên ngoài IDE, v.v.).


Lời nhắc phải chính xác như được hiển thị ở trên, trừ khi không thể tránh được một dòng mới.


Đây là , vì vậy câu trả lời ngắn nhất bằng byte sẽ thắng. Đây cũng là câu hỏi golf-code đầu tiên của tôi, vì vậy tôi xin lỗi nếu tôi không biết các quy tắc về PPCG.


4
Là trường hợp văn bản đầu ra nhạy cảm? WinBatch PAUSEsẽ là một câu trả lời hợp lệ (dấu chấm lửng được lan truyền từ ...sang . . .)?
FlipTack

13
Ngoài ra, tôi khuyên bạn nên đợi một hoặc hai tuần trước khi chấp nhận bất kỳ câu trả lời nào
Kritixi Lithos

3
Hầu hết các pausechức năng của ngôn ngữ có thể không nhạy cảm với các phím như Caps-Lock hoặc Control (tự nhấn). Có lẽ bạn nên làm rõ nếu chương trình được phép không chú ý đến những chìa khóa đó
Luis Mendo

15
Bạn nên đợi một vài tuần trước khi chấp nhận câu trả lời, vì vô số người khác đã khuyên bạn (nhưng bạn đã chọn bỏ qua lời khuyên của họ)
FlipTack

12
@JungHwanMin Tôi đồng ý với người khác. Vui lòng đợi để chấp nhận giải pháp cho đến khi các mục nhập ngừng hoạt động. Tôi thực sự không thích đi tàu lượn siêu tốc danh tiếng
Suever

Câu trả lời:


5

SmallBasic, 18 17 byte

  • Phiên bản 2.0

17 byte

TextWindow.Show()
  • Phiên bản 1.0

18 byte

TextWindow.Pause()

3
Bạn cũng không thể làm gì TextWindow.Show()sao? Dựa trên trang web này sẽ có tác dụng tương tự.
Suever

20

Mẻ, 46 byte

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

Bởi vì pauseđầu ra của nó chứa một khoảng trắng trước mỗi ..


5
Chuyển hướng tốt đẹp. Bạn cũng có thể gửi đầu ra tới, nói , x? Sau đó, một tập tin xsẽ được tạo ra giữ văn bản Press any key to continue . . .. Lưu 2 byte, nhưng tôi không chắc liệu điều đó có đi ngược lại với thách thức này hay bất kỳ sơ hở tiêu chuẩn nào không.
steenbergh

Tôi đã sử dụng hệ thống không có sự lựa chọn trong một thời gian, nhưng tôi có cảm giác @choice /n /m Press any key to continue...cũng có thể xảy ra cách đây vài thập kỷ.
thao tác

Lựa chọn có các giá trị mặc định là J và N, vì vậy chương trình sẽ chỉ tiếp tục khi nhấn J hoặc N nếu tôi nhớ chính xác.
geisterfurz007 Dừng sự hỗn loạn này vào

@ geisterfurz007 Ngoài ra, giá trị mặc định được bản địa hóa. Ví dụ, với tôi choicetương đương với choice /c SN(cho sim(có) và não(không) trong tiếng Bồ Đào Nha).
Ismael Miguel

À, bạn nói đúng, @ geisterfurz007. Bây giờ tôi nhớ làm thế nào ngớ ngẩn nhìn các tập tin lô của tôi có liệt kê toàn bộ bảng chữ cái. Ok, đây là một ý tưởng chết.
thao tác

15

HTML + JavaScript (ES6), 36 + 25 = 61 byte

Bạn thực sự không thể thoát khỏi một chương trình JavaScript, vì vậy xóa trang web là điều tốt nhất tôi có thể nghĩ đến.

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


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

Giải pháp thay thế được đề xuất bởi @LarsW chuyển hướng đến about:blank.

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


HTML / JavaScript, 60 byte

Một giải pháp tuyệt vời khác của @Ismael Miguel không sử dụng JS độc lập. Đã lưu 1 byte!

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


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

Một giải pháp khác của @George Reith sử dụng tài liệu ghi.

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

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

Cùng một chương trình sử dụng toán tử liên kết ES7 được đề xuất :

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


Vì hầu hết các giải pháp này không phải của riêng tôi, hãy lịch sự và bỏ phiếu cho họ trong các nhận xét!


10
36 + 25 là 61 hoặc tôi đang thiếu một cái gì đó?

2
@LarsW, ckjbgames Vâng, cơ hội là gì? Bạn không bao giờ biết cho đến khi bạn viết nó! ;)
darrylyeo

2
<html onkeyup=this.innerHTML=''>Press any key to continue...<- 60 byte. Dùng thử trên jsfiddle.net/xhb69401 (nó hoạt động với cả hai <html><body>)
Ismael Miguel

2
Cách ngắn hơn để xóa tài liệu và không cần neo. onkeyup=_=>document.open()với Press any key to continue...tổng cộng 54 byte.
George Reith

2
Ngoài ra với toán tử liên kết được đề xuất es-next, nó có thể được giảm xuống onkeyup=::document.open.
George Reith

14

MATL, 35 byte

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

Giải trình

'Press any key to continue...'      % String literal
D                                   % Display the string (has trailing newline)
0$Y.                                % Pause until the user presses any key

@LuisMendo Ah bắt tốt
Suever

2
Mặt khác, Y.cũng không. Có lẽ OP nên làm rõ. Các khóa như Control và Caps-lock sẽ thất bại trong hầu hết các giải pháp
Luis Mendo

1
@LuisMendo Sẽ rất tốt nếu bỏ lỡ các phím điều khiển, khóa mũ, v.v.
ckjbgames

@LuisMendo Không phải sửa đổi của bạn sẽ yêu cầu nhập khóa? Hoặc có thể tôi đang nhớ nhầm nó
Suever

@Suever ơi, dĩ nhiên rồi!
Bắt

11

TI-Basic, 55 byte

Về cơ bản, nó lặp cho đến khi một phím được nhấn. Các chữ cái viết thường quá xấu là hai byte trong TI-Basic ...

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

PS Xem bình luận của @GoldenRatio để biết giải thích về cách thức hoạt động của nó. Thật là thiên tài!


Trước hết, số byte của bạn hiện đang tắt, đó thực sự là 55 byte (vừa tạo một chương trình trên TI-84 + và đã thử nghiệm). Thứ hai, về mặt kỹ thuật này không hợp lệ, vì nó không hiển thị Nhấn bất kỳ phím nào để tiếp tục ... và thay vào đó, nó cắt xuống 15 ký tự cộng với ... Thay vào đó, duy trì số byte, làm cho nó thành hai lệnh phân tán. :Disp "Press any(đừng quên: trong mã của bạn, nó sẽ được tính) và Disp "key to continuesin((Tội lỗi buộc ... trong 1 byte để bù cho dòng mới và phân tán, và điều này giúp tiết kiệm khoảng cách giữa bất kỳ và khóa nào)
Tỷ lệ vàng

Đánh bại tôi với điều này, ngôn ngữ đầu tiên tôi nghĩ đến.
C Anderson

Cảm ơn về mẹo @GoldenRatio, tôi đoán tôi đã nghĩ getKeylà 2 byte khi nó thực sự 1. Tôi cho rằng với Text(hoặc Output(bạn có thể phù hợp với tất cả trên một dòng. Nhưng, đề nghị của bạn là tốt hơn. Tôi đã không nghĩ về việc sử dụng dấu chấm lửng ở cuối dòng. Cảm ơn một lần nữa, tôi sẽ chỉnh sửa nó ngay bây giờ.
TimTech

Thx để cập nhật nó và tôi đoán việc sử dụng phân tán bằng dấu phẩy cuối cùng cũng có lý do chính đáng, vì nó không bao giờ lưu byte. Tôi thường đặt chúng trên các dòng riêng biệt vì xu hướng nhấn nút rõ ràng: D. Ngoài ra, có bất kỳ phương pháp chính thức làm thế nào để ghi điểm kích thước? Ý tôi là, 9 byte tôi không được tính cho một tên chương trình? Và có nên xóa 1 byte cho dấu hai chấm bắt đầu không? Tôi đã đánh dấu là 0 byte, vì để tìm khoảng trống tôi đã sử dụng để trừ 10 cho kích thước chương trình, nhưng có lẽ dấu hai chấm sẽ được tính.
Tỷ lệ vàng

Không, về cơ bản, nếu bạn tạo một chương trình hoàn toàn trống, nó sẽ tính 0 byte, sau đó bạn bắt đầu từ đó. Điều đó sẽ giống như đếm tên tệp của một tệp nguồn. Ngoài ra, dấu hai chấm đầu chỉ là để hiển thị và không thực sự là một phần của chương trình. Trên thực tế, mọi dòng mới đều tự động hiển thị dấu hai chấm trong trình chỉnh sửa trên máy tính, nhưng một lần nữa, đây chỉ là để hiển thị (hãy thử trình mã hóa từ xa để xem ý tôi là gì). Cuối cùng, bytecount giống nhau cho dù chúng ta có chia Disphai dòng hay không (nhưng, không phải lúc nào cũng như vậy).
TimTech

8

Bash, 46 43 42 byte

Đã lưu 1 byte nhờ @DigitalTrauma

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

Sử dụng tích readhợp. -rđảm bảo rằng nó không cho phép người dùng nhập thoát. -n 1chỉ cho phép một nhân vật. -plà lời nhắc


Không tiếp tục cho đến khi tôi đạt <cr>
Glenn Randers-Pehrson

@ GlennRanders-Pehrson Tôi tin rằng điều đó có thể xảy ra nếu bash của bạn không hỗ trợ -n 1. Tuy nhiên, nó hoạt động mà không cần nhấn enter cho tôi (v3.2.57) và trên máy gỡ lỗi của tôi (v4.3.30)
Downgoat

Cũng không hoạt động nếu tôi gõ một trích dẫn (")
Glenn Randers-Pehrson

1
Sẽ hoạt động tốt nếu tôi đặt dòng trong một tệp (anykey.sh) và chạy nó. Hoạt động tốt ngay cả khi tôi loại bỏ khoảng trắng giữa "-rn" và "1".
Glenn Randers-Pehrson

1
-rn1tiết kiệm 1 byte
Chấn thương kỹ thuật số

8

Haskell , 51 50 byte (Cảm ơn @ Villou24)

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

Hãy thử trực tuyến!


6
Mà chờ vào. Bạn có thể sử dụng getCharthay thế.
Christian Sievers

1
Bạn có thể lưu một byte bằng cách loại bỏ khoảng trắng giữa putStrvà chuỗi.
Villou24

Hãy để người trả lời chỉnh sửa bài đăng của anh ấy, @ckjbgames, đừng làm điều đó cho anh ấy
MildlyMilquetoast

5

Octave / MATLAB, 42 byte

disp('Press any key to continue...');pause

Tôi đã đưa ra câu trả lời này một tháng trước, cho rằng nó là tối ưu ... Nhưng bạn đã hết thời rồi :)
Stewie Griffin ngày

4

QBasic ( QB64 ), 37 (42?) Byte

Thật không may, lời nhắc kết thúc chương trình tích hợp sẵn của QBasic không có dấu chấm lửng, vì vậy chúng tôi sẽ phải tự in nó:

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

( SLEEPkhông có đối số chờ cho đến khi nhấn phím.)

Mã này thực hiện những gì câu hỏi yêu cầu theo nghĩa đen, nhưng có vẻ như nó không phù hợp với tinh thần của câu hỏi bởi vì, tất nhiên, sau đó, QBasic sẽ hiển thị "Nhấn phím bất kỳ để tiếp tục" và đợi nhấn phím trước khi quay lại IDE. Đây là một cái đi thẳng vào IDE, cho +5 byte:

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

STOPlà một tuyên bố gỡ lỗi. Trong QBasic thông thường, nó đặt điểm dừng: dừng thực thi và chúng tôi quay lại IDE, nhưng thực thi có thể được tiếp tục lại với F5. Không rõ liệu đó có được tính là chương trình "thoát" hay không. Tuy nhiên, tôi đang sử dụng trình giả lập QB64, không thể thực hiện các điểm dừng. Khi gặp phải STOP, nó chỉ dừng lại - quay trở lại IDE mà không có thông báo "Nhấn phím bất kỳ" dư thừa.


Thật kỳ lạ, 'Nhấn phím bất kỳ để tiếp tục' cũng hiển thị khi thực hiện exe QB64 độc lập. Tôi đã cố sử dụng LOCATEđể chỉ in các dấu chấm sau nó, nhưng QBasic xóa toàn bộ hàng dưới cùng khi nó in thông báo này ...
steenbergh

4

Đang xử lý, 89 81 byte

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

Giải trình

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

Điều này là bắt buộc vì tôi đang sử dụng nhiều hơn một chức năng trong chương trình của mình. Bất cứ điều gì bên trong setup()được gọi, trong trường hợp này là chuỗi "Press any key to continue...".

if(key>0)exit();

Kiểm tra xem key( keysẽ luôn chứa giá trị int của phím cuối cùng được nhấn) nhiều hơn 0(tức là không phải là byte rỗng). Nếu điều kiện được thỏa mãn thì chương trình sẽ thoát.

void draw(){}

draw() đảm bảo rằng chương trình sẽ luôn tìm kiếm một khóa thay vì dừng lại khi chương trình bắt đầu.

(Cảm giác đó khi một nội dung trong ngôn ngữ giống như Java vẫn còn dài dòng ...)


Tôi thực sự không biết Xử lý, nhưng tôi nghĩ bạn sẽ có thể thay thế void steup(){...}bằngstatic{...}
Pavel

2
@Pavel Không, không hoạt động
Kritixi Lithos

4

Pascal, 75 65 byte

Điều này đã được thử nghiệm với Trình biên dịch Pascal miễn phí, phiên bản 3.0.0.
Nó có thể hoạt động với TurboPascal 7 hoặc mới hơn.

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

Đáng buồn thay, tôi không thể thay thế readkeyvới readlntừ thách thức đòi hỏi bất kỳ chính được chấp nhận.


Tôi đã kiểm tra mã này trên http://rextester.com/l/pascal_online_compiler , có và không cung cấp đầu vào.
Đúng như dự đoán, chương trình chấm dứt sau 10 giây, vì nó chờ đợi một lần nhấn phím không bao giờ xảy ra.


Cảm ơn @manatwork đã tiết kiệm cho tôi 10 byte bằng cách chứng minh tôi sai và cho thấy rằng tôi không cần program _;.


Cả FreePascal và TurboPascal đều không yêu cầu sử dụng programtừ khóa. (Trên thực tế tôi chưa bao giờ gặp việc thực hiện cổ xưa như vậy.)
manatwork

@manatwork Mình đã thử mà không được programvà nó phàn nàn. Ngoài ra, đôi khi tôi sử dụng TurboPascal. Điều đó đòi hỏi (thông báo: yêu cầu ) programở đó. Nếu bạn biết bất cứ nơi nào tôi có thể kiểm tra nơi nó chạy mà không có program, tôi sẽ xóa nó. Tôi ghét có nó ở đó. Và đó uses Crt;.
Ismael Miguel

1
Tôi không hiểu bạn. Nó hoạt động tốt bao gồm cả dịch vụ rextester bạn liên kết. Trong dòng lệnh của tôi: pastebin.com/pVr9dqxd
manatwork

@manatwork Bạn nói đúng. Tôi biết tại sao nó phàn nàn: Tôi đã viết program;thay vì thực sự loại bỏ bit đó. Cảm ơn đã cảnh báo tôi về điều đó.
Ismael Miguel

4

Cào, 81 byte

hình ảnh

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

( Liên kết cào )

Nếu bạn muốn nó dừng toàn bộ chương trình khi bạn nhấn một phím (bao gồm cả các luồng khác), bạn phải thêm một stop all. Nếu bạn muốn thoát khỏi hộp thoại say, bạn cần một saykhối trống (cũng stop allhoạt động).

Thuận tiện là Scratch có tích hợp sẵn cho việc này!


4

Bash 48 44 42 byte

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

@ mame98 Cảm ơn bạn đã lưu 4 byte.

@RaisingAgent Cảm ơn bạn đã lưu 2 byte.


Bạn có thể cải thiện điều này bằng cách thêm các cờ, thích read -srn1 -p".."và xóa khoảng trắng cuối cùng trong trích dẫn quảng cáo. Ngoài ra, tôi không chắc bạn có cần cờ của họ không
mame98

1
xóa khoảng _-s
trắng

@RaisingAgent Cảm ơn, đã cập nhật :)
Abel Tom

3

R, 56 byte

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

Điều này hoạt động trong các thiết bị đầu cuối Linux và OSX.


3

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

Bây giờ 46 byte nhờ có Alexis Andersen.

Lưu ý: Đã thử nghiệm trên Windows, có thể không hoạt động nếu không có pauselệnh.

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

Giải trình

Puts văn bản yêu cầu:

puts"Press any key to continue..."

Kết thúc dòng:

;

Chạy pauselệnh Batch và đầu ra đường ống tới nul:

`pause>nul`

Xin chào, chào mừng đến với PPCG. Tôi thấy rằng bạn có một danh sách các chỉnh sửa trong nội dung gửi của bạn. Mặc dù điều này có thể là thông lệ trên các trang web khác, vì bất kỳ ai cũng có thể xem lịch sử chỉnh sửa của bài đăng, chúng tôi thường bỏ lịch sử của bài đăng ra khỏi cơ thể (ngoài các lần đình công để đếm số byte). Đây có vẻ như là một golf tốt đầu tiên và tôi hy vọng bạn có niềm vui ở đây.
Thuật sĩ lúa mì

@WheatWizard Cảm ơn, tôi nên để lại các chỉnh sửa ở đó hoặc xóa chúng?
notme1560

1
Tôi nghĩ rằng nó làm cho một câu trả lời dễ đọc hơn nhiều nếu bạn loại bỏ chúng và cá nhân tôi khuyên bạn nên làm như vậy.
Thuật sĩ lúa mì

bạn có thể rút ngắn điều đó bằng cách thay thế hệ thống bằng backticks: ` pause>nul` hoặc thậm chí ngắn hơn, chỉ cần sử dụng get (ngoài ra, không có cách nào tốt để đưa backtick vào một khối mã trong một bình luận)
Alexis Andersen

@AlexisAndersen không getsđợi nhập, và không phải bất kỳ khóa nào?
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();}}

Lưu ý: bàn điều khiển phải được đặtchế độ thô để làm việc này.


Sau đó, tôi sợ mã của bạn nên đặt bàn điều khiển, như giải pháp Perl của original.legin .
thao tác

@manatwork Also, the program must be fairly portable (i.e no OS-specific headers or modules, runs outside of an IDE, etc.)nếu bạn theo liên kết SO đó thì không có cách nào độc lập với hệ điều hành để làm việc này. Có nghĩa là, câu trả lời bạn liên kết có giá trị như câu trả lời này.

3

SmileBASIC, 52 byte

?"Press any key to continue...
WHILE""==INKEY$()WEND

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

2

Toán học, 62 byte

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

Giải trình

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

2

SmileBASIC, 55 byte

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

Giải thích:

?"Press any key to continue..."  '? means PRINT
@L                               'start of loop
IF INKEY$()!="" GOTO @L          'if no key pressed goto @L

WHILE""==INKEY$()WEND nhỏ hơn
12Me21

2

Python 2/3 POSIX, 85 byte

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

2

Python 3, 65 byte

Yêu cầu phiên bản Windows của Python.

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

msvcrt.getch () không đợi phím enter được nhấn như input (), nó trả về phím đầu tiên được nhấn.

Tài liệu Python cho msvcrt.getch (): https://docs.python.org/3/l Library / msvcrt.html # msvcrt.getch

Cảm ơn @Fliptack vì đã lưu một số byte


Câu trả lời này không hợp lệ nếu không có import msvcrtở đâu đó
FlipTack

2
Vì đây là môn đánh gôn, bạn nên xóa các bình luận khỏi mã của mình. Ngoài ra, việc sử dụng from msvcrt import* dường như ngắn hơn 1 byte
FlipTack

tuyệt vời, 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)

with
Thu nhập

@manatwork Đẹp một! Lần đầu tiên withđã tiết kiệm cho tôi byte (hoặc byte)
George Reith

1
Bây giờ bạn có thể xóa dấu ngoặc nhọn và thay thế dấu ngắt dòng bằng dấu phẩy để có thêm 2 byte.
darrylyeo

Ngoài ra nếu tôi không nhầm, stdout.write`Press any key to continue...`sẽ lưu 2 byte trong ES6.
darrylyeo

@darrylyeo Dấu phẩy làm việc thật tuyệt vời cảm ơn! Thật không may, một mẫu được gắn thẻ theo nghĩa đen không thể được sử dụng ở đây vì nó thực sự đi vào một mảng và process.stdout.writekhông thực hiện chuyển đổi ngầm định thành chuỗi (nó chỉ là lỗi).
George Reith

2

BASlair ZX81 / Timex TS1000 BASIC: Phương pháp 1 khoảng 41 byte

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

Phương pháp 2 khoảng 38 BYTES

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

Tôi thích phương thức 1 như trên ZX81, có một màn hình nhấp nháy khi PAUSEđược gọi và nếu bạn muốn đủ lâu (cung cấp ZX81 không quá nóng hoặc gặp sự cố), việc tạm dừng cuối cùng sẽ kết thúc, trong khi phương thức 1 bị kẹt trong một vòng lặp vô hạn cho đến khi một phím được nhấn và không có màn hình nhấp nháy.

Tôi sẽ tìm ra số byte chính xác được sử dụng sau này khi tôi có đúng bit BASIC sẽ cho tôi biết. Nhân tiện, sử dụng VAL "x" thay vì số sẽ tiết kiệm RAM có giá trị trên ZX81 (tôi nghĩ rằng điều này cũng tương tự đối với ZX Spectrum).


Cả hai phương pháp cũng sẽ hoạt động trên Spectlair ZX Spectrum, ưu điểm là Spectrum có chữ in hoa và in thường, trong khi ZX81 không mặc định (và không có một trích dẫn nào dưới dạng ký tự chuẩn).
Shaun Bebbers

Phương pháp 2 trên Phổ ZX của Sinclair có thể được cô đọng lại1 PRINT "Press any key to continue...": PAUSE 4e4
Shaun Bebbers

1
PAUSE 0tạm dừng mãi mãi
Neil

Có, tôi đã không được lập trình trong BASlair Spectrum BASIC quá lâu đến nỗi tôi quên mất điều đó. PAUSE 0trong ZX81 BASIC không dừng lại mãi mãi.
Shaun Bebbers

1

Perl 5, 79 byte

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

được dùng như là:

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

Tất nhiên không có giải thưởng. Tôi chắc chắn một số người perl sẽ có cách tốt hơn.

(89 byte nếu yêu cầu trình thông dịch cũng cần được tính vào số đếm)


@Pavel, anh ấy đã tính systembằng số tiền của mình, vì vậy tôi không biết ý của bạn với bình luận đó.
Dada

1
@ original.legin Tôi nghĩ Perl sẽ không làm tốt hơn thế này. Một vài byte bạn vẫn có thể chơi golf: $|=1không cần thiết, bạn có một khoảng trống sau print, bạn có thể bỏ dấu ngoặc đơn xung quanh các đối số read, bạn có thể sử dụng backticks thay vì hệ thống và cuối cùng, printtrả về 1, vì vậy bạn có thể sử dụng nó thay vì các rác 1trong cuộc gọi đến read. Vì vậy, cuối cùng, chúng tôi nhận được:perl -e '`stty cbreak`;read STDIN,$a,print"Press any key to continue..."'
Dada

@Dada Bạn cũng có thể tắt 2 byte với say, mặc dù tôi nghĩ cách tiếp cận này không đạt yêu cầu "di động". Giải pháp di động tốt nhất tôi có thể tìm thấy là perl -MTerm::ReadKey -E'say"Press any key to continue...";ReadMode 3;ReadKey'(52 byte + 16 byte cho -MTerm::ReadKey<space>). Hãy cẩn thận, điều này sẽ làm hỏng thiết bị đầu cuối của bạn trừ khi bạn khôi phục chế độ đọc ở cuối ReadMode 1.
ThisSuitIsBlackNot

1
@ ThisSuitIsBlackNot Thật vậy, tôi không thấy yêu cầu đó về tính di động. Về say, tôi có xu hướng không sử dụng nó nữa (tôi đồng ý chủ yếu với bài đăng meta này ). Bây giờ trở lại mã ngắn, IO::Promptsẽ ngắn hơn Term::ReadKey(40 + 13 = 53 byte) : perl -MIO::Prompt -e 'prompt"Press any key to continue... ",-1'. Và khi nó xảy ra, nó thậm chí còn ngắn hơn những gì tôi đề xuất trong bình luận trước đây.
Dada

1
@Dada Tôi có thể thấy cả hai mặt của -Etranh luận. Tuy nhiên, lần cuối cùng tôi kiểm tra, câu trả lời của JB đã không được kiểm chứng trong bốn năm, vì vậy đó là những gì tôi đã làm theo. Có lẽ tôi cần phải xem lại nó một lần nữa. Đối với IO :: Nhắc, tìm tốt! Mặc dù nó không hoạt động trên Strawberry 5.20.2 của tôi trên Windows, trong khi Term :: ReadKey thì có.
ThisSuitIsBlackNot

1

PHP, 73 byte

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

Chạy nó trong shell tương tác PHP ( php -a)


Chương trình phải thoát ngay lập tức sau khi nhấn phím. Tập - Điều này đợi cho đến khi Enter hoặc mất điện
thao tác

1

C #, 101 byte

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

Đã thử nghiệm trên Linux, nên chạy trên bất kỳ hệ thống nào có thư viện .NET và Thời gian chạy ngôn ngữ chung.

Chương trình Ungolfed:

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 bị bỏ qua. Phím bấm sẽ được lặp lại trên màn hình nếu có thể in được.

Echo có thể bị vô hiệu hóa bằng cách thay thế C.Read () bằng C.ReadKey (0 <1) với chi phí thêm 6 byte.


1

8 , 47 byte

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

Chương trình này bỏ qua các phím như ctrl, alt, mũ khóa. Thoát khỏi các phím như chữ cái, số, ký hiệu và nhập.

Giải trình

"Press any key to continue..." . cr \ Print message 
con:key                             \ Wait for key input from console  
bye                                 \ Quit program 

Trên Windows, bạn chỉ có thể lưu 3 byte bỏ quacr
Chaos Manor

1

C #, 29 byte

class P{static void Main(){}}

Không chắc chắn nếu điều này được coi là hợp lệ bởi vì nó in:

Bấm phím bất kỳ để tiếp tục . . .

Nhưng có một câu trả lời Batch cũng in điều này.


1

Forth (gforth), 39 byte

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

(Vâng, đã có một giải pháp thứ 8 nhưng nó ngắn hơn)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.