กดปุ่มใดก็ได้เพื่อดำเนินการต่อ


36

งานของคุณคือการสร้างโปรแกรมที่จะแสดงข้อความดังต่อไปนี้รอให้ผู้ใช้สามารถกดปุ่ม (มันจะถูกละเว้นคีย์เช่นctrl, alt, caps lockฯลฯ ตราบใดที่ปุ่มชอบletters, numbers, symbolsและenterจะไม่ละเว้น) จากนั้นยกเลิกโปรแกรม:

Press any key to continue... 

ขึ้นบรรทัดใหม่ที่ได้รับอนุญาต โปรแกรมจะต้องออกทันทีหลังจากกดปุ่ม นอกจากนี้โปรแกรมจะต้องพกพาได้อย่างเป็นธรรม (เช่นไม่มีส่วนหัวหรือโมดูลเฉพาะสำหรับ OS, ทำงานนอก IDE ฯลฯ )


พรอมต์จะต้องตรงตามที่แสดงด้านบนยกเว้นว่าไม่สามารถหลีกเลี่ยงการขึ้นบรรทัดใหม่


นี่คือดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ นี่เป็นคำถามรหัสกอล์ฟครั้งแรกของฉันดังนั้นฉันต้องขออภัยถ้าฉันไม่ทราบกฎของ PPCG


4
กรณีข้อความที่ส่งออกมีความละเอียดอ่อน? WinBatch PAUSEจะเป็นคำตอบที่ถูกต้องหรือไม่ (จุดไข่ปลาแพร่กระจายจาก...เป็น. . .)
FlipTack

13
นอกจากนี้ฉันขอแนะนำให้รอหนึ่งสัปดาห์หรือ 2 ก่อนที่จะยอมรับคำตอบใด ๆ
Kritixi Lithos

3
pauseฟังก์ชั่นของภาษาส่วนใหญ่อาจไม่รู้สึกถึงปุ่มต่างๆเช่น Caps-Lock หรือ Control (กดด้วยตัวเอง) บางทีคุณควรชี้แจงหากโปรแกรมไม่อนุญาตให้สังเกตเห็นกุญแจเหล่านั้น
Luis Mendo

15
คุณควรรอสองสามสัปดาห์ก่อนที่จะตอบคำตอบเนื่องจากคนอื่น ๆ นับไม่ถ้วนได้แนะนำคุณ (แต่คุณได้เลือกที่จะเพิกเฉยต่อคำแนะนำของพวกเขา)
FlipTack

12
@JungHwanMin ฉันเห็นด้วยกับคนอื่น ๆ โปรดรอรับวิธีการแก้ปัญหาจนกว่ารายการจะหยุดกลิ้งฉันไม่ชอบขี่ชื่อเสียงรถไฟเหาะ
Suever

คำตอบ:


5

SmallBasic ขนาด18 17 ไบต์

  • เวอร์ชัน 2.0

17 ไบต์

TextWindow.Show()
  • เวอร์ชั่น 1.0

18 ไบต์

TextWindow.Pause()

3
คุณทำTextWindow.Show()ไม่ได้เหรอ? อ้างอิงจากเว็บไซต์นี้ที่ควรมีผลเช่นเดียวกัน
Suever

20

แบตช์ 46 ไบต์

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

เพราะpauseการส่งออก 's .มีช่องว่างก่อนที่แต่ละ


5
การเปลี่ยนเส้นทางที่ดี คุณสามารถส่งออกไปพูดได้xไหม แล้วไฟล์จะถูกสร้างขึ้นที่มีข้อความx Press any key to continue . . .บันทึก 2 ไบต์ แต่ฉันไม่แน่ใจว่ามันขัดกับความท้าทายนี้หรือช่องโหว่มาตรฐานใด ๆ
steenbergh

ฉันใช้ระบบฟรีทางเลือก exe มาระยะหนึ่งแล้ว แต่ฉันก็รู้สึก@choice /n /m Press any key to continue...เป็นไปได้เช่นกันเมื่อหลายสิบปีก่อน
จัดการ

ตัวเลือกมีค่าเริ่มต้นเป็น J และ N ดังนั้นโปรแกรมจะดำเนินการต่อเมื่อมีการกด J หรือ N หากฉันจำได้อย่างถูกต้อง
geisterfurz007

@ geisterfurz007 นอกจากนี้ค่าเริ่มต้นจะถูกแปลเป็นภาษาท้องถิ่น ตัวอย่างเช่นสำหรับฉันchoiceเทียบเท่ากับchoice /c SN(สำหรับsim(ใช่) และnão(ไม่) ในภาษาโปรตุเกส)
Ismael Miguel

อ่าใช่แล้ว @ geisterfurz007 ตอนนี้ฉันจำได้ว่าโง่ดูไฟล์แบทช์ของฉันมีตัวอักษรทั้งหมดนับ ตกลงแล้วนี่เป็นความคิดที่ตายแล้ว
จัดการ

15

HTML + JavaScript (ES6), 36 + 25 = 61 ไบต์

คุณไม่สามารถออกจากโปรแกรม JavaScript ได้จริงๆดังนั้นการล้างหน้าเว็บเป็นสิ่งที่ดีที่สุดที่ฉันนึกได้

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


HTML + JavaScript (ES6), 33 + 28 = 61 ไบต์

วิธีการแก้ปัญหาสลับแนะนำโดย @LarsWabout:blankว่าการเปลี่ยนเส้นทางไปยัง

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


HTML / JavaScript ขนาด 60 ไบต์

อีกโซลูชันที่ยอดเยี่ยมโดย @Ismael Miguelที่ไม่ได้ใช้ JS แบบสแตนด์อโลน บันทึก 1 ไบต์!

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


HTML + JavaScript (ES6), 26 + 28 = 54 ไบต์

อีกวิธีหนึ่งโดย @George Reithใช้ประโยชน์จากการเขียนเอกสาร

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

HTML + JavaScript (ES7), 23 + 28 = 51 ไบต์

โปรแกรมเดียวกันโดยใช้ตัวดำเนินการเชื่อมโยง ES7 ที่เสนอ :

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


ในฐานะที่เป็นส่วนใหญ่ของการแก้ปัญหาเหล่านี้ไม่ใช่ของฉันเองให้ทำมารยาทและลงคะแนนในความคิดเห็น!


10
36 + 25 คือ 61 หรือฉันขาดอะไรไป

2
@ LarsW, ckjbgames เอ่อมีโอกาสอะไรบ้าง? คุณไม่มีทางรู้จนกว่าคุณจะเขียนมัน! ;)
darrylyeo

2
<html onkeyup=this.innerHTML=''>Press any key to continue...<- 60 ไบต์ ลองใช้กับjsfiddle.net/xhb69401 (ใช้ได้กับทั้งคู่<html>และ<body>)
Ismael Miguel

2
วิธีที่สั้นกว่าเพื่อล้างเอกสารและไม่จำเป็นต้องยึดเหนี่ยว onkeyup=_=>document.open()โดย Press any key to continue...มีขนาดรวม 54 ไบต์
George Reith

2
นอกจากนี้ยังมีตัวดำเนินการผูกที่เสนอต่อไปซึ่งสามารถลดลงonkeyup=::document.openได้
George Reith

14

MATL, 35 ไบต์

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

คำอธิบาย

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

@LuisMendo อาจับได้ดี
Suever

2
ในทางกลับกันY.ก็ไม่ได้เช่นกัน บางที OP ควรชี้แจง คีย์ต่างๆเช่น Control และ Caps-lock จะล้มเหลวในการแก้ปัญหาส่วนใหญ่
Luis Mendo

1
@LuisMendo มันเป็นเรื่องดีที่จะพลาดปุ่มควบคุมตัวล็อคแคป ฯลฯ
ckjbgames

@LuisMendo การปรับเปลี่ยนของคุณไม่จำเป็นต้องใช้รหัสป้อนใช่หรือไม่ หรือบางทีฉันอาจจำผิดได้
Suever

@Suever โอ้แน่นอน! ต้องป้อน
Luis Mendo

11

TI-Basic, 55 ไบต์

โดยพื้นฐานแล้วมันจะวนซ้ำจนกว่าจะกดปุ่ม ตัวอักษรพิมพ์เล็กที่แย่เกินไปมีขนาดสองไบต์ใน TI-Basic

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

PS ดูความคิดเห็นโดย @GoldenRatio สำหรับคำอธิบายเกี่ยวกับวิธีการทำงาน มันเป็นอัจฉริยะ!


ก่อนอื่นจำนวนไบต์ของคุณปิดอยู่นั่นคือ 55 ไบต์ (เพิ่งสร้างโปรแกรมบน TI-84 + และทดสอบแล้ว) ประการที่สองเทคนิคนี้ใช้ไม่ได้เพราะมันไม่แสดงกดปุ่มใด ๆ เพื่อดำเนินการต่อ ... และจะลดลงถึง 15 ตัวอักษรบวก ... แทนที่จะรักษาจำนวนไบต์ให้ทำสองคำสั่ง disp :Disp "Press any(อย่าลืม: ในรหัสของคุณมันจะนับ) และDisp "key to continuesin((บาปบังคับให้ ... ใน 1 ไบต์เพื่อทำการขึ้นบรรทัดใหม่และการแจกจ่ายซึ่งจะช่วยลดช่องว่างระหว่างคีย์และปุ่มใด ๆ )
อัตราส่วนทองคำ

เอาชนะฉันให้ได้ในภาษาแรกที่ฉันนึกถึง
C Anderson

ขอบคุณสำหรับเคล็ดลับ @GoldenRatio ฉันคิดว่าฉันคิดว่าgetKeyเป็น 2 ไบต์เมื่อเป็นจริง 1 ฉันคิดด้วยText(หรือOutput(คุณสามารถใส่ได้ทั้งหมดในบรรทัดเดียว แต่ข้อเสนอแนะของคุณดีกว่า ฉันไม่ได้คิดถึงการใช้จุดไข่ปลาโดยปริยายในตอนท้ายของบรรทัด ขอขอบคุณอีกครั้งฉันจะแก้ไขทันที
Timtech

ขอบคุณสำหรับการปรับปรุงและฉันคิดว่าการใช้ disp กับเครื่องหมายจุลภาคมีเหตุผลที่ดีในที่สุดเพราะมันไม่เคยบันทึกไบต์ ฉันมักจะใส่พวกเขาในบรรทัดที่แยกจากกันเพราะมีแนวโน้มที่จะกดปุ่มชัดเจน: D นอกจากนี้ยังมีวิธีการอย่างเป็นทางการของวิธีการให้คะแนนขนาดหรือไม่ ฉันหมายถึงว่า 9 ไบต์ที่ฉันไม่ได้นับสำหรับการนับชื่อโปรแกรม? และควร 1 ไบต์สำหรับจุดเริ่มต้นที่ไม่สามารถลบได้? ฉันทำเครื่องหมายว่าเป็น 0 ไบต์เพราะสำหรับการค้นหาพื้นที่ฉันใช้ในการลบ 10 สำหรับขนาดโปรแกรม แต่บางทีเครื่องหมายทวิภาคควรนับ
อัตราส่วนทองคำอัตราส่วน

ไม่โดยทั่วไปถ้าคุณสร้างโปรแกรมที่ว่างเปล่าอย่างสมบูรณ์มันจะนับเป็น 0 ไบต์จากนั้นคุณเริ่มจากตรงนั้น นั่นเป็นเหมือนการนับชื่อไฟล์ของไฟล์ต้นฉบับ นอกจากนี้โคลอนเริ่มต้นใช้สำหรับแสดงเท่านั้นและไม่ได้เป็นส่วนหนึ่งของโปรแกรม ในความเป็นจริงทุกบรรทัดขึ้นบรรทัดใหม่จะแสดงเครื่องหมายจุดคู่ในตัวแก้ไขบนเครื่องคิดเลขโดยอัตโนมัติ แต่อีกครั้งเป็นเพียงการแสดง (ลอง cemetech sourcecoder เพื่อดูว่าฉันหมายถึงอะไร) สุดท้ายจำนวน bytecount จะเหมือนกันไม่ว่าเราจะแบ่งDispมากกว่าสองบรรทัดหรือไม่ (แต่มันก็ไม่ได้เป็นแบบนี้เสมอไป)
Timtech

8

Bash, 46 43 42 ไบต์

บันทึก 1 ไบต์ด้วย @DigitalTrauma

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

ใช้ในreadตัว -rทำให้แน่ใจว่าไม่อนุญาตให้ผู้ใช้ป้อนอินพุต -n 1อนุญาตเพียงหนึ่งตัวอักษร -pเป็นพรอมต์


ไม่ดำเนินการต่อจนกว่าฉันจะกด <cr>
Glenn Randers-Pehrson

@ GlennRanders-Pehrson -n 1ผมเชื่อว่าจะเกิดขึ้นหากทุบตีของคุณไม่สนับสนุน มันใช้งานได้โดยไม่ต้องกดปุ่มสำหรับฉันอย่างไรก็ตาม (v3.2.57) และบนเครื่อง debain ของฉัน (v4.3.30)
Downgoat

ยังใช้งานไม่ได้ถ้าฉันพิมพ์คำพูด (")
Glenn Randers-Pehrson

1
ทำงานได้ดีถ้าฉันใส่บรรทัดลงในไฟล์ (anykey.sh) แล้วเรียกใช้ ทำงานได้ดีเช่นกันแม้ว่าฉันจะลบช่องว่างระหว่าง "-rn" และ "1"
Glenn Randers-Pehrson

1
-rn1ประหยัด 1 ไบต์
บาดเจ็บดิจิตอล

8

Haskell , 51 50 ไบต์ (ขอบคุณ @ villou24)

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

ลองออนไลน์!


6
ที่รอเข้า คุณสามารถใช้getCharแทน
Christian Sievers

1
คุณสามารถบันทึกไบต์โดยการลบช่องว่างระหว่างputStrและสตริง
villou24

ขอให้ผู้ตอบแก้ไขโพสต์ของเขาเอง @ckjbgames ไม่ทำมันสำหรับเขา
MildlyMilquetoast

5

ระดับแปดเสียง / MATLAB, 42 ไบต์

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

ฉัน upvoted คำตอบนี้เดือนที่ผ่านมาสมมติว่ามันเป็นที่ดีที่สุด ... แต่คุณได้รับการoutgolfed :)
สตีวีกริฟฟิ

4

QBasic ( QB64 ), 37 (42?) ไบต์

น่าเสียดายที่พรอมต์ภายในโปรแกรมของ QBasic ไม่มีจุดไข่ปลาดังนั้นเราจะต้องพิมพ์ด้วยตนเอง:

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

( SLEEPไม่มีอาร์กิวเมนต์รอจนกระทั่งมีการกดปุ่ม)

รหัสนี้ทำในสิ่งที่คำถามถาม แต่ดูเหมือนจะไม่เหมาะกับคำถามเพราะแน่นอนว่า QBasic จะแสดง "กดปุ่มใด ๆ เพื่อดำเนินการต่อ" และรอการกดปุ่มก่อนที่จะกลับไปที่ IDE นี่คือส่วนที่ตรงไปยัง IDE สำหรับ +5 ไบต์:

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

STOPเป็นคำสั่งการแก้จุดบกพร่อง ใน QBasic ปกติมันตั้งเบรกพอยต์: การดำเนินการหยุดและเรากลับไปที่ IDE แต่การดำเนินการสามารถกลับมาทำงานอีกครั้งกับ F5 ไม่ชัดเจนว่าจะนับเป็นโปรแกรม "ออก" อย่างไรก็ตามฉันใช้ตัวจำลอง QB64 ซึ่งไม่สามารถทำเบรกพอยต์ได้ เมื่อพบSTOPก็แค่หยุด - กลับตรงไปที่ IDE โดยไม่มีข้อความ "กดปุ่มใด ๆ " ซ้ำซ้อน


'ปุ่มกดใด ๆ เพื่อดำเนินการต่อ' จะปรากฏขึ้นเมื่อใช้งาน QB64 แบบสแตนด์อโลน ผมพยายามที่จะใช้LOCATEเพียงแค่พิมพ์จุดหลังจากที่มัน แต่ QBasic ล้างแถวด้านล่างทั้งหมดเมื่อมันแสดงข้อความนี้ ...
steenbergh

4

กำลังประมวลผล89 81 ไบต์

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

คำอธิบาย

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

เป็นสิ่งจำเป็นเนื่องจากฉันใช้มากกว่าหนึ่งฟังก์ชั่นในโปรแกรมของฉัน ภายในสิ่งใดได้รับการเรียกในกรณีนี้สตริงsetup()"Press any key to continue..."

if(key>0)exit();

ตรวจสอบว่าkey( keyจะมีค่า int ของคีย์สุดท้ายที่กด) มากกว่า0หรือไม่ (เช่นไม่ใช่ไบต์ว่าง) หากเงื่อนไขเป็นที่พอใจโปรแกรมจะออก

void draw(){}

draw() ตรวจสอบให้แน่ใจว่าโปรแกรมจะค้นหาคีย์แทนการหยุดเมื่อโปรแกรมเริ่มทำงานเสมอ

(รู้สึกว่าเมื่อบิวอินในภาษาจาวายังคงเป็นจริง ... )


ฉันไม่รู้จักการประมวลผลจริงๆแต่ฉันคิดว่าคุณน่าจะสามารถแทนที่void steup(){...}ด้วยstatic{...}
Pavel

2
@Pavel Nope ไม่ทำงาน
Kritixi Lithos

4

ปาสกาล75 65 ไบต์

สิ่งนี้ถูกทดสอบด้วย Free Pascal Compiler เวอร์ชัน 3.0.0
มันอาจทำงานกับ TurboPascal 7 หรือใหม่กว่า

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

น่าเศร้าที่ฉันไม่สามารถแทนที่readkeyด้วยreadlnเนื่องจากความท้าทายต้องการให้คีย์ใด ๆได้รับการยอมรับ


ฉันได้ทดสอบโค้ดนี้ในhttp://rextester.com/l/pascal_online_compilerโดยมีและไม่มีอินพุตป้อน
ตามที่คาดไว้โปรแกรมจะถูกยกเลิกหลังจากผ่านไป 10 วินาทีเนื่องจากมันรอการกดปุ่มที่ไม่เคยเกิดขึ้น


ขอขอบคุณที่@manatworkสำหรับการบันทึกฉัน 10 program _;ไบต์โดยการพิสูจน์ฉันผิดและแสดงให้เห็นว่าผมไม่จำเป็นต้อง


FreePascal และ TurboPascal ไม่จำเป็นต้องใช้programคำหลัก (อันที่จริงฉันไม่เคยพบเห็นการใช้งานในสมัยโบราณเช่นนั้น)
จัดการ

@ การจัดการฉันลองโดยไม่ได้programและมันก็บ่น นอกจากนี้บางครั้งฉันก็ใช้ TurboPascal สิ่งนั้นต้องการ (การแจ้งเตือน: ต้องการ ) ที่programนั่น หากคุณรู้ว่าสถานที่ใดที่ฉันสามารถทดสอบได้ว่ามันทำงานที่ไหนโดยที่programฉันจะลบ ฉันเกลียดที่มีมัน uses Crt;และที่ว่า
Ismael Miguel

1
ฉันไม่ได้รับคุณ มันทำงานได้ดีรวมถึงบริการ rextester ที่คุณเชื่อมโยง ในบรรทัดคำสั่งของฉัน: pastebin.com/pVr9dqxd
จัดการ

@ manatwork คุณพูดถูก ฉันรู้ว่าทำไมมันถึงบ่น: ฉันเขียนprogram;แทนการลบบิตนั้นออก ขอบคุณที่แจ้งให้ฉันทราบ
Ismael Miguel

4

ขีดข่วน 81 ไบต์

image

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

( ลิงก์ Scratchblock )

ถ้าคุณต้องการที่จะหยุดทั้งหมดโปรแกรมเมื่อคุณกดคีย์ (รวมถึงหัวข้ออื่น ๆ ) stop allคุณจะต้องเพิ่ม หากคุณต้องการกำจัดกล่องโต้ตอบพูดคุณต้องsayบล็อกว่างเปล่า( stop allใช้ได้เช่นกัน)

สะดวกที่ Scratch มี builtin สำหรับสิ่งนี้!


4

Bash 48 44 42 ไบต์

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

@ mame98 ขอบคุณสำหรับการบันทึก 4 ไบต์

@RaisingAgent ขอบคุณสำหรับการบันทึก 2 ไบต์


คุณสามารถปรับปรุงสิ่งนี้ได้โดยการเพิ่มค่าสถานะเช่นread -srn1 -p".."และลบช่องว่างสุดท้ายในใบเสนอราคา promt นอกจากนี้ฉันไม่แน่ใจว่าถ้าคุณต้องการธง 's
mame98

1
ลบช่องว่างสุดท้ายในเครื่องหมายคำพูด_&-s
RaisingAgent

@RaisingAgent ขอบคุณอัปเดต :)
Abel Tom


3

ทับทิม (2.3) (+ Batch), 52 55 54 53 46 ไบต์

ตอนนี้ 46 ไบต์ขอบคุณ Alexis Andersen

หมายเหตุ: ทดสอบบน Windows อาจไม่ทำงานหากไม่มีpauseคำสั่ง

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

คำอธิบาย

Puts ข้อความที่ต้องการ:

puts"Press any key to continue..."

จบบรรทัด:

;

รันpauseคำสั่งแบทช์และเอาต์พุตไพพ์เป็นnul:

`pause>nul`

สวัสดียินดีต้อนรับสู่ PPCG ฉันเห็นว่าคุณมีรายการการแก้ไขในเนื้อหาที่คุณส่ง แม้ว่านี่อาจเป็นเรื่องปกติในไซต์อื่น ๆ เนื่องจากใครก็ตามสามารถเห็นประวัติการแก้ไขของโพสต์เรามักจะปล่อยให้ประวัติของโพสต์ออกจากร่างกาย (นอกเหนือจากการโจมตีถึงจำนวนไบต์) ดูเหมือนว่าจะเป็นสนามกอล์ฟที่ดีแห่งแรกและฉันหวังว่าคุณจะสนุกที่นี่
ข้าวสาลีตัวช่วยสร้าง

@WheatWizard ขอบคุณฉันควรปล่อยให้มีการแก้ไขหรือลบออกหรือไม่
notme1560

1
ฉันคิดว่ามันเป็นคำตอบที่สามารถอ่านได้มากขึ้นถ้าคุณลบพวกเขาและฉันจะแนะนำให้ทำเช่นนั้น
ข้าวสาลีตัวช่วยสร้าง

คุณสามารถร่นว่าด้วยการเปลี่ยนระบบที่มี backticks: ` pause>nul` หรือแม้กระทั่งที่สั้นกว่าเพียงแค่การใช้งานที่ได้รับ (ยังไม่มีวิธีที่ดีที่จะรวม backtick ในการป้องกันรหัสในความคิดเห็น)
อเล็กซิสเซน

@AlexisAndersen ไม่getsรอที่จะป้อนและไม่เพียงคีย์ใด ๆ ?
notme1560

3

Java, 127 ไบต์

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

หมายเหตุ: ต้องตั้งค่าคอนโซลเป็นโหมด rawเพื่อให้สามารถใช้งานได้


จากนั้นฉันกลัวรหัสของคุณควรตั้งคอนโซลเช่นนั้นเหมือนoriginal.legin 's วิธีการแก้ปัญหา Perlไม่
จัดการ

@ manatwork Also, the program must be fairly portable (i.e no OS-specific headers or modules, runs outside of an IDE, etc.)หากคุณติดตามลิงก์ SO นั้นจะไม่มีวิธีที่เป็นอิสระจากระบบปฏิบัติการ ความหมายคำตอบที่คุณเชื่อมโยงนั้นมีความถูกต้องเท่ากัน



2

Mathematica, 62 ไบต์

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

คำอธิบาย

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 ไบต์

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

อธิบาย:

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

WHILE""==INKEY$()WENDเล็กกว่า
12Me21


2

Python 3, 65 ไบต์

ต้องการ Python เวอร์ชัน Windows

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

msvcrt.getch () ไม่รอให้กดคีย์ Enter เหมือนกับอินพุต () มันจะส่งคืนคีย์แรกที่กด

Python Docs สำหรับ msvcrt.getch (): https://docs.python.org/3/library/msvcrt.html#msvcrt.getch

ขอบคุณ @Fliptack สำหรับบันทึกไบต์


คำตอบนี้ไม่ถูกต้องหากไม่มีที่import msvcrtอื่น
FlipTack

2
เช่นนี้เป็น code-golf คุณควรลบความคิดเห็นจากรหัสของคุณ นอกจากนี้การใช้from msvcrt import* ดูเหมือนจะสั้นลง 1 ไบต์
FlipTack

cool, ขอบคุณ @FlitTack
Zachary Smith

2

Node.js, 102 101 99 ไบต์

with(process)stdout.write('Press any key to continue...'),s=stdin,s.setRawMode(1),s.on('data',exit)

ได้รับมากน้อยเพียง 1 ตัวอักษรที่สั้นกว่าด้วยwith: pastebin.com/BhrAyq2K
จัดการ

@ การจัดการที่ดีอย่างหนึ่ง! ครั้งแรกwithช่วยฉันไบต์ (หรือ byte)
George Reith

1
ตอนนี้คุณสามารถลบวงเล็บปีกกาออกและแทนที่ตัวแบ่งบรรทัดด้วยเครื่องหมายจุลภาคอีก 2 ไบต์
darrylyeo

นอกจากนี้ถ้าฉันไม่เข้าใจผิดstdout.write`Press any key to continue...`จะบันทึก 2 ไบต์ใน ES6
darrylyeo

@darrylyeo Commas ทำงานขอบคุณมากเลย! น่าเสียดายที่เทมเพลตที่มีแท็กที่ติดแท็กไม่สามารถใช้ที่นี่ได้เนื่องจากมันส่งผ่านอาร์เรย์จริงๆและprocess.stdout.writeไม่ได้ทำการแปลงให้เป็นสตริงโดยนัย (เป็นเพียงข้อผิดพลาด)
George Reith

2

Sinclair ZX81 / Timex TS1000 พื้นฐาน: วิธีที่ 1 ประมาณ 41 ไบต์

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

วิธีที่ 2 ประมาณ 38 BYTES

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

ฉันชอบวิธีที่ 1 เช่นเดียวกับ ZX81 มีการสั่นไหวของหน้าจอเมื่อPAUSEมีการเรียกและถ้าคุณต้องการนานพอ (ให้ ZX81 ไม่ร้อนเกินไปหรือผิดพลาด) การหยุดชั่วคราวจะสิ้นสุดในที่สุดในขณะที่วิธีที่ 1 ติดอยู่ใน วนซ้ำไม่สิ้นสุดจนกว่าจะมีการกดแป้นและไม่มีการกะพริบหน้าจอ

ฉันจะหาจำนวนไบต์ที่ถูกต้องที่ใช้ในภายหลังเมื่อฉันมีบิตของ BASIC ที่จะบอกฉัน อย่างไรก็ตามการใช้ VAL "x" แทนจำนวนจะบันทึก RAM ที่มีค่าใน ZX81 (ฉันคิดว่านี่เป็นสิ่งเดียวกันสำหรับ ZX Spectrum เช่นกัน)


ทั้งสองวิธีนี้จะทำงานบน Sinclair ZX Spectrum ด้วยเช่นกันข้อดีคือ Spectrum มีตัวอักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็กในขณะที่ ZX81 ไม่ได้เป็นค่าเริ่มต้น (และไม่มีการอ้างอิงเป็นอักขระมาตรฐาน)
Shaun Bebbers

วิธีที่ 2 บน Sinclair ZX Spectrum สามารถย่อให้เป็น1 PRINT "Press any key to continue...": PAUSE 4e4
Shaun Bebbers

1
PAUSE 0หยุดชั่วกาลนาน
Neil

ใช่ฉันไม่ได้ตั้งโปรแกรมใน Sinclair Spectrum BASIC มานานจนฉันลืมไปแล้ว PAUSE 0ใน ZX81 BASIC ไม่หยุดชั่วคราวตลอดไป
Shaun Bebbers

1

Perl 5, 79 ไบต์

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

ใช้เป็น:

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

ไม่มีรางวัลแน่นอน ฉันแน่ใจว่าบางคน Perl จะมีวิธีที่ดีกว่า

(89 ไบต์หากการร้องขอล่ามและจำเป็นต้องรวมอยู่ในการนับ)


@Pavel เขานับจำนวนsystemของเขาดังนั้นฉันไม่รู้ว่าคุณหมายถึงอะไรกับความคิดเห็นนั้น
Dada

1
@ original.legin ฉันคิดว่า Perl จะไม่ทำดีไปกว่านี้อีกแล้ว ไม่กี่ไบต์ที่คุณสามารถเล่นกอล์ฟได้: $|=1ไม่จำเป็นคุณมีช่องว่างหลังจากprintนั้นคุณสามารถวางวงเล็บไว้รอบ ๆ อาร์กิวเมนต์ของreadคุณสามารถใช้ backticks แทนระบบและสุดท้ายprintส่งคืน 1 ดังนั้นคุณจึงสามารถใช้แทน litteral ในการเรียกร้องให้1 readดังนั้นในที่สุดเราจะได้รับ:perl -e '`stty cbreak`;read STDIN,$a,print"Press any key to continue..."'
Dada

@ ดาดาคุณสามารถโกน 2 ไบต์ด้วยsayแม้ว่าฉันคิดว่าวิธีการนี้ล้มเหลวตามข้อกำหนด "พกพา" โซลูชันแบบพกพาที่ดีที่สุดที่ฉันสามารถหาได้คือperl -MTerm::ReadKey -E'say"Press any key to continue...";ReadMode 3;ReadKey'(52 ไบต์ + 16 ไบต์สำหรับ-MTerm::ReadKey<space>) ระวังนี้จะกรูขึ้น terminal ReadMode 1ของคุณจนกว่าคุณจะคืนค่าโหมดการอ่านในตอนท้ายด้วย
ThisSuitIsBlackNot

1
@ ThisSuitIsBlackNot แน่นอนฉันไม่เห็นข้อกำหนดเกี่ยวกับการพกพา เกี่ยวกับsayฉันมักจะไม่ใช้อีกต่อไป (ฉันเห็นด้วยส่วนใหญ่กับโพสต์เมตานี้ ) ตอนนี้กลับไปรหัสสั้น ๆIO::Promptจะสั้นกว่าTerm::ReadKey(40 + 13 = 53 perl -MIO::Prompt -e 'prompt"Press any key to continue... ",-1'bytes): และมันก็เกิดขึ้นมันสั้นกว่าที่ฉันแนะนำไว้ในความคิดเห็นก่อนหน้านี้
Dada

1
@ ดาด้าฉันเห็นการ-Eโต้แย้งทั้งสองด้าน ครั้งสุดท้ายที่ฉันตรวจสอบแม้ว่าคำตอบของ JB นั้นไม่มีใครโต้แย้งมาสี่ปีแล้วนั่นคือสิ่งที่ฉันได้ติดตาม บางทีฉันต้องกลับมาทบทวนอีกครั้ง ในฐานะที่เป็น IO :: Prompt หาที่ดี! แม้ว่าจะไม่สามารถใช้งานกับ Strawberry 5.20.2 บน Windows ได้ในขณะที่ Term :: ReadKey ใช้งานได้
ThisSuitIsBlackNot

1

PHP, 73 ไบต์

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

รันในเชลล์การโต้ตอบของ PHP ( php -a)


“ โปรแกรมจะต้องออกทันทีหลังจากกดคีย์” - การดำเนินการนี้จะรอจนกว่าจะเข้าหรือปิดไฟ ...
จัดการ

1

C #, 101 ไบต์

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

ทดสอบบน Linux ควรรันบนระบบใดก็ได้ที่มี. NET libraries และ Common Language Runtime

โปรแกรม 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 จะถูกละเว้น ปุ่มกดจะถูกสะท้อนบนหน้าจอหากพิมพ์ได้

Echo สามารถปิดใช้งานได้โดยแทนที่C.Read ()ด้วยC.ReadKey (0 <1)ด้วยราคา 6 ไบต์ขึ้นไป


1

8th , 47 ไบต์

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

โปรแกรมนี้ละเว้นคีย์เช่น ctrl, alt, caps lock จบการทำงานด้วยปุ่มเช่นตัวอักษรตัวเลขสัญลักษณ์และ Enter

คำอธิบาย

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

บน Windows เท่านั้นคุณสามารถบันทึกการเว้น 3 ไบต์cr
Chaos Manor

1

C #, 29 ไบต์

class P{static void Main(){}}

ไม่แน่ใจว่าสิ่งนี้ถูกต้องหรือไม่เพราะมันพิมพ์ออกมา:

กดปุ่มใดก็ได้เพื่อดำเนินการต่อ . .

แต่มีคำตอบแบบแบทช์ที่พิมพ์สิ่งนี้เช่นกัน


1

Forth (gforth), 39 ไบต์

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

(ใช่มีทางออกที่ 8 อยู่แล้ว แต่นี่จะสั้นกว่า)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.