บทนำ
มีหมู่บ้านเล็ก ๆ ที่ไม่มีอะไรนอกจากบ้านสองสามหลังและทุ่งโล่ง ๆ ข้าราชการในท้องถิ่นต้องการแบ่งหมู่บ้านออกเป็นล็อตเพื่อให้แต่ละล็อตมีบ้านหนึ่งหลังแน่นอนและเส้นขอบของล็อตนั้นเป็นตารางเส้นตรงที่สวยงาม งานของคุณคือการตรวจสอบว่าเป็นไปได้
งาน
การป้อนข้อมูลของคุณคืออาร์เรย์ 2D บิตของบิต 1 หมายถึงบ้านและ 0 ช่องว่าง ขนาดจะมีอย่างน้อย1 × 1และจะมีอย่างน้อยหนึ่ง 1 คุณสามารถใช้อินพุตในรูปแบบที่เหมาะสม (รายการซ้อนจำนวนเต็มรายการของสตริงสตริงหลายบรรทัด ฯลฯ )
โปรแกรมของคุณจะต้องพิจารณาว่าอาเรย์สามารถแบ่งออกเป็นเซลล์กริดโดยใช้เส้นตรงแนวนอนและแนวดิ่งเพื่อให้แต่ละเซลล์กริดมีหนึ่งเดียว 1 เซลล์กริดอาจมีขนาดและรูปร่างที่แตกต่างกันแม้ว่าพวกเขาจะเป็นรูปสี่เหลี่ยมเสมอ เส้นต้องวิ่งจากขอบหนึ่งของอาร์เรย์ไปยังขอบตรงข้าม
ตัวอย่างเช่นต่อไปนี้เป็นส่วนที่ถูกต้องของอาร์เรย์:
00|0010|01|1
01|0000|00|0
--+----+--+-
00|0000|00|1
01|0010|01|0
--+----+--+-
01|1000|10|1
ในขณะที่การแบ่งต่อไปนี้ไม่ถูกต้องเนื่องจากมีกริดเซลล์ที่ไม่มี 1s หรือมากกว่าหนึ่ง 1:
00|0010|01|1
--+----+--+-
01|0000|00|0
00|0000|00|1
01|0010|01|0
--+----+--+-
00|1000|10|1
หากมีการแบ่งที่ถูกต้องคุณจะต้องส่งออกค่าความจริงและมิฉะนั้นเป็นค่าเท็จ
กฎและการให้คะแนน
คุณสามารถเขียนโปรแกรมเต็มรูปแบบหรือฟังก์ชั่น จำนวนไบต์ต่ำสุดชนะ
กรณีทดสอบ
[[1]] -> True
[[0,1],[1,0]] -> True
[[1,1],[1,0]] -> False
[[1,0,1],[0,1,0]] -> True
[[1,0],[0,1],[0,1]] -> True
[[1,0,0],[0,0,1],[0,1,1]] -> True
[[1,1,1],[1,1,1],[1,1,1]] -> True
[[1,0,1],[0,1,0],[1,0,0]] -> True
[[1,0,0],[1,0,0],[0,1,1]] -> False
[[0,0,0,0,1],[1,0,0,1,0],[0,0,0,1,0]] -> False
[[0,0,1,0,1],[0,0,0,1,0],[0,0,0,0,0]] -> True
[[1,1,0,0,0],[0,0,0,0,0],[1,0,1,0,0]] -> True
[[1,1,0,1,1],[0,1,0,1,1],[1,0,0,0,0]] -> True
[[0,0,0,0,0,0,0],[0,1,1,1,0,1,0],[0,1,0,0,1,0,0],[0,0,0,0,0,0,1],[0,0,1,0,0,0,1],[1,1,0,1,1,0,0]] -> False
[[1,1,0,0,0,0,0],[1,0,1,1,0,1,0],[0,0,0,0,1,0,0],[0,1,0,1,1,0,0],[1,0,0,0,1,1,0],[0,0,0,0,0,1,0]] -> False
[[0,1,0,1,1,1,0],[0,0,0,0,1,0,0],[0,0,0,0,0,0,0],[1,0,0,1,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,1]] -> True
[[0,1,0,0,1,0,1],[1,0,0,0,1,0,1],[0,0,1,0,1,0,1],[1,0,0,0,1,1,0],[0,0,0,1,1,1,0],[0,1,0,0,1,0,1]] -> True
[[0,1,0,0,1,0,0,1,0],[0,0,0,0,1,1,0,1,0],[1,1,0,0,1,0,0,0,0],[0,0,1,0,1,0,1,0,0],[0,0,1,0,1,0,1,0,0],[0,1,0,0,0,1,0,0,1],[0,1,0,0,0,0,1,0,0]] -> False
[[1,0,1,0,0,1,1,0,1],[0,1,1,0,0,1,1,0,1],[1,0,0,0,0,1,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,1,0,0,0,0,1,1],[0,1,1,0,1,0,1,0,1],[1,0,1,0,0,1,1,0,1]] -> True
[[1, 0, 1], [0, 1, 0], [1, 0, 0]]
นั่นเป็นเมทริกซ์ 3x3 เดียวที่แนวทางใหม่ของฉันล้มเหลว