From 0d4af7c73cc68b79567547806599cd8e505e948b Mon Sep 17 00:00:00 2001
From: tnbeats <tnbeatsprod@gmail.com>
Date: Sat, 14 Oct 2023 00:39:14 +0200
Subject: [PATCH] 22211572

---
 4_9_Exercises/Question 5.py | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)
 create mode 100644 4_9_Exercises/Question 5.py

diff --git a/4_9_Exercises/Question 5.py b/4_9_Exercises/Question 5.py
new file mode 100644
index 0000000..20deecc
--- /dev/null
+++ b/4_9_Exercises/Question 5.py	
@@ -0,0 +1,35 @@
+import random
+
+
+def is_valid(board, row, col):
+    for i in range(8):
+        if board[i][col] or board[row][i]:
+            return False
+        if (row + i < 8 and col + i < 8 and board[row + i][col + i]) or \
+            (row - i >= 0 and col - i >= 0 and board[row - i][col - i]) or \
+                (row + i < 8 and col - i >= 0 and board[row + i][col - i]) or \
+                (row - i >= 0 and col + i < 8 and board[row - i][col + i]):
+            return False
+    return True
+
+
+def solutions_generator(board, row):
+    if row == 8:
+        yield [row.copy() for row in board]
+        return
+    for col in range(8):
+        if is_valid(board, row, col):
+            board[row][col] = 1
+            yield from solutions_generator(board, row + 1)
+            board[row][col] = 0
+
+
+def solve():
+    board = [[0] * 8 for _ in range(8)]
+    yield from solutions_generator(board, 0)
+
+
+for solution in solve():
+    for row in solution:
+        print(row)
+    print("--------")
-- 
GitLab