มีเกมที่ฉันชอบเล่น มันเกิดขึ้นบนกริดที่มีขนาด จำกัด (แต่มันถูกห่อเหมือนทรงกลม) บนกริดนั้นจะมีการเลือกจุดแบบสุ่ม (เลขจำนวนเต็มเท่านั้น) จากนั้นฉันผู้ใช้จะได้รับแจ้งให้ป้อนค่าพิกัด หากอินพุตของฉันตรงกับจุดสุ่มฉันจะบอกว่าฉันชนะ ไม่เช่นนั้นฉันจะบอกระยะห่างระหว่างจุดเข้ากับจุดสุ่มของฉัน ตัวอย่างเช่นถ้าผมเดา(2,2)
และจุดที่สุ่มที่แล้วระยะทางที่จะเป็น(4,3)
sqrt[(3-2)^2 + (4-2)^2] = sqrt[5]
เกมจะดำเนินต่อไปจนกว่าผู้เล่นจะมาถึงตำแหน่งที่ถูกต้องของจุด
วัตถุประสงค์สร้างเกมเวอร์ชั่นที่ใช้งานได้ตามที่อธิบายไว้ข้างต้น คุณต้องสร้างโปรแกรมเต็มรูปแบบเพื่อทำเช่นนั้น นี่คือสิ่งที่โปรแกรมของคุณควรทำ:
- ขอสองอินพุต: ความสูงและความกว้างของบอร์ด ต้นกำเนิดอยู่ที่ด้านซ้ายบนของกระดาน
1024
ปัจจัยเหล่านี้จะไม่เกิน - เลือกจุดสุ่มบนกระดานนั้น นี่จะเป็นจุดที่จะเดาได้
- ยอมรับอินพุตจำลองการเลี้ยว อินพุตจะเป็นทั้งคู่จำนวนเต็มคั่นด้วยช่องว่างหรือสองจำนวนเต็มแยกจากกัน ในการตอบกลับอินพุตนี้โปรแกรมจะทำหนึ่งในสองสิ่งต่อไปนี้:
- หากอินพุตตรงกับจุดสุ่มที่เลือกเอาท์พุทข้อความส่งสัญญาณชัยชนะของผู้ใช้ ฉันจะแนะนำ "คุณได้รับรางวัล!"
- มิฉะนั้นให้ส่งออกระยะห่างระหว่างจุดอินพุตของผู้ใช้กับจุดสุ่ม
- เมื่อผู้ใช้ได้รับชัยชนะแสดงจำนวนรอบที่ผู้ใช้ทำ จากนั้นโปรแกรมจะออก
โบนัส
โบนัสจะถูกนำไปใช้ตามลำดับที่ปรากฏในรายการนี้
- -150 ไบต์หากโปรแกรมของคุณใช้จำนวนเต็มอินพุท
D
ที่อธิบายถึงมิติของเกม เช่นถ้าD = 3
คุณสร้างจุดสุ่มของ3
จำนวนเต็มรับ3
อินพุตจำนวนเต็มและส่งออกระยะทางระหว่างจุดเหล่านั้น - -50% (หรือ + 50% ถ้า
score < 0
) หากคุณแสดงภาพกราฟิกของบอร์ด (ASCII หรือรูปภาพ) ที่แสดงตำแหน่งที่ผู้ใช้คาดเดามาก่อนหน้านี้ในตารางขนาดที่กำหนดและตัวนับเทิร์น (หากคุณไปรับโบนัสแรกโบนัสนี้จะใช้กับโหมด2D
และ1D
เท่านั้นหากคุณเพิ่มเอาต์พุตกราฟิก 3D คุณจะได้รับ -50% เพิ่มเติม) - -60 ไบต์หากคุณสามารถระบุโหมดเกม (เลือกโดยอินพุตในตอนเริ่มต้นนั่นคือเมื่อได้รับ
0
แล้วให้ดำเนินการเกมโหมดปกติเมื่อได้รับ1
แล้วให้เล่นเกมนี้) ซึ่งมีจุดเคลื่อนที่ 1 หน่วยในทิศทางแบบสุ่มมุมฉากต่อเทิร์น
เพิ่มเติมเกี่ยวกับการห่อ
การห่อเกิดขึ้นเฉพาะเมื่อในโบนัสที่สามจุดเคลื่อนที่จะเคลื่อนที่ข้ามขอบเขตใด ๆ ในกรณีนี้จุดต่อจะบิดงอตามจุดเช่น:
... ...
..R (move right) R..
... ...
พฤติกรรมการห่อนี้ไม่มีผลต่อการคาดเดาของผู้ใช้นอกเหนือจากข้อเท็จจริงที่ว่าจุดนั้นเปลี่ยนทิศทาง
ลีดเดอร์บอร์ด
สแต็คส่วนย่อยที่ด้านล่างของโพสต์นี้สร้างแคตตาล็อกจากคำตอบ a) เป็นรายการคำตอบสั้นที่สุดต่อภาษาและ b) เป็นลีดเดอร์บอร์ดโดยรวม
เพื่อให้แน่ใจว่าคำตอบของคุณปรากฏขึ้นโปรดเริ่มคำตอบด้วยหัวข้อโดยใช้เทมเพลต Markdown ต่อไปนี้:
# Language Name, N bytes
ที่N
มีขนาดของส่งของคุณ หากคุณปรับปรุงคะแนนของคุณคุณสามารถเก็บคะแนนเก่าไว้ในบรรทัดแรกโดยการตีพวกเขาผ่าน ตัวอย่างเช่น
# Ruby, <s>104</s> <s>101</s> 96 bytes
หากคุณต้องการรวมหลายตัวเลขไว้ในส่วนหัวของคุณ (เช่นเนื่องจากคะแนนของคุณคือผลรวมของสองไฟล์หรือคุณต้องการแสดงรายการการลงโทษการตั้งค่าสถานะของล่ามแยกต่างหาก) ตรวจสอบให้แน่ใจว่าคะแนนจริงเป็นตัวเลขสุดท้ายในส่วนหัว:
# Perl, 43 + 2 (-p flag) = 45 bytes
คุณยังสามารถทำให้ชื่อภาษาเป็นลิงก์ซึ่งจะปรากฏในตัวอย่างข้อมูล:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
10x10
จุดสุ่มคือ(9,4)
และฉันเดาว่า(2,2)
ระยะทางsqrt(13)
หรือsqrt(53)
? (หมายเหตุสำหรับอนาคต: ถ้าคุณทำอะไรแปลก ๆ อย่ารวมการสุ่มเพราะมันทำให้แทบจะเป็นไปไม่ได้ที่จะจัดทำกรณีทดสอบ) 2. ในโบนัสที่สามควรคำนวณระยะทางและเอาท์พุทก่อนหรือหลังจุดเคลื่อนที่?