ลองนึกภาพนักวางเพลิงที่เดินไปรอบ ๆ เมืองและเลือกเหยื่อตามรูปแบบที่เฉพาะเจาะจง (หรือมิฉะนั้นให้ลองนึกภาพผึ้งที่บินไปรอบ ๆ สวนและเก็บดอกไม้เพื่อผสมเกสรตามรูปแบบที่เฉพาะเจาะจงมาก ) สมมติว่าเมืองเป็นN ร Nเมทริกซ์ที่Nเป็นจำนวนเต็มสูงกว่าหรือเท่ากับ2 นักวางเพลิงเริ่มต้นจากมุมบนซ้ายและกำหนดจุดMบ้านต่อหน้าพวกเขา (โดยที่Mคือจำนวนบ้านที่พวกเขากำลังอยู่ในขณะนี้) ในขณะที่เปลี่ยนทิศทางที่มันเคลื่อนเข้าหลังไฟแต่ละครั้งตามลำดับ ตะวันออก⟶ใต้⟶ตะวันตก⟶เหนือ⟶ตะวันออก⟶ใต้ ... และอื่น ๆ เพลงกล่อมเด็กของผู้วางเพลิงคือมูลค่าของMที่ทำให้พวกเขาออกจากเมือง (เช่นบ้านหลังสุดท้ายที่พวกเขาไปเยี่ยมก่อนหยุดสิ่งที่น่ารังเกียจ) นี่เป็นวิธีที่ง่ายต่อการเข้าใจด้วยตัวอย่าง ใช้เมทริกซ์ต่อไปนี้เป็นตัวอย่าง:
3 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1 1
- เราเริ่มต้นที่มุมบนซ้ายดังนั้นM = 3 (
X
ทำเครื่องหมายตำแหน่งปัจจุบันและก่อนหน้าของผู้วางเพลิง):X 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1 1
- ตามคำสั่งที่รู้จักกันมันไปทางทิศตะวันออกM (3)จุดและที่ดินบน2ดังนั้นMเปลี่ยนแปลงตาม:
X 2 3 X 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1 1
- จากนั้นมันจะไปทางใต้2จุดและMตอนนี้เป็น1 :
X 2 3 X 7 3 1 4 1 6 2 5 3 X 1 4 4 3 2 4 1 1 1 1 1 1
- ตอนนี้มันเคลื่อนที่1จุดไปยังทิศตะวันตกและMกลายเป็น3 :
X 2 3 X 7 3 1 4 1 6 2 5 XX 1 4 4 3 2 4 1 1 1 1 1 1
- หลังจากที่มันเคลื่อนไปทางเหนือ3จุดมันจะออกจากเมือง! ดังนั้น3คือเพลงกล่อมเด็กของนักวางเพลิง:
X X 2 3 X 7 3 1 4 1 6 2 5 XX 1 4 4 3 2 4 1 1 1 1 1 1
รับเมทริกซ์N × N (คุณสามารถเลือกใช้Nเป็นอินพุตได้เช่นกัน) ค้นหาเพลงกล่อมเด็กของนักวางเพลิง ฉันได้เขียนโปรแกรมที่คุณสามารถสร้างกรณีทดสอบมากขึ้นและเห็นภาพเส้นทางของการวางเพลิง: ลองออนไลน์!
- คุณอาจจะคิดว่าวางเพลิงไม่ได้กล่อม (นั่นคือมันเป็นจริงจะได้รับจากเมทริกซ์)
- เมทริกซ์จะมีจำนวนเต็มบวกน้อยกว่าหรือเท่ากับ9 (หลัก) เพื่อความเรียบง่าย โซลูชั่นที่จัดการกับจำนวนเต็มบวกใด ๆ ยินดีต้อนรับอย่างสมบูรณ์
- โปรดทราบว่านักวางเพลิงสามารถลงจอดในจุดที่พวกเขาเผาไปแล้วในกรณีที่ความรู้สึกที่พวกเขาเคลื่อนไหวแตกต่างจากครั้งแรก ในสถานการณ์ดังกล่าวเพียงแค่รับค่าขององค์ประกอบนั้นและย้ายอีกครั้งตามปกติ
- คุณสามารถแข่งขันในภาษาการเขียนโปรแกรมใด ๆและสามารถรับอินพุตและให้เอาต์พุตผ่านวิธีการมาตรฐานใด ๆในขณะที่รับทราบว่าช่องโหว่เหล่านี้ถูกห้ามโดยค่าเริ่มต้น นี่คือรหัสกอล์ฟดังนั้นการส่งสั้นที่สุด (เป็นไบต์) สำหรับทุกภาษาที่ชนะ
กรณีทดสอบ
------------- 9 2 3 1 7 2 8 7 6 เพลงกล่อมเด็ก: 9 ------------- 2 1 2 1 3 1 1 2 1 2 2 1 1 1 1 3 เพลงกล่อมเด็ก: 2 ------------- 3 2 3 2 7 3 1 4 1 6 2 5 3 1 1 4 4 3 2 4 1 1 1 1 1 1 เพลงกล่อมเด็ก: 3 ------------- 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 เพลงกล่อมเด็ก: 2 ------------- 3 2 1 2 1 1 1 2 3 2 3 2 1 1 2 1 1 1 3 3 1 2 3 1 1 1 1 1 1 1 4 5 2 3 1 1 1 1 2 1 2 1 2 2 1 2 2 3 2 1 2 เพลงกล่อมเด็ก: 3 -------------
เมทริกซ์ในรูปแบบอื่น:
[[9, 2, 3], [1, 7, 2], [8, 7, 6]] [[2, 1, 2, 1], [3, 1, 1, 2], [1, 2, 2, 1], [1, 1, 1, 1, 3]] [[3, 2, 3, 2, 7], [3, 1, 4, 1, 6], [2, 5, 3, 1, 1], [4, 4, 3, 2, 4], [ 1, 1, 1, 1, 1]] [[1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2, 1], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2], [1, 2, 1, 2, 1, 2,] [[3, 2, 1, 2, 1, 1, 1], [2, 3, 2, 3, 2, 1, 1], [2, 1, 1, 1, 1, 3, 1, 2], [ 3, 1, 1, 1, 1, 1, 1], [4, 5, 2, 3, 1, 1, 1], [1, 2, 1, 2, 1, 2, 2], [1, 2, 2, 3, 2, 1, 2]]