รับรายการคะแนนค้นหาเส้นทางที่สั้นที่สุดที่เข้าชมทุกจุดและกลับไปที่จุดเริ่มต้น
เดินทางพนักงานขายปัญหาเป็นที่รู้จักกันในสาขาวิทยาศาสตร์คอมพิวเตอร์ในขณะที่มีหลายวิธีที่จะคำนวณ / ใกล้เคียงกับมัน มันได้รับการแก้ไขสำหรับกลุ่มคะแนนที่มีขนาดใหญ่มาก แต่ที่ใหญ่ที่สุดบางแห่งใช้เวลา CPU นานหลายปีจึงจะเสร็จ
อย่าถูกไฟไหม้โดยมันฝรั่ง
Hot Potatoเป็นเกมที่ผู้เล่น 2+ คนผ่าน "มันฝรั่ง" เป็นวงกลมขณะที่เล่นดนตรี เป้าหมายคือการส่งต่อไปยังผู้เล่นถัดไปอย่างรวดเร็ว หากคุณกำลังถือมันฝรั่งเมื่อเพลงหยุดลงแสดงว่าคุณไม่อยู่
เป้าหมายของพนักงานขายมันฝรั่งร้อนคือ:
ได้รับชุดของ100 จุดที่ไม่ซ้ำกันกลับจุดเหล่านั้นอยู่ในลำดับที่ดีกว่า ( รวมระยะทางสั้นลงตามที่กำหนดไว้ต่อไป ) นี่จะเป็นการ "ผ่าน" ปัญหาไปยังผู้เล่นคนถัดไป พวกเขาต้องปรับปรุงมันและส่งต่อไปยังหน้าถัดไปเป็นต้นหากผู้เล่นไม่สามารถปรับปรุงได้พวกเขาจะออกและเล่นต่อไปจนกว่าผู้เล่นคนหนึ่งจะออกไป
เพื่อป้องกันไม่ให้สิ่งนี้เป็นการแข่งขันที่ "กำลังดุร้ายกับฉัน - เส้นทาง" มีข้อกำหนดเหล่านี้:
คุณไม่สามารถใช้เวลามากกว่าหนึ่งนาทีในการส่งมันฝรั่ง หากคุณยังไม่พบและผ่านวิธีแก้ปัญหาที่สั้นกว่าภายในหนึ่งนาที
คุณไม่สามารถเปลี่ยนตำแหน่งได้มากกว่า25คะแนน เพื่อให้เป็นจริง
>= 75
คะแนนจะต้องอยู่ในตำแหน่งเดียวกับที่คุณได้รับ มันไม่สำคัญซึ่งคนที่คุณตัดสินใจที่จะเปลี่ยนแปลงเพียงจำนวนเงินที่คุณเปลี่ยนแปลง
เมื่อเหลือผู้เล่นเพียงคนเดียวเขาเป็นผู้ชนะของเกมนั้นและได้รับหนึ่งแต้ม Tourney ประกอบด้วย5*n
เกมที่n
มีจำนวนผู้เล่น แต่ละเกมที่ผู้เล่นเริ่มต้นจะได้รับการหมุนและการสั่งการของผู้เล่นที่เหลือจะถูกสับ ผู้เล่นที่มีคะแนนมากที่สุดในตอนท้ายคือผู้ชนะของทัวร์นาเมนต์ หากทัวร์นาเมนต์จบลงด้วยการเสมอกันอันดับแรกทัวร์นาเมนต์ใหม่จะเล่นกับผู้แข่งขันเท่านั้น สิ่งนี้จะดำเนินต่อไปจนกว่าจะไม่มีการผูก
ผู้เล่นเริ่มต้นของแต่ละเกมจะได้รับคะแนนสุ่มหลอกในลำดับที่ไม่เจาะจง
คะแนนถูกกำหนดให้เป็นx,y
พิกัดจำนวนเต็มคู่หนึ่งบนตารางคาร์ทีเซียน ระยะทางวัดโดยใช้ระยะทางแมนฮัตตัน , |x1-x2| + |y1-y2|
. พิกัดทั้งหมดจะอยู่ใน[0..199]
ช่วง
อินพุต
อินพุตถูกกำหนดด้วยอาร์กิวเมนต์สตริงเดี่ยว มันจะประกอบด้วยจำนวนเต็มที่คั่นด้วยจุลภาค 201 ตัวซึ่งเป็นตัวแทนของผู้เล่นปัจจุบัน ( m
) และ 100 คะแนน:
m,x0,y0,x1,y1,x2,y2,...,x99,y99
ลำดับของจุดเหล่านี้คือเส้นทางปัจจุบัน ระยะทางทั้งหมดได้มาจากการเพิ่มระยะทางจากแต่ละจุดไปยังจุดถัดไป ( dist(0,1) + dist(1,2) + ... + dist(99,0)
) อย่าลืมกลับไปเริ่มต้นเมื่อคำนวณระยะทางทั้งหมด!
ทราบว่าm
เป็นไม่ได้จำนวนของผู้เล่นที่เริ่มต้นเกมก็คือตัวเลขที่ยังคงอยู่ใน
เอาท์พุต
เอาต์พุตถูกกำหนดในลักษณะเดียวกับอินพุตลบm
; สตริงเดียวที่มีจำนวนเต็มคั่นด้วยเครื่องหมายจุลภาคแสดงถึงจุดในคำสั่งซื้อใหม่ของพวกเขา
x0,y0,x1,y1,x2,y2,...,x99,y99
โปรแกรมควบคุมจะรอเอาต์พุตเป็นเวลาหนึ่งนาทีเท่านั้น เมื่อได้รับเอาต์พุตมันจะตรวจสอบว่า:
- ผลลัพธ์จะดีขึ้น
- เอาต์พุตประกอบด้วยเฉพาะและ100 จุดทั้งหมดที่มีอยู่ในอินพุต
>=75
คะแนนอยู่ในตำแหน่งเดิม- ความยาวเส้นทางน้อยกว่าเส้นทางก่อนหน้า
หากการตรวจสอบใด ๆ เหล่านี้ล้มเหลว (หรือไม่มีการส่งออก) คุณจะออกและเกมจะดำเนินต่อไปยังผู้เล่นถัดไป
โปรแกรมควบคุม
คุณสามารถค้นหาโปรแกรมควบคุมได้ที่ลิงค์นี้ 1
โปรแกรมการควบคุมตัวเองเป็นที่กำหนดและมีการโพสต์ที่มีเมล็ดของหุ่น เมล็ดที่ใช้ในระหว่างการให้คะแนนจะแตกต่างกันดังนั้นอย่ากังวลกับการวิเคราะห์ลำดับการเลี้ยว / รายการที่มันพ่นออกมา
Tourney
ชั้นหลักคือ การทำเช่นนี้จะเป็นการแข่งขันแบบเต็มรูปแบบโดยผู้เข้าแข่งขันจะได้รับการโต้แย้ง มันคายออกผู้ชนะของแต่ละเกมและนับในตอนท้าย ตัวอย่าง tourney ที่มี SwapBots สองตัวจะมีลักษณะดังนี้:
Starting tournament with seed 1
(0) SwapBot wins a game! Current score: 1
(1) SwapBot wins a game! Current score: 1
(1) SwapBot wins a game! Current score: 2
(1) SwapBot wins a game! Current score: 3
(0) SwapBot wins a game! Current score: 2
(1) SwapBot wins a game! Current score: 4
(1) SwapBot wins a game! Current score: 5
(1) SwapBot wins a game! Current score: 6
(1) SwapBot wins a game! Current score: 7
(1) SwapBot wins a game! Current score: 8
Final Results:
Wins Contestant
2 (0) SwapBot
8 (1) SwapBot
หากคุณต้องการทดสอบเพียงหนึ่งเกมในแต่ละครั้งคุณสามารถเรียกใช้Game
คลาสได้ สิ่งนี้จะเรียกใช้หนึ่งเกมกับผู้เล่นตามลำดับที่ให้ไว้เป็นอาร์กิวเมนต์ โดยค่าเริ่มต้นมันจะพิมพ์การเล่นแบบเล่นต่อเนื่องโดยแสดงเครื่องเล่นปัจจุบันและความยาวเส้นทาง
รวมทั้งยังเป็นผู้เล่นไม่กี่ทดสอบ: SwapBot
, และBlockPermuter
TwoSwapBot
สองคนแรกจะไม่รวมอยู่ในการให้คะแนนดังนั้นอย่าลังเลที่จะใช้และใช้ในทางที่ผิดในระหว่างการทดสอบ TwoSwapBot
จะรวมอยู่ในการตัดสินและเขาก็ไม่ง่วงเลยดังนั้นให้นำเกม A ของคุณไปด้วย
เรื่องจิปาถะ
คุณไม่สามารถบันทึกข้อมูลสถานะได้และในแต่ละเทิร์นเป็นการเรียกใช้โปรแกรมของคุณแยกกัน ข้อมูลเดียวที่คุณจะได้รับในแต่ละเทิร์นคือชุดของคะแนน
คุณไม่สามารถใช้ทรัพยากรภายนอก ซึ่งรวมถึงการโทรผ่านเครือข่ายและการเข้าถึงไฟล์
คุณไม่สามารถใช้ฟังก์ชั่นห้องสมุดที่ออกแบบมาเพื่อแก้ไข / ช่วยเหลือเกี่ยวกับปัญหา TSP หรือตัวแปรต่างๆ
คุณไม่สามารถจัดการหรือแทรกแซงผู้เล่นคนอื่น ๆ ในทางใดทางหนึ่ง
คุณไม่สามารถจัดการหรือแทรกแซงโปรแกรมควบคุมหรือคลาสหรือไฟล์ใด ๆ ที่รวมอยู่ด้วยไม่ว่าในทางใด
อนุญาตให้ใช้มัลติเธรด
หนึ่งการส่งต่อผู้ใช้ หากคุณส่งมากกว่าหนึ่งรายการฉันจะป้อนเพียงรายการแรกที่ส่ง หากคุณต้องการเปลี่ยนการส่งของคุณแก้ไข / ลบต้นฉบับ
ทัวร์นาเมนต์จะทำงานบน Ubuntu 13.04 บนคอมพิวเตอร์ที่มีซีพียู i7-3770Kและ RAM ขนาด 16GB มันจะไม่ทำงานใน VM สิ่งใดก็ตามที่ฉันเห็นว่าเป็นอันตรายจะตัดสิทธิ์รายการปัจจุบันและในอนาคตที่คุณส่งทันที
รายการทั้งหมดจะต้องเรียกใช้จากบรรทัดคำสั่งด้วยซอฟต์แวร์ฟรี ( เช่นเดียวกับในเบียร์ ) หากฉันมีปัญหาในการรวบรวม / เรียกใช้รายการของคุณฉันจะขอความช่วยเหลือในความคิดเห็น หากคุณไม่ตอบสนองหรือฉันไม่สามารถทำงานได้ในที่สุดจะถูกตัดสิทธิ์
ผลลัพธ์ (22 พฤษภาคม 2014)
ผลลัพธ์ใหม่มาถึงแล้ว! UntangleBot เอาชนะการแข่งขันได้ค่อนข้างดี TwoSwapBot จัดการกับเจ็ดผู้ชนะและ SANNbot เป็นผู้ชนะด้วยเช่นกัน นี่คือกระดานคะแนนและลิงก์ไปยังผลลัพธ์ดิบ :
Wins Contestant
22 (2) ./UntangleBot
7 (0) TwoSwapBot
1 (5) SANNbot.R
0 (1) BozoBot
0 (3) Threader
0 (4) DivideAndConquer
ขณะที่มันยืนตอนนี้ , UntangleBotได้รับรางวัลเครื่องหมายถูก อย่าปล่อยให้สิ่งนี้กีดกันคุณไม่ให้เข้าร่วมเพราะฉันจะจัดการแข่งขันเนื่องจากมีผู้เข้าร่วมแข่งขันปรากฏขึ้นและเปลี่ยนคำตอบที่ยอมรับตามนั้น