มีชุดรถไฟหลายประเภทตั้งแต่แทร็กไม้อย่าง Brio จนถึงการควบคุมแบบดิจิตอลอย่างสมบูรณ์แบบจำลองโลหะเล็ก ๆ ที่สมบูรณ์แบบของรถไฟจริง แต่พวกมันทั้งหมดต้องการแทร็กที่ออกแบบมาโดยใช้ชิ้นส่วนของคุณให้ได้มากที่สุด
ดังนั้นงานของคุณคือการพิจารณาว่าได้รับอินพุตของชิ้นส่วนที่มีอยู่หรือไม่สามารถสร้างวงจรปิดที่สมบูรณ์ได้โดยใช้องค์ประกอบทั้งหมดและหากไม่ทำเช่นนั้นจะมีจำนวนชิ้นส่วนที่เหลือจากวงจรที่เป็นไปได้สูงสุด
เนื่องจากชุดนี้เป็นชุดรถไฟที่เรียบง่ายจึงมีองค์ประกอบ 3 อย่างเท่านั้น: โค้งใหญ่, โค้งเล็ก ๆ และตรง สิ่งเหล่านี้ล้วนมีพื้นฐานมาจากตารางสี่เหลี่ยม:
- "Big Curve" เป็นมุม 90 องศาครอบคลุม 2 ยูนิตในแต่ละมิติ
- "Little Curve" เป็นมุม 90 องศาครอบคลุมหนึ่งยูนิตในแต่ละทิศทาง
- "เส้นตรง" เป็นองค์ประกอบเส้นตรงยาว 1 หน่วย
ซึ่งหมายความว่าวงจรต่ำสุดที่เป็นไปได้จะเกิดขึ้นจาก 4 เส้นโค้งเล็ก ๆ - มันเป็นวงกลมรัศมี 1 หน่วย สิ่งนี้สามารถขยายได้โดยการเพิ่มคู่ขององค์ประกอบตรงในรูปแบบวงรีต่างๆ มีวงจรอื่น ๆ ที่เป็นไปได้โดยการเพิ่มเส้นโค้งมากขึ้นหรือโดยการผสมประเภทของเส้นโค้ง
ชุดขบวนรถไฟนี้ไม่มีทางแยกหรือวิธีการข้ามแทร็กดังนั้นจึงไม่ถูกต้องสำหรับองค์ประกอบสองอย่างที่จะเชื่อมต่อกับส่วนอื่น ๆ ขององค์ประกอบอื่น ๆ (ไม่มีการก่อตัว Y) หรือข้ามแบบอื่น (ไม่มีการก่อตัว X) . นอกจากนี้มันเป็นชุดรถไฟดังนั้นการก่อตัวใด ๆ ที่ไม่อนุญาตให้รถไฟผ่านไม่ถูกต้อง: ตัวอย่างรวมถึงการประชุม straights ที่มุม 90 องศา (จะต้องมีเส้นโค้งระหว่าง straights ตั้งฉาก) และการประชุมโค้งที่มุม 90 องศา (เส้นโค้งต้องไหล)
คุณต้องการใช้ชิ้นส่วนให้มากที่สุดเท่าที่จะเป็นไปได้โดยไม่สนใจว่าเป็นแบบไหนดังนั้นคุณจะเลือกใช้วงจรที่มีบิตมากกว่านี้ในที่สุดคุณมีรถไฟเพียงขบวนเดียวดังนั้นวิธีการแก้ปัญหาใด ๆ .
อินพุต
อาเรย์ของทั้งสามจำนวนเต็มทั้งหมดมากกว่าหรือเท่ากับ 0 สอดคล้องกับจำนวนของเส้นโค้งขนาดใหญ่เส้นโค้งเล็ก ๆ น้อย ๆ และเส้นตรงที่มีอยู่หรือพารามิเตอร์ที่ส่งผ่านไปยังโปรแกรมของคุณในลำดับเดียวกัน
เอาท์พุต
ตัวเลขที่สอดคล้องกับจำนวนชิ้นส่วนที่เหลือเมื่อสร้างวงจรที่เป็นไปได้สูงสุดสำหรับองค์ประกอบที่มีให้
ทดสอบข้อมูล
Minimal circuit using big curves
Input: [4,0,0]
Output: 0
Slightly more complicated circuit
Input: [3,1,2]
Output: 0
Incomplete circuit - can't join
Input: [3,0,0]
Output: 3
Incomplete circuit - can't join
Input: [3,1,1]
Output: 5
Circuit where big curves share a centre
Input: [2,2,0]
Output: 0
Bigger circuit
Input: [2,6,4]
Output: 0
Circuit where both concave and convex curves required
Input: [8,0,0] or [0,8,0]
Output: 0
Circuit with left over bit
Input: [5,0,0] or [0,5,0]
Output: 1
หมายเหตุ
- 2 straights และเส้นโค้งเล็ก ๆ น้อย ๆ จะเทียบเท่ากับเส้นโค้งขนาดใหญ่ แต่ควรใช้ชิ้นส่วนมากขึ้นดังนั้นจึงเป็นที่ต้องการ - ไม่ควรเป็นสถานการณ์ที่ชุดค่าผสมนี้เหลืออยู่หากมีเส้นโค้งขนาดใหญ่ในวงจร
- 4 เส้นโค้งเล็ก ๆ น้อย ๆ สามารถสลับเป็น 4 straights ได้ แต่ถ้าไม่ใช่จะทำให้วงจรตัดกัน
- ชุดรถไฟยังได้รับการออกแบบให้เหมาะสม - องค์ประกอบของแทร็กใช้ความกว้างที่แสดงดังนั้นจึงมีความถูกต้องสำหรับการโค้งผ่านสี่เหลี่ยมกริดเดี่ยวโดยไม่ต้องตัดกันในบางกรณี กริดเพียงกำหนดขนาดองค์ประกอบ โดยเฉพาะอย่างยิ่งสามารถวางเส้นโค้งขนาดใหญ่สองเส้นเพื่อให้ตารางกริดที่มุมบนซ้ายของไดอะแกรมตัวอย่างจะเป็นสี่เหลี่ยมจัตุรัสล่างขวาของเส้นโค้งใหญ่อีกเส้นที่วิ่งจากซ้ายไปด้านบน (ด้วยแผนภาพแสดงการวิ่งจากขวาไปล่าง)
- เส้นโค้งขนาดเล็กสามารถพอดีกับพื้นที่ว่างใต้เส้นโค้งขนาดใหญ่ (ตารางกริดด้านล่างขวาด้านบน) เส้นโค้งขนาดใหญ่เส้นที่สองสามารถใช้พื้นที่นั้นได้โดยเลื่อนหนึ่งข้ามและอีกอันหนึ่งลดลงจากอันแรก
- เส้นโค้งขนาดเล็กไม่สามารถพอดีกับพื้นที่กริดเดียวกันกับด้านนอกของเส้นโค้งขนาดใหญ่ส่วนใหญ่เป็นเพราะไม่มีวิธีการเชื่อมต่อกับมันซึ่งไม่ได้ตัดกันอย่างผิดกฎหมาย
[5,0,0]
หรือจะเป็น[0,5,0]
1
ถูกต้องหรือไม่ คุณสามารถเพิ่มกรณีทดสอบได้ไหม?