ท้าทาย:
สร้างโปรแกรมหรือฟังก์ชั่นที่รับอินพุตจำนวนเต็มซึ่งส่งออกโปรแกรม / ฟังก์ชั่นใหม่ตามที่ระบุด้านล่าง
การป้อนข้อมูล:
จำนวนเต็มn: เวลาเป็นวินาทีก่อนที่ Time Bomb จะระเบิด
เอาท์พุท:
โปรแกรมต้นฉบับที่มีเวลาnเป็นวินาทีในการป้อนข้อมูลจะส่งออกโปรแกรม / ฟังก์ชั่นใหม่ที่ทำสิ่งต่อไปนี้:
- ได้
nไม่กี่วินาทีที่ผ่านมาตั้งแต่โครงการก่อนหน้านี้ได้รับการทำงาน? พิมพ์BOOM! - อื่น: พิมพ์โปรแกรม / ฟังก์ชั่นซึ่งเมื่อเรียกใช้ตัวเองจะรีเซ็ตตัวจับเวลากลับเป็น
nวินาที (และทำหน้าที่เหมือนกับโปรแกรม / ฟังก์ชั่นเอาท์พุทแรก)
หมายเหตุ: มันไม่เหมือนกับโปรแกรม / ฟังก์ชั่นเอาท์พุทแรก (ในภาษาส่วนใหญ่อย่างน้อย) เนื่องจากเวลาเริ่มต้นมีการเปลี่ยนแปลง (ดูตัวอย่างคำอธิบายด้านล่าง)
ตัวอย่างรหัสเทียม:
สมมติว่าโปรแกรมต้นฉบับคือABCและอินพุตเป็น60วินาที:
ABCและเอาท์พุท60DEF(60)
- หาก
DEF(60)ทำงานภายใน 60 วินาทีมันจะแสดงผลDEF_G(60)ซึ่งจะทำหน้าที่เหมือนกับDEF(60)แต่ด้วยเวลาเริ่มต้นใหม่ - หาก
DEF(60)ทำงานหลังจาก 60 วินาทีมันจะออกBOOM!มา
ตัวอย่างการชี้แจงสิ่งที่ฉันหมายถึงด้วย 'เวลาเริ่มต้น':
- โปรแกรมฐานด้วยการป้อนข้อมูลวินาทีจะดำเนินการที่
60มันออกโปรแกรมการส่งออกเป็นครั้งแรกที่มีเวลาเริ่มต้นของ12:00:0012:00:00 - โปรแกรมนี้เอาท์พุทเป็นครั้งแรกกับการเริ่มต้นช่วงเวลาของการจะดำเนินการที่
12:00:00มันออกโปรแกรมเอาท์พุทที่สองด้วยเวลาเริ่มต้นของ12:00:4512:00:45 - โปรแกรมนี้เอาท์พุทที่สามกับเวลาเริ่มต้นของการเรียกใช้ที่
12:00:45มันออกโปรแกรมการส่งออกที่สี่ที่มีเวลาเริ่มต้นของ12:01:2512:01:25 - โปรแกรมนี้เอาท์พุทที่สี่ที่มีเวลาเริ่มต้นของการเรียกใช้ที่
12:01:25มันจะออก12:05:00BOOM!
หมายเหตุวิธีการส่งออกก่อนจะพิมพ์BOOM!หลัง12:01:00แต่โปรแกรมการส่งออกมีความก้าวหน้าดังนั้นแม้ว่าจะเป็น12:01:25ในขั้นตอนที่ 3 ก็จะยังคงส่งออกโปรแกรมต่อไปแทนBOOM!(เพราะโปรแกรมเอาท์พุทของการส่งออกได้เริ่มต้นครั้งเกินโปรแกรมผลลัพธ์ที่แรก) .
กฏท้าทาย:
- ใช้กฎ quine เริ่มต้น
- อย่างน้อย
nวินาทีควรผ่าน ดังนั้นถ้าใส่เป็น60และเริ่มต้นเวลา12:00:00ที่12:01:00มันจะยังคงส่งออกโปรแกรม v2 แต่ที่มันจะออก12:01:01BOOM! - โปรแกรมเอาต์พุตจะไม่รับอินพุตใด ๆ ( ยกเว้นพารามิเตอร์ว่างที่ไม่ได้ใช้หากมีขนาดสั้นกว่า ) ควรกำหนดเวลาเริ่มต้นให้กับโปรแกรมถัดไปเป็นค่า 'ฮาร์ดโค้ด' (ซึ่งเป็นสาเหตุที่เอาต์พุตของโปรแกรมเอาต์พุตไม่เหมือนกันกับโปรแกรมก่อนหน้า (ในภาษาส่วนใหญ่)
- เฉพาะขนาดของโปรแกรม / ฟังก์ชั่นหลักของคุณเท่านั้นที่ถูกนับเป็นไบต์
- คุณสามารถส่งออกโปรแกรม / ฟังก์ชั่นไม่ว่าจะเป็นสตริง (หรือรูปแบบที่เหมาะสมเทียบเท่าเช่นไบต์ / อักขระอาร์เรย์ / รายการ) เป็นฟังก์ชั่นหากภาษาของคุณรองรับสิ่งนี้หรือรูปแบบอื่น ๆ ที่สมเหตุสมผล (โปรดถามว่าคุณไม่แน่ใจ)
กฎทั่วไป:
- นี่คือ รหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์จะเป็นผู้ชนะ
อย่าปล่อยให้ภาษาโค้ดกอล์ฟกีดกันคุณจากการโพสต์คำตอบด้วยภาษาที่ไม่ได้เข้ารหัส พยายามหาคำตอบสั้น ๆ ที่เป็นไปได้สำหรับภาษาโปรแกรม 'ใด ๆ ' - กฎมาตรฐานใช้สำหรับคำตอบของคุณดังนั้นคุณจึงได้รับอนุญาตให้ใช้ STDIN / STDOUT ฟังก์ชั่น / วิธีที่มีพารามิเตอร์ที่เหมาะสมและชนิดผลตอบแทนโปรแกรมเต็มรูปแบบ การโทรของคุณ
- ช่องโหว่เริ่มต้นเป็นสิ่งต้องห้าม
- หากเป็นไปได้โปรดเพิ่มลิงค์พร้อมทดสอบรหัสของคุณ
- นอกจากนี้โปรดเพิ่มคำอธิบายหากจำเป็น