From 5d796d50d731e8c3c6dcfc38082db43bcbcada04 Mon Sep 17 00:00:00 2001
From: tnbeats <tnbeatsprod@gmail.com>
Date: Sun, 19 Nov 2023 15:21:54 +0100
Subject: [PATCH] 22211572

---
 Search_Algorithms/Heuristics.py               |  39 +++
 .../__pycache__/Heuristics.cpython-311.pyc    | Bin 0 -> 3688 bytes
 .../Search_Algorithms.cpython-311.pyc         | Bin 1831 -> 2520 bytes
 .../__pycache__/Sucessors.cpython-311.pyc     | Bin 8246 -> 11320 bytes
 .../__pycache__/is_goal.cpython-311.pyc       | Bin 1248 -> 1248 bytes
 Search_Algorithms/solution testing.py         | 252 ++++++++++--------
 6 files changed, 179 insertions(+), 112 deletions(-)
 create mode 100644 Search_Algorithms/__pycache__/Heuristics.cpython-311.pyc

diff --git a/Search_Algorithms/Heuristics.py b/Search_Algorithms/Heuristics.py
index 1350d1e..ec2ebf6 100644
--- a/Search_Algorithms/Heuristics.py
+++ b/Search_Algorithms/Heuristics.py
@@ -2,6 +2,45 @@ import is_goal
 import Sucessors
 
 
+def queens_opt(path):
+    """
+    Heuristic for the N-Queens problem that calculates the minimum number of moves
+    required to move each queen to a position where it is not in conflict with any other queen.
+    
+    Args:
+    path (list): The path taken so far, where the last element is the current state of the N-Queens board.
+
+    Returns:
+    int: The heuristic value, which is the sum of the minimum moves for all queens.
+    """
+    state = path[-1]  # Extracting the current state from the path
+    n = len(state)  # Size of the board (N x N)
+    total_moves = 0
+
+    for y in range(n):
+        for x in range(n):
+            if state[y][x] == 1:  # If there's a queen at (y, x)
+                min_moves = n  # Max possible moves
+                # Check for a safe spot in each column
+                for col in range(n):
+                    if col != x:
+                        conflict = False
+                        # Check row and diagonals for conflict
+                        for k in range(n):
+                            if state[y][k] == 1 and k != x:
+                                conflict = True
+                                break
+                            if y + (col - x) < n and y + (col - x) >= 0 and state[y + (col - x)][col] == 1:
+                                conflict = True
+                                break
+                            if y - (col - x) < n and y - (col - x) >= 0 and state[y - (col - x)][col] == 1:
+                                conflict = True
+                                break
+                        if not conflict:
+                            min_moves = min(min_moves, abs(col - x))
+                total_moves += min_moves
+
+    return total_moves
 
 
 
diff --git a/Search_Algorithms/__pycache__/Heuristics.cpython-311.pyc b/Search_Algorithms/__pycache__/Heuristics.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..3e2187da28fe6988c4e889be760f43a6d10b9340
GIT binary patch
literal 3688
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

literal 0
HcmV?d00001

diff --git a/Search_Algorithms/__pycache__/Search_Algorithms.cpython-311.pyc b/Search_Algorithms/__pycache__/Search_Algorithms.cpython-311.pyc
index 324b9ebb3b744554f17659a85e3d7296e59c750e..7d99d25b16a36ce1e9bbd9ae1d0c2e57180074bb 100644
GIT binary patch
delta 669
zcmZ9K&ubG=5Xax_uk2=%O-!1)sc2&rYrsQ2C<-bnv3l^-97I7%OqQe=jm$=^_ATa+
zLo7lqdr<JwixyE(=^r5WE>sX)f(QSEg14NUNt;6*cpu)I?|0rlW_I0)vd(%k85b09
zkI#9(jaA2m6RXq5Y`rUP=`|>eqVZ+!6Tl!;l=CpyxTx3w6C2mnS!KqdGE5PCi%=K^
z=IPW=m%In<#_R(6?Xp+FY6B<3P5t|+10+^8!YFvJ()wEfAzle7>QIM3lcE8EE;Z~*
zZ7l>C%L}P~gm+~6Kx-#JkO-{asVRG<z>r2w<)`dK5L1LyWNfbs6={?ODe%8i61PtW
zrZlDg2yjN~YYKlR{0f<bG^AOFr*v;%g^r#FEBpr8XWHj(O{0eCXpmHdzIxYtf(q?1
z#xOan^)<hRZ9K%8VFM3xI*w^h>|<mIeQ02o4`YlRW1O*{;Sziv+Nk4&0`>eRRV6OX
zm)jNGZTL~L6xq8;=!iebOz&#%Y^M~ZbG^r%Yf;?U7IFPZWF}UuW$R_7XZ<kUpQgKI
zx=|{-vbenX8lEq`SPI{$C&M$wmHC{oQ^S(&agmtXvJWFqvuGgCzi(Gt&8AmvFSPFa
t$P>j0#w3HE@?H$>!{1|Ip1aqoJ#2axaGE3@sDC5;Wn2#9vAo8&{sUkYhz$S$

delta 179
zcmca1yqu43IWI340}$wLvrAphGLcV$QEj5S8Y^QkgC^_7i1mz&Rg*cGY#FOIyD@Py
zGD>U?Vs>Ma<N<0Z;sp}LoIpYW28zTdZ)6o?l%0Hn^{j^^P)3urh#g4X;!e)b$w^Hv
z$;{6yE@B3X6iI*xSs<~Jp$Me1NE}G~;;_lhPbtkwwJTBpav6cR*kf`fr_<z9oLnp*
FWdJ=4C1n5r

diff --git a/Search_Algorithms/__pycache__/Sucessors.cpython-311.pyc b/Search_Algorithms/__pycache__/Sucessors.cpython-311.pyc
index 65583285d0a03c9ebcb42aede0f6c20d30783620..0ea166c9a329969edcaded3aef280e16853e2255 100644
GIT binary patch
delta 3720
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

delta 1136
zcmZWn?MqWp7(eH}Y;L>GyJ>Dt@4U6Nt}lTi+M8{HFJHnig`$!WcM)SwJ-f@24Gjur
z^dUP!T0wp)gdl7XQ6HkOMIVGd$b}N>lV57}57c??^oDp~zdg_IInVt)=XcJVi?3te
z=cT1?#8%(CGrHkh^agSJ;*kzv5NWP;V}o-%!w5Y@^n)`<NBJfxj<0YCWw|VGh;&2^
z1-sGkA&U~SVw}r}*Ac182pLw41n4(aR`@K3Q4-&ajG?T<aDi5F#d*U+7x@tF5^8I?
zs$Cjo_|q&lN^JsVI65a(VJF>iRd9xnz7zsjrXR~rJP=FT*0}AzY!N@(Pj~=<f#x!W
z#CXau`H7J!)1@cV6FM0&bW<Ep#&!BzjF#e?Cca_faRM{ZvyNu>K^A}+sV%x9EBzkd
zt?v1*`RT86)pFg2tbUQz0^&u#1q(tB=UO&B(tVt3&$Vw>29|wK1CIi$zLn6E5F-aR
zC10+mAR@_MaG>%7^oL{Nm46t|MVJBsFmazIS`j(C%l(h`m+Z#fl0{gpcK@D|-B1+a
znMg13gFQu}jzt<KLHe`2-UAnqde2}U(Uywp{K<;Pywl{#<O~VZUy(}sClJA{v@+PH
zY_lhThBS@@*}o}{PNtKF<|J@qM4@BB1~tsWl#_vKtr!7Y2}oE_pI;B&!TE%9iQ|Zm
zy4;uLa#ma8NC|9dU_cFb2R=t%xaS<zz_rm9PZST*Y0vRf0U$t|K*{t@rDtao`qhy{
zVsb{0lMo{{X=fbR1=EmP0F{3CG~*g7OPyjTBVzgU(p!GmemlKGS_y$sNCki`Wb&!>
zgz245>v}S^N5~pMa}?ETph*F+)VvU>bX=|%yI6QBza)2IcL%Tl*XWk7As-Fh=CNiu
zY$_L`*0G|n1;p8P7F`A67=ZO*%U+SC;O>sOF{sA!Q{hkeXg@ne8RYPy3EV@`dpI(I
zQ7nBDqXUgfYY)pY`=#zODDW8L0_VVi0<ys`L25&oer{B88(nQwnpBMC0<xh*fpk9*
HiGBMY(<JN(

diff --git a/Search_Algorithms/__pycache__/is_goal.cpython-311.pyc b/Search_Algorithms/__pycache__/is_goal.cpython-311.pyc
index 75ad5ea3b3f97d945274f3e03bcf33ac0edb7069..212d690a6df9d909015a425c7ff6948e7d455c7d 100644
GIT binary patch
delta 347
zcmaFB`GAvqIWI340}!ZPbDzkqt{KIc!qmbL#gxJfB$-oKfFw%_E0APOVGCx^WY=VR
z2~z!%WpX2P*2D?Ttb#xu_hbpi{fr`$Z!pT6@&oy|7%OivR@`FDyv0~t%nB4x0D&R_
zkQ85LaeR7yVorQ<X-a-}X^}KgkbklcQyQbt<jG8J);vJICi5-k;?mq(%(;mLx0rKM
z^NRR@qQ#6r0^O9t($v(v;vxm0l*Hr^W*tVMiP5HtMPO4HZ*d2NMn(C!#=HAF`k<IG
znTJJRPY9^VPm`^P7f2T=fe4Uiz%BwCSfmW(u4E_zsVfqgoXMij&ce^s!2N-5@&p!L
O8Ae8h4-A+DSUCV;u1#+M

delta 290
zcmaFB`GAvqIWI340}$BnwVTMTuGzv6#hAhbB$-l}fh2PZOB72AE0D#S!WPV+$*#%t
z5~TVi%ftygSV0<DCi^n(XXKsC%OuapF<F;MN{SOGdW$c!I6gf;F(<ybG$lW~v`7Rf
z$T2yQDUFeP@(HFkM%Kyx%%VK(K+$4GAfZsiIk|vYgjEvA7M$G4ti#AXF*-}Jh!x1!
zWW2>45E>Qb;~MYo@90y6qKSt^UymE8$WN24hz&>=f!qYPtq5dRkrIed1`;b7ia_ds
e_GGfCPoB=AtIWdB)WH3LkC9Q~0|O=jRt*5%cR6eT

diff --git a/Search_Algorithms/solution testing.py b/Search_Algorithms/solution testing.py
index cb98f7f..60914e7 100644
--- a/Search_Algorithms/solution testing.py	
+++ b/Search_Algorithms/solution testing.py	
@@ -4,140 +4,168 @@ import is_goal
 import Heuristics
 import time
 
-# ===============================================================================================================
-# BREADTH FIRST SEARCH MAZE
-# ===============================================================================================================
-# Maze Problem, note, the maze is fixed in the allowed state.
-print(Search_Algorithms.BreadthFirstSearch((4, 0), Sucessors.maze_successor, is_goal.is_goal_maze))
-
-# Sudoku
-grid = ((5, 3, 0, 0, 7, 0, 0, 0, 0),
-        (6, 0, 0, 1, 9, 5, 0, 0, 0),
-        (0, 9, 8, 0, 0, 0, 0, 6, 0),
-        (8, 0, 0, 0, 6, 0, 0, 0, 3),
-        (4, 0, 0, 8, 0, 3, 0, 0, 1),
-        (7, 0, 0, 0, 2, 0, 0, 0, 6),
-        (0, 6, 0, 0, 0, 0, 2, 8, 0),
-        (0, 0, 0, 4, 1, 9, 0, 0, 5),
-        (0, 0, 0, 0, 8, 0, 0, 0, 0))
-
-# ===============================================================================================================
-# BREADTH FIRST SEARCH SUDOKU
-# ===============================================================================================================
-sln = (Search_Algorithms.BreadthFirstSearch(grid, Sucessors.sudoku_successor, is_goal.is_goal_sudoku)[-1])
-
-for rows in sln:
-    print(rows)
-
-# ===============================================================================================================
-# DEPTH FIRST SEARCH SUDOKU
-# ===============================================================================================================
-sln = (Search_Algorithms.DepthFirstSearch(
-     grid, Sucessors.sudoku_successor, is_goal.is_goal_sudoku)[-1])
-#
-for rows in sln:
-    print(rows)
-
+# # ===============================================================================================================
+# # BREADTH FIRST SEARCH MAZE
+# # ===============================================================================================================
+# # Maze Problem, note, the maze is fixed in the allowed state.
+# print(Search_Algorithms.BreadthFirstSearch(
+#     (4, 0), Sucessors.maze_successor, is_goal.is_goal_maze))
+
+# # Sudoku
+# grid = ((5, 3, 0, 0, 7, 0, 0, 0, 0),
+#         (6, 0, 0, 1, 9, 5, 0, 0, 0),
+#         (0, 9, 8, 0, 0, 0, 0, 6, 0),
+#         (8, 0, 0, 0, 6, 0, 0, 0, 3),
+#         (4, 0, 0, 8, 0, 3, 0, 0, 1),
+#         (7, 0, 0, 0, 2, 0, 0, 0, 6),
+#         (0, 6, 0, 0, 0, 0, 2, 8, 0),
+#         (0, 0, 0, 4, 1, 9, 0, 0, 5),
+#         (0, 0, 0, 0, 8, 0, 0, 0, 0))
 
-board = ((False, False, False, False, False, False, False, False, False, False),
-         (False, False, False, False, False, False, False, False, False, False),
-         (False, False, False, False, False, False, False, False, False, False),
-         (False, False, False, False, False, False, False, False, False, False),
-         (False, False, False, False, False, False, False, False, False, False),
-         (False, False, False, False, False, False, False, False, False, False),
-         (False, False, False, False, False, False, False, False, False, False),
-         (False, False, False, False, False, False, False, False, False, False),
-         (False, False, False, False, False, False, False, False, False, False),
-         (False, False, False, False, False, False, False, False, False, False))
+# # ===============================================================================================================
+# # BREADTH FIRST SEARCH SUDOKU
+# # ===============================================================================================================
+# sln = (Search_Algorithms.BreadthFirstSearch(
+#     grid, Sucessors.sudoku_successor, is_goal.is_goal_sudoku)[-1])
 
-# ===============================================================================================================
-# BREADTH FIRST SEARCH N QUEENS PROBLEM
-# ===============================================================================================================
-sln = (Search_Algorithms.BreadthFirstSearch(board, Sucessors.queens_successor, is_goal.is_goal_queens)[-1])
+# for rows in sln:
+#     print(rows)
 
-output_tuple = tuple(tuple("Q" if value else "." for value in sln)
-                     for sln in sln)
-for rows in output_tuple:
-    print(rows)
+# # ===============================================================================================================
+# # DEPTH FIRST SEARCH SUDOKU
+# # ===============================================================================================================
+# sln = (Search_Algorithms.DepthFirstSearch(
+#     grid, Sucessors.sudoku_successor, is_goal.is_goal_sudoku)[-1])
+# #
+# for rows in sln:
+#     print(rows)
+
+
+# board = ((False, False, False, False, False, False, False, False, False, False),
+#          (False, False, False, False, False, False, False, False, False, False),
+#          (False, False, False, False, False, False, False, False, False, False),
+#          (False, False, False, False, False, False, False, False, False, False),
+#          (False, False, False, False, False, False, False, False, False, False),
+#          (False, False, False, False, False, False, False, False, False, False),
+#          (False, False, False, False, False, False, False, False, False, False),
+#          (False, False, False, False, False, False, False, False, False, False),
+#          (False, False, False, False, False, False, False, False, False, False),
+#          (False, False, False, False, False, False, False, False, False, False))
 
+# # ===============================================================================================================
+# # BREADTH FIRST SEARCH N QUEENS PROBLEM
+# # ===============================================================================================================
+# sln = (Search_Algorithms.BreadthFirstSearch(
+#     board, Sucessors.queens_successor, is_goal.is_goal_queens)[-1])
 
-# ===============================================================================================================
-# BREADTH FIRST SEARCH PUZZLE PROBLEM
-# ===============================================================================================================
-sln = (Search_Algorithms.DepthFirstSearch(
-    board, Sucessors.queens_successor, is_goal.is_goal_queens)[-1])
+# output_tuple = tuple(tuple("Q" if value else "." for value in sln)
+#                      for sln in sln)
+# for rows in output_tuple:
+#     print(rows)
 
-output_tuple = tuple(tuple("Q" if value else "." for value in sln)
-                     for sln in sln)
-for rows in output_tuple:
-    print(rows)
 
+# # ===============================================================================================================
+# # BREADTH FIRST SEARCH PUZZLE PROBLEM
+# # ===============================================================================================================
+# sln = (Search_Algorithms.DepthFirstSearch(
+#     board, Sucessors.queens_successor, is_goal.is_goal_queens)[-1])
 
-# # Sliding Puzzle
-initial_puzzle = (
-    (7, 2, 4),
-    (5, 0, 6),
-    (8, 3, 1)
-)
-# ===============================================================================================================
-# BREADTH FIRST SEARCH PUZZLE PROBLEM
-# ===============================================================================================================
-sln = (Search_Algorithms.BreadthFirstSearch(initial_puzzle, Sucessors.puzzle_successor, is_goal.is_goal_puzzle))
+# output_tuple = tuple(tuple("Q" if value else "." for value in sln)
+#                      for sln in sln)
+# for rows in output_tuple:
+#     print(rows)
 
-if sln:
-    for rows in sln:
-        for r in rows:
-            print(r)
-else:
-    print("No solution found")
 
+# # # Sliding Puzzle
+# initial_puzzle = (
+#     (7, 2, 4),
+#     (5, 0, 6),
+#     (8, 3, 1)
+# )
+# # ===============================================================================================================
+# # BREADTH FIRST SEARCH PUZZLE PROBLEM
+# # ===============================================================================================================
+# sln = (Search_Algorithms.BreadthFirstSearch(initial_puzzle,
+#        Sucessors.puzzle_successor, is_goal.is_goal_puzzle))
 
-# ===============================================================================================================
-# DEPTH FIRST SEARCH PUZZLE PROBLEM
-# search was timed on Michael's computer and took 211 seconds, Please be patient
-# ===============================================================================================================
-# start_time = time.time()
-sln = (Search_Algorithms.DepthFirstSearch(initial_puzzle, Sucessors.puzzle_successor, is_goal.is_goal_puzzle)[-1])
-# end_time = time.time()
-# print(end_time - start_time)
+# if sln:
+#     for rows in sln:
+#         for r in rows:
+#             print(r)
+# else:
+#     print("No solution found")
 
-if sln:
-    for rows in sln:
-        print(rows)
-else:
-    print("No solution found")
 
+# # ===============================================================================================================
+# # DEPTH FIRST SEARCH PUZZLE PROBLEM
+# # search was timed on Michael's computer and took 211 seconds, Please be patient
+# # ===============================================================================================================
+# # start_time = time.time()
+# sln = (Search_Algorithms.DepthFirstSearch(initial_puzzle,
+#        Sucessors.puzzle_successor, is_goal.is_goal_puzzle)[-1])
+# # end_time = time.time()
+# # print(end_time - start_time)
 
-# ===============================================================================================================
-# A* SEARCH MAZE PROBLEM
-# ===============================================================================================================
-print(Search_Algorithms.A_StarSearch((4, 0), Sucessors.maze_successor, is_goal.is_goal_maze, Heuristics.maze_opt))
+# if sln:
+#     for rows in sln:
+#         print(rows)
+# else:
+#     print("No solution found")
 
 
 # # ===============================================================================================================
-# # A* SEARCH SUDOKU
+# # A* SEARCH MAZE PROBLEM
 # # ===============================================================================================================
-sln = (Search_Algorithms.A_StarSearch(grid, Sucessors.sudoku_successor,
-                                      is_goal.is_goal_sudoku, Heuristics.sudoku_opt))[-1]
+# print(Search_Algorithms.A_StarSearch((4, 0), Sucessors.maze_successor,
+#       is_goal.is_goal_maze, Heuristics.maze_opt))
 
-for rows in sln:
-    print(rows)
 
+# # # ===============================================================================================================
+# # # A* SEARCH SUDOKU
+# # # ===============================================================================================================
+# sln = (Search_Algorithms.A_StarSearch(grid, Sucessors.sudoku_successor,
+#                                       is_goal.is_goal_sudoku, Heuristics.sudoku_opt))[-1]
 
-# =================================================================================================================
-# A* SEARCH PUZZLE
-# =================================================================================================================
-sln = (Search_Algorithms.A_StarSearch(initial_puzzle, Sucessors.puzzle_successor,
-                                      is_goal.is_goal_puzzle, Heuristics.puzzle_opt))[-1]
+# for rows in sln:
+#     print(rows)
 
-if sln:
-    for rows in sln:
-        print(rows)
-else:
-    print("No solution found")
 
+# # =================================================================================================================
+# # A* SEARCH PUZZLE
+# # =================================================================================================================
+# sln = (Search_Algorithms.A_StarSearch(initial_puzzle, Sucessors.puzzle_successor,
+#                                       is_goal.is_goal_puzzle, Heuristics.puzzle_opt))[-1]
+
+# if sln:
+#     for rows in sln:
+#         print(rows)
+# else:
+#     print("No solution found")
 
-# # ===============================================================================================================
-# # A* SEARCH QUEENS
-# # ===============================================================================================================
 
+# # # ===============================================================================================================
+# # # A* SEARCH QUEENS
+# # # ===============================================================================================================
+
+
+
+
+
+board = ((False, False, False, False, False, False, False, False, False, False),
+         (False, False, False, False, False, False, False, False, False, False),
+         (False, False, False, False, False, False, False, False, False, False),
+         (False, False, False, False, False, False, False, False, False, False),
+         (False, False, False, False, False, False, False, False, False, False),
+         (False, False, False, False, False, False, False, False, False, False),
+         (False, False, False, False, False, False, False, False, False, False),
+         (False, False, False, False, False, False, False, False, False, False),
+         (False, False, False, False, False, False, False, False, False, False),
+         (False, False, False, False, False, False, False, False, False, False))
+
+sln = (Search_Algorithms.A_StarSearch(board, Sucessors.queens_successor,
+       is_goal.is_goal_queens, Heuristics.queens_opt))[-1]
+
+output_tuple = tuple(tuple("Q" if value else "." for value in sln)
+                     for sln in sln)
+for rows in output_tuple:
+    print(rows)
\ No newline at end of file
-- 
GitLab