ให้กระดานหมากรุกขนาด 8x8 มีค่าที่ต่างกันสองค่าโดยมีค่าหนึ่งเป็นสี่เหลี่ยมจัตุรัสที่ว่างเปล่าและอีกค่าหนึ่งเป็นราชินี ในตัวอย่างต่อไปนี้ฉันใช้ 0s เป็นสี่เหลี่ยมจัตุรัสที่ว่างเปล่าและ 1s เป็นควีน ตัวอย่างเช่น:
ได้รับจาก
1 0 1 1 1 0 0 0
1 0 1 0 1 0 1 1
1 0 1 0 1 1 0 1
0 1 0 1 0 1 0 0
0 1 1 0 0 1 0 1
1 0 0 0 1 0 0 0
0 1 0 0 0 1 1 1
0 1 1 1 0 1 0 1
พิจารณาจำนวนของควีนส์ที่โจมตีแต่ละอันที่อยู่ห่างออกไปอย่างน้อยหนึ่งตาราง (เพื่อเป็นการเตือนให้รู้ว่าควีนส์จะโจมตีแบบ orthogonally และแนวทแยงมุม) ในตัวอย่างข้างต้นแผนภาพน่าเกลียดต่อไปนี้แสดงคู่เหล่านี้ทั้งหมดเป็นลูกศร
พบว่ามี 43 คู่ข้างต้นให้กรณีทดสอบต่อไปนี้:
Input:
1 0 1 1 1 0 0 0
1 0 1 0 1 0 1 1
1 0 1 0 1 1 0 1
0 1 0 1 0 1 0 0
0 1 1 0 0 1 0 1
1 0 0 0 1 0 0 0
0 1 0 0 0 1 1 1
0 1 1 1 0 1 0 1
Output: 43
ท้าทาย
เขียนโปรแกรมที่ให้สถานะกระดานแทนค่าที่แตกต่างกันสองค่าส่งออกจำนวนคู่ของควีนส์ที่โจมตีซึ่งกันและกันอย่างน้อยหนึ่งสแควร์ในระหว่างนั้น
- คุณสามารถป้อนข้อมูลในรูปแบบใดก็ได้ที่สะดวกที่สุดที่ใช้ค่าสองค่าเพื่อแทนสี่เหลี่ยมและควีนที่ว่างเปล่าเช่นสตริง 64 "" s สำหรับสี่เหลี่ยมที่ว่างเปล่าและ "Q" s สำหรับควีนโดยแถวจากล่างขึ้นบนเป็น 8x8 เมทริกซ์ของ booleans รายการของจำนวนเต็ม 0 และ 1 ฯลฯ ตราบใดที่อธิบายไว้ในวิธีแก้ปัญหาของคุณ
- เอาท์พุทเป็นจำนวนเต็ม
- ใช้วิธีการ I / O มาตรฐานและช่องโหว่มาตรฐานที่ต้องห้าม
- นี่คือรหัสกอล์ฟเพื่อให้ได้คำตอบที่สั้นที่สุดในจำนวนไบต์ที่ชนะ
กรณีทดสอบ:
ใช้รูปแบบ 0 และ 1 โดยที่ 0 เป็นสี่เหลี่ยมว่างเปล่าและ 1 เป็นราชินี:
Input:
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
Output: 0
Input:
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
Output: 0
Input:
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 1 0 0 0 0 1 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
Output: 1
Input:
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0
0 1 0 0 0 0 1 0
0 0 0 0 1 0 1 0
0 0 0 0 0 0 0 0
0 0 0 1 0 0 1 0
0 0 0 0 0 0 0 0
Output: 10
Input:
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 0 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
Output: 4
Input:
1 1 0 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 0 1 1 1
1 1 1 1 0 1 1 1
1 1 1 1 0 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
Output: 11