คุณเป็นก้อนกลมของน้ำเมือก โดยธรรมชาติแล้วการเป็นน้ำเมือกคุณต้องการที่จะไหลซึ่มมากที่สุด แต่มี Slimes อีก 3 คนที่ต้องการทำสิ่งเดียวกัน ใครจะเป็นผู้ที่เหนือกว่าเมือก?
ลักษณะ
Slimes ทั้งหมดจะถูกรวบรวมไว้ในเวทีเดียว ผู้พิพากษา (เช่นโปรแกรมควบคุม) จะผ่านรายการชุดค่าผสมเมือก 4 ชุดที่เป็นไปได้ทั้งหมดวางไว้ที่มุมโต๊ะและสังเกตดูว่าน้ำเมือกใดไหลผ่านบริเวณส่วนใหญ่
Slimes ของคุณสามารถทำอย่างใดอย่างหนึ่งจาก 3 การกระทำในแต่ละเทิร์น: กางออกกระโดดหรือผสาน คำอธิบายเพิ่มเติมเกี่ยวกับความหมายของสิ่งเหล่านี้ในส่วนผลผลิต
คณะกรรมการ / สนามกีฬา
เวทีจะเป็นกระดานสี่เหลี่ยม (ปัจจุบัน 8x8 แต่อาจมีการเปลี่ยนแปลงในอนาคต) นี่คือตัวอย่างของเกมที่กำลังดำเนินอยู่:
11111222
11111444
11.22444
.1222.4.
333.3244
33333.44
333...44
333....4
Slime แสดงโดยตัวเลข 1 ถึง 4 (ผู้เล่น 1 ถึง 4) และพื้นที่ว่างจะแสดงเป็นจุด ( .
) ในขั้นต้นกระดานจะเริ่มต้นเป็นพื้นที่ว่างทั้งหมดยกเว้นเมือกหน่วยเดียวของผู้เล่น 1 ที่มุมซ้ายบน, ผู้เล่น 2 ที่มุมบนขวา, ผู้เล่น 3 ที่มุมซ้ายล่าง, และผู้เล่น 4 ที่มุมขวาล่าง
พิกัดจะแสดงด้วยดัชนีแถวและคอลัมน์ 0 ตามเพื่อความสะดวกในการอ่านรหัส ตัวอย่างเช่นพิกัด (3, 6) แสดงถึงสแควร์ที่ 7 ในแถวที่ 4 (ในตัวอย่างข้างต้น a 4
) (สิ่งนี้ทำให้ง่ายต่อการเข้าถึงช่องสี่เหลี่ยม: board[coords.x][coords.y]
.) ต่อไปนี้เป็นภาพประกอบ:
(0, 0) (0, 1) (0, 2)
(1, 0) (1, 1) (1, 2)
(2, 0) (2, 1) (2, 2)
อินพุต
อินพุตของโปรแกรมของคุณจะเป็นผู้เล่นที่คุณ (1, 2, 3 หรือ 4), เครื่องหมายจุลภาค ( ,
), จากนั้นเนื้อหาของกระดาน / เวที (โดยขึ้นบรรทัดใหม่ด้วยเครื่องหมายจุลภาค) ตัวอย่างเช่นหากคุณเป็นผู้เล่น 3 ในสถานการณ์ข้างต้นข้อมูลของคุณจะเป็น:
3,11111222,11111444,11.22444,.1222.4.,333.3244,33333.44,333...44,333....4
เอาท์พุต
โปรแกรมของคุณจะต้องส่งออก 4 จำนวนเต็ม สองรายการแรกคือดัชนีแถวและคอลัมน์ตามลำดับของเมือกที่คุณต้องการย้ายและสองรายการถัดไปคือดัชนีแถวและคอลัมน์ที่คุณต้องการย้าย
คุณมีสามตัวเลือกในแต่ละเทิร์น: กางออกกระโดดหรือผสาน
กระจาย
ในการแพร่กระจายพิกัดเป้าหมายจะต้องห่างจากน้ำเมือกที่กำลังเคลื่อนที่อย่างน้อยหนึ่งตารางและสี่เหลี่ยมจตุรัสที่เป้าหมายต้องเป็นพื้นที่ว่าง เมื่อมีการแพร่กระจายน้ำเมือกใหม่จะถูกสร้างขึ้นที่พิกัดเป้าหมายและน้ำเมือกเก่าจะไม่ถูกลบออก หลังจากสร้างเมือกใหม่แล้วศัตรูทั้งหมดจะผอมลงใน 8 สแควร์รอบเมือกใหม่นี้จะถูกแปลงเป็นเครื่องเล่นที่เคลื่อนไหว
ตัวอย่างเช่นกับบอร์ดในรูปที่ 1 หากผู้เล่น 1 ถูกส่งออก
0 1 1 2
ผลลัพธ์จะเป็นบอร์ดในรูปที่ 21. 2. 11.22 11.12 1..22 1.112 ..22. ..11. ..... .....
กระโดด
ในการกระโดดพิกัดเป้าหมายต้องอยู่ห่างจากน้ำเมือกที่กำลังเคลื่อนที่สองสแควร์สและสี่เหลี่ยมจัตุรัสที่พิกัดเป้าหมายต้องเป็นพื้นที่ว่าง เมื่อทำการอัดน้ำเมือกใหม่จะถูกสร้างขึ้นที่พิกัดเป้าหมายและน้ำเมือกเก่าจะถูกลบออก หลังจากสร้างเมือกใหม่แล้วศัตรูทั้งหมดจะผอมลงใน 8 สี่เหลี่ยมรอบ ๆ เมือกใหม่นี้จะถูกแปลงเป็นเครื่องเล่นที่เคลื่อนไหว
ตัวอย่างเช่นกับบอร์ดในรูปที่ 1 หากผู้เล่น 1 ถูกส่งออก
0 1 2 3
ผลลัพธ์จะเป็นบอร์ดในรูปที่ 21. 2. 11..2 1...2 1...2 1...1 ....2 ...11 ...22 ...11
ผสาน
ในการผสานพิกัดเป้าหมายต้องอยู่ห่างจากเลนเมือกเพียงหนึ่งตารางเท่านั้นและสี่เหลี่ยมที่พิกัดเป้าหมายจะต้องเป็นเมือกของผู้เล่นคนเดียวกัน เมื่อรวมน้ำเมือกเก่าจะถูกลบ จากนั้นพื้นที่ว่างทั้งหมดใน 8 สี่เหลี่ยมรอบ ๆ เมือกเป้าหมายจะถูกแปลงเป็นผู้เล่นที่ย้าย (ไม่รวมถึงเมือกเก่าที่ถูกย้าย)
ตัวอย่างเช่นกับบอร์ดในรูปที่ 1 หากผู้เล่น 1 ถูกส่งออก
0 1 1 2
ผลลัพธ์จะเป็นบอร์ดในรูปที่ 21. 2. 11..2 1.112 1.1.2 11112 ....2 .1112 ..222 ..222
คุณสามารถผ่านได้โดยเพียงแค่แสดงพิกัดที่ไม่ถูกต้อง (เช่น0 0 0 0
)
กฎและข้อ จำกัด
กฎเพิ่มเติมคือ:
- คุณสามารถอ่านและเขียนไฟล์ภายในโฟลเดอร์ของคุณเพื่อเก็บข้อมูล (การส่งจะถูกเก็บไว้ใน
players/YourBotName/yourBotName.language
) แต่คุณไม่สามารถแก้ไขหรือเข้าถึงสิ่งอื่นใดนอกเหนือ ห้ามใช้อินเทอร์เน็ต - การส่งของคุณอาจไม่ได้รับรหัสเฉพาะเพื่อช่วยหรือทำร้ายการส่งอื่น (คุณอาจมีการส่งหลายครั้ง แต่พวกเขาจะต้องไม่โต้ตอบกันโดยเฉพาะในทางใดทางหนึ่ง)
- ข้อมูลที่คุณส่งจะต้องไม่เกิน 0.1 วินาทีต่อเทิร์น หากการส่งของคุณใช้เวลา 0.105 วินาทีบางครั้งก็ไม่เป็นไร แต่อาจใช้เวลานานกว่าเวลาที่กำหนดนี้ไม่สม่ำเสมอ (ส่วนใหญ่เป็นการตรวจสอบสติเพื่อหลีกเลี่ยงการทดสอบใช้เวลานานเกินไป)
- การส่งของคุณต้องไม่ซ้ำกันอย่างแน่นอน (เช่นใช้ตรรกะเดียวกันแน่นอน) ของอีกแม้ว่ามันจะเป็นภาษาที่แตกต่างกัน
- การส่งของคุณจะต้องส่งอย่างจริงจัง สิ่งนี้เป็นไปตามความคิดเห็น แต่หากการส่งของคุณไม่ชัดเจนที่จะพยายามแก้ปัญหา (เช่นถ้าคุณผ่านทุกเทิร์น) จะถูกตัดสิทธิ์
หากการส่งของคุณละเมิดกฎใด ๆ เหล่านี้หรือไม่ปฏิบัติตามข้อกำหนดจะถูกตัดสิทธิ์ลบออกจาก playerlist.txt
และเกมจะเริ่มต้นใหม่ตั้งแต่ต้น หากการส่งของคุณถูกตัดสิทธิ์ฉันจะแสดงความคิดเห็นในโพสต์ของคุณเพื่ออธิบายว่าทำไม มิฉะนั้นการส่งของคุณจะถูกเพิ่มลงในกระดานผู้นำ (หากคุณไม่เห็นการส่งของคุณบนกระดานผู้นำไม่มีความคิดเห็นที่อธิบายในโพสต์ของคุณและโพสต์การส่งก่อนเวลา "ปรับปรุงล่าสุด" ด้านล่างโปรดบอกฉัน! ฉันอาจมองข้ามไปโดยไม่ตั้งใจ)
ในรายการของคุณโปรดรวม:
- ชื่อ.
- คำสั่งเปลือกเพื่อเรียกใช้โปรแกรมของคุณ (เช่น
java MyBot.java
,ruby MyBot.rb
,python3 MyBot.py
ฯลฯ )- โปรดทราบว่าอินพุต (เครื่องเล่นและแผนที่ของคุณ) จะถูกผนวกเข้ากับสิ่งนี้เป็นอาร์กิวเมนต์บรรทัดคำสั่ง
- โปรแกรมจะได้รับการทดสอบบน Ubuntu 14.04 ดังนั้นตรวจสอบให้แน่ใจว่าโค้ดของคุณสามารถทำงานได้อย่างอิสระ
- หมายเลขเวอร์ชันหากรหัสของคุณทำงานแตกต่างกันไปตามเวอร์ชันภาษาที่แตกต่างกัน
- รหัสบอทของคุณ
- คำแนะนำเกี่ยวกับวิธีการรวบรวมรหัสหากจำเป็น
รหัส / การทดสอบคอนโทรลเลอร์บอทตัวอย่าง
รหัสควบคุมจะถูกเขียนใน C ++ และสามารถพบได้บน Github คำแนะนำเพิ่มเติมเกี่ยวกับวิธีเรียกใช้และทดสอบรหัสของคุณมีอยู่ที่นั่น
simplebot.rb
บอทแบบง่าย ๆ ที่แพร่กระจายหรือกระโดดเมือกแบบสุ่มไปยังตำแหน่งสุ่มทุกเทิร์นก็โพสต์บน Githubเช่นกัน
เกณฑ์การให้คะแนนและลีดเดอร์บอร์ด
เมื่อเติมสี่เหลี่ยมทั้งหมดบนกระดานเกมจะสิ้นสุดและคำนวณคะแนน คะแนนสุดท้ายของผู้เล่นคือจำนวนของช่องสี่เหลี่ยมที่มีน้ำเมือกในตอนท้ายของเกม หาก 2,000 รอบผ่านไป (500 สำหรับผู้เล่นแต่ละคน) และเกมยังไม่จบเกมจะสิ้นสุดอยู่แล้วและคะแนนจะถูกรายงานราวกับว่าเกมได้สิ้นสุดลงแล้ว
ในตอนท้ายของทัวร์นาเมนต์คะแนนจากเกมทั้งหมดจะเฉลี่ยเพื่อคำนวณคะแนนสุดท้ายของผู้เล่นแต่ละคนซึ่งจะถูกโพสต์บนกระดานผู้นำ ไม่มีกำหนดส่ง ฉันจะอัปเดตกระดานผู้นำเป็นระยะเมื่อมีการส่งใหม่ ๆ
ต้องส่ง 4 รายการจนกว่าจะมีกระดานผู้นำจริงปรากฏขึ้น
+--------------------------+-----------+--------------------+
| Name | Avg Score | Last Updated (UTC) |
+--------------------------+-----------+--------------------+
| GreedySlime | 47.000 | Jul 22 10:27 PM |
| Jumper | 12.000 | Jul 22 10:27 PM |
| ShallowBlue | 5.000 | Jul 22 10:27 PM |
| Lichen | 0.000 | Jul 22 10:27 PM |
+--------------------------+-----------+--------------------+
อัปเดตครั้งล่าสุด: 22 กรกฎาคมเวลา 22:27 น. (UTC)