การล่าไข่อิสเตอร์
บอทหาไข่ก่อนที่กระต่ายจะเจอไข่ บอทมีความสุข
ภาพรวม
นี่เป็นความท้าทายที่ยอดเยี่ยมสำหรับเทศกาลอีสเตอร์และประเพณีการล่าไข่อีสเตอร์!
บอทของคุณมีวิสัยทัศน์สองช่องว่างในทุกทิศทางรวมทั้งแนวทแยงมุมสร้างสี่เหลี่ยมขนาด 5x5 รอบ ๆ ตัวคุณที่คุณเห็น มันกำลังมองหาไข่และใครก็ตามที่พบว่าไข่ส่วนใหญ่ชนะ!
คณะกรรมการ
กระดานจะประกอบด้วยo
s ซึ่งคือไข่อีสเตอร์#
s ซึ่งเป็นผนัง*
s ซึ่งเป็นผู้เล่นคนอื่นและs ซึ่งเป็นพื้นที่ว่าง
(number of entries) * 3
มันจะเป็นตารางที่มีความยาวขอบ- มันจะถูกล้อมรอบด้วยกำแพง
- ด้านในของผนังจะมีการจัดวางแบบสุ่มผนังแนวตรงของ
#
ซึ่งจะมีความยาวแบบสุ่มระหว่าง 2 ถึง 10 จะมี(number of entries) * 3
ของพวกเขา - ไข่จะถูกวางแบบสุ่ม จะมี
(number of entries) * 4
ของพวกเขาและพวกเขาจะถูกสร้างขึ้นในช่องว่าง ()
- ต้องมีอย่างน้อย 7 รายการสำหรับกระบวนการสร้างบอร์ดเพื่อให้ทำงานได้อย่างถูกต้อง
นี่คือ JSFiddle ที่จะสร้างบอร์ดแบบสุ่มให้คุณทดสอบด้วย นี่คือตัวอย่างด้วย(number of entries) = 7
:
#####################
# o ##
# # o ##
# #o ###### ##
###### # ##
## o # # ##
## o# #o# o o##
## #o # # o # #
## # o # # # #
## ## # # o # #
## # # o # # #
## # o # ## # # #
## # # # #
# o # ## # #
# o oo ##o #
#o ####### oo ## #
# # # #
# o o o# #
# o #### o o#
# #
#####################
หลังจากสร้างบอร์ดแล้วผู้เล่นแต่ละคนจะถูกวางลงบนพื้นที่สุ่ม(พื้นที่ว่าง)
อินพุต
คุณจะต้องป้อนข้อมูลหกบรรทัด ห้าบรรทัดแรกคือฟิลด์การมองเห็นของคุณ (เว้นวรรคนอกกระดานจะถูกแทนด้วยX
และคุณจะมีช่องว่างตรงกลาง*
) และบรรทัดที่หกจะว่างเปล่า (ตอนแรก)
เอาท์พุต
คุณจะออกสามบรรทัด ก่อนอื่นทิศทางที่คุณต้องการย้าย:
1 2 3
8 YOU 4
7 6 5
(9 เป็นแบบไม่มี op ถ้าคุณไม่ต้องการย้าย) วินาทีหนึ่งในA
ttack, C
ounter หรือN
othing (ซึ่งจะอธิบายในเชิงลึกในไม่ช้า) และบรรทัด thrid จะเป็นสตริงที่มีความยาวสูงสุด 1024 นี่จะเป็นความทรงจำของบอทของคุณ คุณสามารถใช้มันเพื่อสิ่งที่คุณต้องการหรือคุณอาจปล่อยให้มันว่างเปล่า หน่วยความจำนี้จะเป็นบรรทัดที่หกของอินพุตไปยังโปรแกรมของคุณในการรันครั้งถัดไป
บรรทัดเอาต์พุตเพิ่มเติมทั้งหมดจะถูกละเว้นและหากมีเพียงหนึ่งบรรทัดบรรทัดที่สองจะถือว่าว่างเปล่า
การย้าย
กระบวนการต่อไปนี้ใช้เพื่อกำหนดตำแหน่งที่คุณย้าย:
- หากเมื่อคุณย้ายคุณจะสิ้นสุดในพื้นที่ว่างเปล่า (
) เครื่องเล่นของคุณจะถูกวางลงในพื้นที่นั้น
- หากคุณสิ้นสุดในกำแพง (
#
) การเคลื่อนไหวของคุณจะถูกละเว้นและคุณสูญเสียตาคุณ - หากคุณลงเอยด้วยไข่ (
o
) หรือเครื่องเล่น (*
) ข้อมูลนี้จะถูกเก็บไว้และจะถูกใช้หลังจากที่ทุกคนย้ายไปแล้ว
หลังจากที่ทุกคนเคลื่อนย้ายความคลุมเครือจะได้รับการแก้ไข
หากมีผู้เล่นสองคนที่ลงจอดในพื้นที่เดียวกันการต่อสู้จะเกิดขึ้น! นี่คือที่A
/ C
/ เข้าN
มาเพื่อเล่น A
ttack beats N
othing (การโจมตีปกติ), N
othing beats C
ounter (คุณไม่สามารถโต้กลับได้) และC
ounter beats A
ttack (โต้กลับ) ผู้เล่นที่ชนะการต่อสู้ครั้งนี้จะอยู่ในจตุรัสของพวกเขาและผู้เล่นที่แพ้จะกลับไปที่จตุรัสเดิมที่พวกเขาเริ่ม ในกรณีที่เสมอกันผู้เล่นทั้งสองกลับไปที่เดิม
หากผู้เล่นที่สูญเสียหรือถูกผูกมัดกลับไปยังที่ที่พวกเขาอยู่และมีผู้เล่นอื่นอยู่ที่นั่นไม่มีการต่อสู้และผู้เล่นคนอื่นจะกลับไปสู่พื้นที่เดิม หากพื้นที่นี้มีผู้เล่นอื่นผู้เล่นรายนั้นจะกลับไปและจะดำเนินการต่อไปจนกว่าผู้เล่นทั้งหมดจะอยู่ในพื้นที่ที่แตกต่างกัน
หากมีผู้เล่นสามคนขึ้นไปในหนึ่งช่องว่างผู้เล่นทุกคนจะกลับสู่ตำแหน่งเดิม
หากผู้เล่นคนใดยังคงยืนอยู่บนไข่ ...
- หากผู้เล่นเลือก
A
ไข่จะถูกทำลาย - หากผู้เล่นเลือกจะ
C
ไม่มีอะไรเกิดขึ้นและผู้เล่นกลับไปยังพื้นที่ดั้งเดิม - หากผู้เล่นเลือกผู้เล่นจะ
N
หยิบไข่ขึ้นมา! คะแนนของผู้เล่นจะเพิ่มขึ้นหนึ่งและไข่จะถูกลบออก
ภาษา
คุณสามารถใช้ภาษาใดก็ได้ที่มีให้ใช้งานได้ฟรีบน Windows, OSX และ Linux เพื่อรับรองความเป็นธรรมในการแข่งขันแต่ละครั้ง หากรหัสไม่สามารถรันได้อย่างอิสระ แต่สามารถรวบรวมหรือบรรจุเป็นรูปแบบที่เป็นได้โปรดรวมรูปแบบนี้ไว้ในคำตอบของคุณด้วย หากคุณสามารถรวบรวมรหัสของคุณเป็นภาษาที่ใช้กันทั่วไปมากขึ้น (เช่น CoffeeScript -> JavaScript) โปรดทำเช่นนั้น
เกณฑ์การให้คะแนน
คะแนนของคุณจะเป็นจำนวนไข่เฉลี่ยที่คุณได้รับจากการวิ่งสิบครั้ง การวิ่งสิ้นสุดลงเมื่อเก็บไข่ทั้งหมดหรือเมื่อ(number of entries * 25)
ครบรอบแล้ว ฉันจะตรวจสอบด้วยตนเองว่าเป็นไปได้ที่จะเข้าถึงไข่ทั้งหมดสำหรับแต่ละแผนที่ (โดยการสร้างแผนที่อย่างต่อเนื่องจนกว่าไข่ทั้งหมดจะสามารถเข้าถึงได้)
ป้ายบอกคะแนน
กระดานคะแนนจะถูกเพิ่มเมื่อตรงตามเงื่อนไขต่อไปนี้ทั้งหมด:
- มีการส่งรายการที่ถูกต้องอย่างน้อยเจ็ดรายการที่มีคะแนนเป็นบวกหรือเป็นศูนย์ (ไม่ใช่ downvote)
- ผ่านไปอย่างน้อย 48 ชั่วโมงนับตั้งแต่การสร้างความท้าทายนี้ (UTC 14:23)
กฎจะไม่เปลี่ยนแปลงในช่วงระยะเวลาก่อนการแข่งขันยกเว้นเพื่อเพิ่มความกระจ่างในกรณีที่กฎไม่ชัดเจน เมื่อติดป้ายบอกคะแนนแล้วโปรแกรมทดสอบจะถูกโพสต์ที่นี่เพื่อให้คุณสามารถทดสอบรายการของคุณได้ รหัสการทดสอบสำหรับสิ่งนี้ยังคงอยู่ระหว่างดำเนินการ แต่สามารถเล่นได้และใช้งานได้ นี่คือ repo ของ GitHub
9
เขาจะไม่ถูกโจมตีอย่างมีความหมาย หากผู้เล่นอื่น (B) ก้าวเข้าสู่ผู้เล่นสี่เหลี่ยมจัตุรัสและชนะ A จะถูกย้ายกลับไปที่จตุรัสเดิม (ซึ่งเหมือนกัน) แต่ตอนนี้มีการปะทะกันเพราะทั้ง A และ B อยู่ที่นั่นดังนั้น B จึงต้องกลับไปที่จัตุรัสของเขาเอง ดังนั้นผลลัพธ์จึงเป็นอิสระจากการต่อสู้ที่แท้จริง B จะย้ายกลับไปที่จตุรัสเริ่มต้นและ A จะยังคงอยู่ ที่จะให้ฉันเขียนทั้งสองที่สามารถช่วยให้การส่งอื่นโดยการปิดกั้นเส้นทางสำหรับคนอื่น