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 zcma)8ZERE58NTO!#g1b;b{u~Mn>b11;xZ_qe8ebCahI~BEul0)8>1+gToWSvLGE=5 z$!zRNR5&Qp9BxotiD_oqSQz_3m1(0}(dd44YJb?sRjn&!(xm<2$EK+L!zxYN``+s~ zUt7n~z0ZB`d(L^!dC&WGetY=A_e{Su8tW-&zu571xYaRda+3bJ=MUPiQs37JdO*EU z4_Gf4hA4l7e1*4vaQP23`A7~o56}rt4v`i*QKx<M_~{#CQgp(ABDI#J1#*@8HGPMs zsC)2g?Hz`qQcQ|Xabr}9PZ(GE6eTbTGYXPjY-@mZ)jE<)56}rqjX@>ZB$FiPm^%a{ z!>cuMf08fg<q5Xg)x64sd9dDUOW5R}vcXfMwJFen8*761D=WYPm81l+wlt_t4?e*m zA`jpv3b`cVY_EuC_qDDk5{jM`LcP=N(xec-Fe%@*Hm9pRR87KR8R~xUe&{!S8A@z` zUy#CF2v3PD(guZ%j7tfHiH0sJ&7<ezaVb1<HY_DZq{*|=#AHYeD~;>fV*HY%Sl4q# z<B`c|3?*DvI58BHTeyJRBqc&(VmvlBaxp$0ODN>BLZ%c>n2biJ<TKo^`sZPF+?-UF zpE%ro%l4g%110-`vi-p4-Tj}qO5H={?xD|5j1|vMlun4{6JoJh$_y@Bn{%<n-HW@6 z)<DS`C|d(Rd?ORgOk_JNR+~)oGfN+v=4rj3e)4Z<qF?^5<y4~`mbpudI`}9I>|g$q z<sj*lzqX`#FYv^ja@zU|@yma-b_d+Z@E~B9V!AjvJsk;;gd&mnrLZ8j0@L3h;?auF zA#~s<GA{b$y-mAFn|!9}W$pm*>`Omu`aN^nk7LjSjtu*CB5p)<Ak>yo7-=%9m?kE} z;h3~x8Fd4GUR$dTC#ehWLCS>SlRtF$xI;khS^AqJNa|liE<#X#(e=X8JU>j*FCz~@ zA>Z+HDkb)=^46%WUA2j;T`EJJTARP2t2RMfL{(a}qLXQiSAg;p(IZdkeB{VdLHCHM z6TgMs9r9n?4*5z$I~kF0H|+C>7z)FFTD611jm9Tq34dMn(B&^1Uhv|nOLYKVwH;QY zLEMhQ5Qdg|jPH@9w_HDB$hSdw)aSvjZUj7e*!P+Rk04h))ed>W)5HhxKd^M&^C^)9 zi=`PA`HF?0TY%6^5qRkYk^f<C;Zh6)xBM}0m;Y%t%deX)O>d^yBxHxR04~sw4{Was z^u|<?;siR$jnbFt3m_fV<C9F4YLC%`n%$LTQzQv1Y!b(yxbzlr^z6|jog_)-90MtX z85C=NcbC<?S#`MAU@3(gj|t(+;8>`*qEllXf<p6TeRMoF5{_O>OsPkr7*u*>G#rUY z5~d(L@3dD-KO*X>!jFNF@&FmCVzy-ZE4unjaJjK5*Egr1*JlQnjn<nl<q~s&`9R6& zDH}a26vwrxkR=s+OTKG<Y$19hS_qcxzOvnyHB<}@*&h@QK6oChm_Mm~fw5oXR~*i4 zf5q969jG+ga>wWE7K}HH`B16RTW<7bgHKV!`MkbpXe+X9VuKvA*c_@c>%o}U`2TOt zj=}4EmOn=X`l>ET^-*^~!F%v(4NT2y=Is?WRRS<C^FPe%R?WMAhOe5JEvP2-Z4p7w z9s`5YRg<!sN#(q|&*W#+RHntw9&m4a+P5_y@9v4jM?(>*7YIo3qw(m)-rKNq2}9v& zhANtT+LQ0dO1ZAtcWVr_NT^9mJPKnW^456@Bzr9ny#-wggTKeAbTxvuhGYwj5)p2} zE8zjc($DH5JO_RP04}n+S=eO322e8j$|hfysn}f$<2Tad1u_?zk9@P+Z1tL^1^o?u zzHP2yzCrburrhy0e}TPjDAZW2RQLH3-G{nXcTKnILTOA1&|Pga)TU_1JW*=`EieLm z2RQd?+&=2`rz!RsM*Z%3UA8VuoudWrs;)M^4}`;=gcaCnpf=ujHoNV0U4pCah05x{ zy?Ip>B(i3DMkn`}x6A)>x&7aeqlQ!`9>e^kWx(phR)1HD7eGjoUrT}SQex*!-A10~ z^!=Oj815e8f=%)&1&J_5X7|oMnEh;BDAcXXZcp?uL+q0eyKHIo5{0GrCcQw7!A0tH zbBfHsJ#B3(GxQ8CP$>I7dW}0r&)Okt5)qG4yJxXlgke=s_|T{rmn1a^BrIoMZziJ^ z9K38!`?c6Rx#`yQ-{S8+jF)x-VEj3Uwda8)Z_9^nISTeg`~9}NEycE%%C3F2ZZ&ba zS}_D~lB!}JPz=)jnhFIh3q6#u$?-t5?W$(zXrLhG|JCfF>ZY$<^5nm|o6=QPo<Wlj zK+>8fgGDDk_q+10Lf0+#7p|R;T{{<pCD-n<Yq!=1s9iqS*CVwc58|fuc)V%tI;G~9 zYGHae6j4|qekrDK(_t`!=!4PXNrY3l1+@PetVv$);p#2GiJb_)!U4SymrtK!(!r9X z)g`kvw{K=@b}G}q+}NB8<t_Q(oN3;)lBVjp?JEdbcG<oyAIwh_+U8>Ou@y?MhYo=3 zk;<ywGz&cpKkEDBx#ID+|GcBrJ5=r+0(QwcTy_p;2bOJ)n({zA<Q|Sb@_!inC|2q| zTJAmytdeuE3}`!6wjIm9mado^bNh?t4tO4`nD5rU8V|6t&70FLySD#CDg@rYa_fqA z#48kQf&BsGf>0In1BKA7H;axP@KoIGg_DaDKY!<o&V!FT4?ZBJ&O_zSLnZg2JgK<7 zg|7GefpB{A+)CXr<@7&YF`}+E%4o_?<aQJd+luTq)pCP=gJ{OH#hbf`fhHb8P;Z@h z7t`)v0i@6~)wC}<<y5O@?+E;3f|MQrtT2R-6`Cgw$nL9P)gx5{r~LO;Ph&eFjVn|Q l>gCT`y>A@wAhQOql6uk(Mq7mz15!0`n~8gc+6t;l{{g8&hCToQ 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