ด่วน! หลบหนีหลุมดำ!


28

มันเป็นปีที่ 87,539,319 และการเดินในอวกาศเป็นเรื่องธรรมดาตอนนี้หลาย ๆ คนเดินทางไปในอวกาศด้วยตัวเองขับเคลื่อนโดยไม่มีอะไรเลยนอกจาก jetpack ที่ด้านหลังเขียนโปรแกรมด้วยคอมพิวเตอร์และคีย์บอร์ดส่วนตัว

คุณเป็นหนึ่งคนนั้น คุณออกไปบนทางเดินอวกาศที่เงียบสงบและน่ารักเมื่อทันใดนั้นคุณถูกจับด้วยแรงโน้มถ่วงของหลุมดำ!

เมื่อคุณดิ่งลงสู่หลุมดำนี้หมุนวนเข้ามาเร็วขึ้นคุณจะรู้ว่าโอกาสในการเอาชีวิตรอดของคุณคือการถ่ายทอดข้อความความทุกข์และหวังว่าเรือใกล้เคียงจะมาช่วยคุณ

ดังนั้นคุณต้องแยกแป้นพิมพ์ออกและเริ่มพิมพ์โปรแกรม

โปรแกรมของคุณสามารถใช้ภาษาใดก็ได้และต้องพิมพ์HELP!ไปที่ stdout (พีซีของคุณจะออกอากาศ stdout ทั้งหมดในพื้นที่ส่วนลึก)

อย่างไรก็ตามเมื่อคุณอยู่ใกล้หลุมดำแป้นพิมพ์ของคุณจะถูกฉีกเป็นชิ้นเล็กชิ้นน้อย!

สมมติว่าคุณกำลังใช้แป้นพิมพ์ QWERTY เหมือนด้านล่างและ Blackhole อยู่ทางซ้ายของคุณ

เค้าโครงแป้นพิมพ์ QWERTY

จำไว้ว่าการเลื่อนซ้ายและขวาเป็นสองปุ่มที่แตกต่างกัน

หลังจากกดปุ่มทุกครั้งแถวซ้ายสุดของแป้นพิมพ์ของคุณ (ปุ่มที่ครอบคลุมด้วยเส้นสีแดงซ้ายสุด) จะถูกคัดลอกและเหวี่ยงลงในหลุมดำ!

ดังนั้นปุ่มกดครั้งแรกของคุณอาจเป็นกุญแจสำคัญใด ๆ บนแป้นพิมพ์ แต่จากนั้นเป็นต้นมาไม่มีของซ้ายสุด Tab , Caps, Shift, Ctrlหรือ`ปุ่มอาจถูกนำไปใช้ในทุก (ยังสามารถใช้ r-shift และ r-ctrl ได้)

หลังจากกดปุ่มถัดไปกุญแจ1, Q, A, ZและAltถูกโยนลงไปในเหวและไม่อาจนำมาใช้นั้นไม่นาน หลังจากนั้นคุณจะสูญเสียSpace, X, S, W, 2และอื่น ๆ

เห็นได้ชัดว่าคุณต้องการทำให้โปรแกรมเสร็จเร็วที่สุดเท่าที่จะเป็นไปได้ ดังนั้นนี่คือ code-golf และโปรแกรมที่สั้นที่สุดในการกดปุ่มชนะ!

แต่ละคำตอบควรให้รายการของปุ่มกดดังนั้นถ้าคำตอบของฉันคือโปรแกรมนี้ (ในภาษา squardibblyack)

!HELP\.

รายการคีย์อาจมีลักษณะดังนี้:

Shift!HELP ปล่อยกะ \.

ความยาว: 8

ฉันกังวลว่าความท้าทายนี้อาจจะยากเกินไป แต่ฉันชอบที่จะเห็นคำตอบต่าง ๆ ที่ส่งมา!


13
ฉันกำลังลงมือทำสิ่งนี้เพราะรู้สึกว่า จำกัด เกินไปที่จะมีความคิดสร้างสรรค์มาก
isaacg

4
เราสามารถสันนิษฐานได้หรือไม่ว่าการใช้ python shell โดยไม่มีprintคุณสมบัติเป็น STDOUT?
user80551

3
จะทำอย่างไรถ้าแป้นพิมพ์ของฉันมีแป้นตัวเลข
mbomb007

4
อาจดีกว่านี้เล็กน้อยเมื่อใช้ปุ่มลูกศร
user80551

6
ปุ่มกดล็อคยังคงมีผลอยู่หรือไม่หากกดปุ่มแม้ว่ากุญแจหายไป?
Josh Caswell

คำตอบ:


42

CJam, 11 การกดแป้น

รหัสคือ

"HELP*")9-

และรายการสำคัญคือ

Shift"HELP*") ปล่อยกะ 9-

และนี่คือตัวอย่างของลักษณะที่ปรากฏ:

ป้อนคำอธิบายรูปภาพที่นี่

และนี่คือวิธีการทำงานของรหัส:

"HELP*"              "This puts the string HELP* on stack";
       )             "This takes out the last character of the string and puts it
                      on the stack as a character";
        9-           "This simply reduces 9 from the ASCII code of * character
                      present on the stack which makes it an !";
                     "CJam automatically prints everything that is on stack";

ลองรหัสที่นี่


2
การใช้เครื่องหมายดอกจันนั้นค่อนข้างฉลาด! ฉันไม่เคยคิดอย่างนั้น
theonlygusti

2
ฉันไม่สามารถทำได้ใน GolfScript มันยาวไปหน่อย การแปลงจากเลขจำนวนเต็มเป็น ascii นั้นไม่มีประสิทธิภาพ "HELP*")9-[]+''+. ฉันพิมพ์สี่ครั้งสุดท้ายไม่ได้
mbomb007

3
ฉันเพิ่งรู้ว่า CJam จะได้คำตอบ ...
Jerry Jeremiah

9
ดังนั้นหนึ่งในภาษาที่พิสูจน์อนาคตได้มากที่สุดในโลกคือ CJam
Fors

5
ดูนิ้วของคุณเมื่อคุณโดนEมันดูเหมือนว่ามันอาจถูกนำไปสู่นรก!
Canadian Luke ติดตั้ง MONICA ใหม่

3

rs , 10 การกดแป้น (ถือว่าผู้ใช้ใช้ Nano)

หรือบรรณาธิการเทียบเท่าที่Shiftไม่ได้เลือกข้อความ

นี่ไม่ใช่ภาษาการเขียนโปรแกรม แต่ถ้าsedสามารถใช้กับ Code Golf ได้ก็rsสามารถใช้ได้

Right Shift ! Left E Left H Right L P Enter

HELP!

มันเพียงแทนที่สตริงว่างด้วย "ช่วย!" พิมพ์อย่างมีประสิทธิภาพไปยังหน้าจอ เทียบเท่ากับสคริปต์ sed:

s/^/HELP!/

ส่วนที่น่าสนใจคือด้านหน้าของรูปแบบการทดแทนrsโดยอัตโนมัติ^/ซึ่ง/ไม่พบตัวคั่น ( ) มีประโยชน์สำหรับการเยื้องรหัส


คุณลืมไปว่าEnterเป็นจังหวะด้วย 10 จังหวะ
vapcguy

1
@vapcguy ถูกต้อง คงที่
kirbyfan64sos

-3

ผมเชื่อว่าเร็วนี้สามารถทำได้ในสคริปต์ใด ๆ ที่เป็นสุ่ม 11 กับ Pyth ตั้งแต่ภาษาใด ๆ จะต้องมีตัวละครบางอย่างเช่น "p" หรือเครื่องหมายคำพูดหรือเครื่องหมายดอกจันหรือบางสิ่งบางอย่างแล้วคำว่าHELP!และที่Eจะไป รวดเร็วหมายกดปุ่มพิเศษสำหรับการเลื่อนเคอร์เซอร์กลับมาก่อนEที่จะใส่ในHเหมือนอย่างที่เขาพบนั้นไปข้างหน้าอีกครั้งและLP

หากคุณมีสิ่งที่ต้องมีคำสั่งเช่นdispหรือechoคุณจะต้องทำพื้นที่เป็นครั้งแรกก่อนที่จะได้รับการฉีกขาดปิดShiftและ!จากนั้นใช้กุญแจสำคัญในการเริ่มต้นคำของคุณและปุ่มลูกศรเป็นสุ่มอธิบายHome HELPแต่คุณจะคลำทางจนกว่าคุณจะดูดหรือทำกุญแจที่คุณต้องการเร็วเกินไปที่จะทำสิ่งเหล่านั้น มีเพียงไม่เกิน 14 ตัวเป็นและที่สมมติว่าเป็นคนสุดท้ายของคุณหรือ\ |คุณต้องการ 10 เพียงทำHELP!:

SHIFT ! HOME E LT ARROW H RT ARROW L P ENTER

การกำหนด"หรือ*หรือจะได้รับเพียงแค่กดก่อนที่จะP Hดังนั้น 11 จะต้องเร็วที่สุด หรือ 9 ถ้าเราทิ้งเครื่องหมายอัศเจรีย์และใช้ประโยชน์ทุกอย่างและไม่มีสัญลักษณ์ให้พิมพ์

แต่ไม่ฉันเป็นนักประวัติศาสตร์อินเทอร์เน็ตในปี 87,539,319 และทั้งหมดและเป็นความหวาดระแวงของมนุษย์ต่างดาวและฝนดาวตกประหลาดทำให้หลุมดำอยู่คนเดียวฉันจะไม่ยอมทำอย่างนั้น ก่อนที่ฉันจะออกไปเดินเล่นในอวกาศฉันต้องเตรียมตัวพร้อมบทความนี้ที่ฉันจะได้พบในงานวิจัยของฉันเพื่อขอบคุณสำหรับสิ่งนั้น ฉันจะโหลดไฟล์ข้อความที่มี "ความช่วยเหลือ!" อยู่แล้ว ในนั้นและมีโปรแกรมที่สามารถเขียนตำแหน่งพิกัดของฉันโดยใช้ข้อมูลดาวเทียมติดตามล่าสุดที่เรามีลงในไฟล์นั้น โปรแกรมนั้นฉันจะเรียกว่า "hlp.c" ดังนั้นมันจะไป:

การกดแป้น 7 ครั้ง:

c Home h l p . Enter

ฉันรู้ว่าฉันสามารถทำให้ชื่อไฟล์ของฉันสั้นลง แต่ไม่มีใครต้องการออกอากาศตำแหน่งของพวกเขาโดยบังเอิญโดยการพิมพ์HและEnterโดยเฉพาะอย่างยิ่งถ้าโปรแกรมยังแจ้งเตือนเจ้าหน้าที่ (เหมือนโทร 911 ตอนที่คุณไม่มีเหตุฉุกเฉิน)? ไปกับชื่อไฟล์ 3 ตัวอักษรและเราจะถือว่าเรายังต้องมีนามสกุลไฟล์ที่มี.อย่างน้อย 1 ตัวอักษร นอกจากนี้การตั้งชื่อhlpแทนที่จะเป็นhelpวิธีที่เราหลีกเลี่ยงการรับฟีเจอร์ช่วยเหลือในตัวที่น่ารังเกียจเมื่อเรากำลังจะตายในหลุมดำ ฉันรู้ว่าฉันสามารถละเว้นการพิมพ์.cโดยทำ h l p Enterแต่วิธีนี้ฉันหลีกเลี่ยงสิ่งที่น่ารังเกียจPlease supply file extensionหรือCannot find hlpข้อผิดพลาดเมื่อฉันกำลังถูกดูดเข้าไปในหลุมดำ "ขยะมูลฝอยในขยะ" จะยังคงเป็นมาตรฐานในอนาคต

ดังนั้นกราฟิกของฉันจะมีลักษณะดังนี้:

ป้อนคำอธิบายรูปภาพที่นี่

และนี่ก็เป็นเรื่องที่ง่ายต่อการจดจำเนื่องจาก "ถอยหลัง" เท่านั้นที่พิมพ์cครั้งแรก ที่เหลือก็เหมือนกับชื่อไฟล์


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

1
... อย่าวิ่งแบบนั้น คุณต้องรวบรวมและเรียกใช้ก่อน ดังนั้นอย่างน้อยคุณจะต้องทำhelp.exe(หรือhelp.out) เพื่อเรียกใช้ไฟล์รหัสที่คอมไพล์แล้ว และสุดท้ายถ้าคุณกำลังดัดกฎระเบียบและการใช้ประโยชน์จากช่องโหว่มากทำไมไม่เพียงแค่มีไฟล์ที่เรียกว่าh.c?
เครื่องมือเพิ่มประสิทธิภาพ

จุดประสงค์ของ.cไฟล์คือ CSCRIPT ไม่ใช่รหัสภาษา C ที่ต้องการคอมไพเลอร์ มีh.cอาจหมายถึงเมื่อพยายามพิมพ์ชื่อของไฟล์อื่นโดยมีเพียง 1 ตัวอักษรในชื่อว่ามันถูกเรียกโดยไม่ตั้งใจแทนไฟล์อื่น - ฉันอธิบายว่าแล้ว ไม่ว่ารหัสที่อยู่ใน.cไฟล์ไม่ว่าจะเป็นConsole.Log("HELP!"), Console.WriteLine("HELP!")และอื่น ๆ ที่ไม่เกี่ยวข้องส่วนใหญ่โดยเฉพาะอย่างยิ่งนับตั้งแต่ถูกยังจะรวมถึงรหัสอินเตอร์เฟซกับดาวเทียมที่จะได้รับการแก้ไขประสานงาน - สิ่งที่ฉันแน่ใจว่าในอนาคตจะเปิด แหล่ง
vapcguy

จุดของฉันกับโพสต์นี้ก็คือการระบุว่ามีชื่อไฟล์หรือสิ่งที่อยู่นอกขอบเขตของกฎก็จะเป็นวิธีเดียวที่จะเอาชนะการกดแป้นพิมพ์ 11 ครั้ง btw เนื่องจากใช้เวลาเพียง 10 HELP!เพราะฉันกล่าวถึง ก่อนหน้าเคอร์บีและน้อยกว่าเช่น 9 หากการใช้ตัวพิมพ์ใหญ่และการใช้ Shift ไม่สำคัญและเราไม่จำเป็นต้องมีอักขระก่อนหรือหลังHELPเช่นด้วยเครื่องหมายอัศเจรีย์หรือในกรณีของเคอร์บีต้องพิมพ์คีย์ ตัวอักษรเช่นpหรือ*เพื่อเริ่มโปรแกรม
vapcguy

และhelp.exeและhelp.outจะไม่ทำงานกับหลุมดำที่แยกออกจากกุญแจ eจะหายไปตามเวลาที่exeขึ้นมาและจะหายไปเมื่อพยายามที่จะประเภทt outคุณสามารถพิมพ์ส่วนtเข้าoutก่อนจากนั้นกด Home แล้วพิมพ์HELPส่วน แต่ถ้าคุณสามารถขยายส่วนที่เหลือ 1 ตัวอักษรทำไมคุณถึงไม่?
vapcguy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.