นี่คือบอร์ด endgame ของ Settlers of Catan:
พื้นหลัง:
ถนน (ชิ้นส่วนแท่งยาว) และการตั้งถิ่นฐาน (และเมือง) ถูกสร้างขึ้นโดยกระท่อมเล็ก ๆ เราเข้ารหัสการจัดวางชิ้นส่วนเหล่านี้โดยใช้รูปแบบต่อไปนี้: จากด้านบนเรามีจุดยอดและแนวนอนแนวนอนที่สามารถวางถนนได้ จากนั้นเรามีคอลัมน์ของถนนเท่านั้นและอื่น ๆ การใช้ R สำหรับสีแดง, O สำหรับออเรนจ์และ B สำหรับ Blue และ _ เพื่ออะไรเลยบอร์ดภาพจะถูกเข้ารหัสเป็น:
________RR_R_
__R_
__RR_R_RRR_____R_
B___R
_B_________B__OO_OOR_
B__B_R
BB_BBB_____B____RR_R_
OBB_O
OO__BB_BB__OOO_OO
O_O_
_O_OOO_O_____
บอร์ดแบบนี้จะเป็นสตริงอินพุตของคุณ ตัวอักษรใด ๆ[A-Z]
อาจบ่งบอกถึงสีของผู้เล่น แต่จะมีได้ไม่เกินสี่สี มิฉะนั้นบอร์ดรับประกันว่าจะถูกต้องตามกฎของ Settlers ซึ่งหมายถึง:
- แต่ละสีจะมีเครือข่ายถนนที่ต่อเนื่องกันไม่เกินสองเครือข่ายซึ่งอาจหรือไม่อาจแยกออกจากการตั้งถิ่นฐาน / เมืองของผู้เล่นคนอื่น (อาคารจุดสุดยอด) ดูการตั้งถิ่นฐานสีส้มแยกถนนสีแดงทางด้านขวาของภาพตัวอย่าง
- เครือข่ายถนนแต่ละสายรับประกันว่าจะมีการชำระอย่างน้อยหนึ่งครั้ง
- การตั้งถิ่นฐานและเมืองทั้งหมดจะรับประกันว่าอย่างน้อยสองขอบจากการตั้งถิ่นฐาน / เมืองอื่นที่ใกล้ที่สุด
- ผู้เล่นหนึ่งคนสามารถมี 15 ถนนบนกระดานเกมเท่านั้น
- สำหรับผู้ที่ชื่นชอบคาตา: ไม่มีความแตกต่างระหว่างการตั้งถิ่นฐานและเมืองเพื่อวัตถุประสงค์ของปัญหานี้ดังนั้นฉันจึงไม่แยกความแตกต่างในสตริงอินพุต
ทั้งหมดนี้ใช้สำหรับข้อมูลจำเพาะของสตริง "อินพุต"
ถนนที่ยาวที่สุด:
ใน Settlers ผู้เล่นจะได้รับชัยชนะสองคะแนนจากการมี "ถนนที่ยาวที่สุด" นี้ถูกกำหนดให้เป็น: ที่ยาวที่สุดที่ต่อเนื่องกันเส้นทางเดียว (วัดถนน) จากจุดเริ่มต้นถึงจุดสิ้นสุดที่ไม่ทำลายโดยนิคมฝ่ายตรงข้ามหรือเมือง รอบไม่เป็นไรตราบใดที่คุณสามารถติดตามเส้นทางจากจุดเริ่มต้นหนึ่งไปยังจุดสิ้นสุดเฉพาะ ดังนั้นการวนซ้ำของถนน 6 เส้นและการแยกออกจากถนนเส้นหนึ่งคือความยาว 7 แต่อีกเส้นทางหนึ่งที่แยกออกจากวงถนนทั้งสองด้าน 6 เส้นจะยังคงมีค่าเท่ากับ 7
ในแผนที่ตัวอย่างถนนสีแดงทางด้านขวามีค่าเพียง 4 เพราะเขาถูกตัดขาดโดยการตั้งถิ่นฐานของส้มที่ด้านขวาของกระดาน (นั่นเป็นเหตุผลที่รวมการตั้งถิ่นฐานทั้งหมด) บลูมีถนนที่มีความยาว 13 และออเรนมีถนนที่มีความยาว 12 ถนนบนสุดของสีแดงมีค่าเพียง 7 เพราะมันไม่ได้เชื่อมต่อกับถนนสองสายที่อยู่ติดกัน
เอาท์พุท:
ผู้เล่นทุกคนที่มีถนนที่ยาวที่สุด (อาจมีมากกว่าหนึ่งถ้ามีความสัมพันธ์) ตามด้วยช่องว่างและ / หรือขีดเส้นใต้ขีดเส้นใต้ในฐาน 10 ของถนนที่มีความยาว
ดังนั้นเอาต์พุตสำหรับบอร์ดตัวอย่างจะเป็น:
B 13
คำแถลงปัญหา:
คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่นรับบอร์ดอินพุตผ่าน STDIN หรือเป็นอากิวเมนต์ของสตริงซึ่งส่งคืนเอาต์พุตที่อธิบายไว้ข้างต้นว่าเป็นสตริงหรือพิมพ์ลงใน STDOUT (หรือทางเลือกที่ใกล้เคียงที่สุด) คุณอาจเลือกที่จะรวมบรรทัดใหม่ขึ้นบรรทัดเดียวในเอาต์พุต
นี่คือรหัสกอล์ฟโปรแกรมที่สั้นที่สุดชนะ ช่องโหว่มาตรฐานเป็นสิ่งต้องห้ามของหลักสูตร
From the top, we have a row horizontal vertices and edges where a road can be placed. Then we have a column of only roads, and so forth.
ฉันใช้เวลาหลายนาทีกว่าจะเข้าใจว่ามันหมายถึงอะไร คุณควรอธิบายให้ชัดเจนยิ่งขึ้นว่าแถวแนวนอนนั้นรวมถึงการชำระบัญชีและสถานที่ตั้งถิ่นฐาน