From 7e701cc3be2fbf18eda040479d2de4e990989549 Mon Sep 17 00:00:00 2001 From: Scott Wong <scottmw@student.unimelb.edu.au> Date: Tue, 30 Mar 2021 22:26:16 +1100 Subject: [PATCH] Debug for printing --- search/1.json | 27 ++++++++++ search/__pycache__/main.cpython-36.pyc | Bin 0 -> 2020 bytes .../__pycache__/movement_logic.cpython-36.pyc | Bin 0 -> 6011 bytes search/__pycache__/search_algo.cpython-36.pyc | Bin 0 -> 9848 bytes .../search_algorithm.cpython-36.pyc | Bin 0 -> 9585 bytes search/__pycache__/util.cpython-36.pyc | Bin 0 -> 7451 bytes search/main.py | 6 +-- search/search_algorithm.py | 48 ++++++++++++++---- 8 files changed, 68 insertions(+), 13 deletions(-) create mode 100644 search/1.json create mode 100644 search/__pycache__/main.cpython-36.pyc create mode 100644 search/__pycache__/movement_logic.cpython-36.pyc create mode 100644 search/__pycache__/search_algo.cpython-36.pyc create mode 100644 search/__pycache__/search_algorithm.cpython-36.pyc create mode 100644 search/__pycache__/util.cpython-36.pyc diff --git a/search/1.json b/search/1.json new file mode 100644 index 0000000..7863e69 --- /dev/null +++ b/search/1.json @@ -0,0 +1,27 @@ +{ + "upper": [ + [ + "r", + 2, + -4 + ], + [ + "p", + 2, + -3 + ], + [ + "p", + 3, + -4 + ] + ], + "lower": [ + [ + "s", + 4, + 0 + ] + ], + "block": [] +} \ No newline at end of file diff --git a/search/__pycache__/main.cpython-36.pyc b/search/__pycache__/main.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ed2128540324288049c330e694cf547b243e103b GIT binary patch literal 2020 zcmXr!<>eCKOioacWng&BfCQKr7#JKF7#NBT7#J8*7@`<b7*m*X7^4`$G*c8)3S$a$ z4s!@Y3QG!W3qur33R?<$3qurZ3R5tHCP&q2E@yw=0Am9KBNGM3qLR$C%;e0(90kw3 zlGL1>%=FZ}<WwDn;MCmI;*!)N1w$PLBLgEtu7INatkmQZg@DAO5(P&qh2Yf0qU4Os zymT(Ekc`Y?h2rF*%z_ey<ovvn#LT>6g_4X^h19%~qDqB={LH)(g_3-*P(e|CdQoDo zf(A%FIX@*;Av2FFAwE7gF*7edUaz1sK_NLYC#P5;0VJZKnV_ks5Sd?Eq)?onQ(BUl zpQlh<l2}wytdNmfl&Z+}5)>|envAy?wUR+h5N2jzU=UznU~mS7(Gms*hDwbRh7!gs zrW8g=hGxcofm((V<}8*PhGxcE#&CudhCqfOh6sjmhCCe>h7#6nuA&e|1`sS^OJOQu z%wkVr?qy;GnZS|4*v!bt5Xq3o6v0r!Sp()(h?H=-FvRlIGL>-GFoEO?Q^FZac$yg) z8A^Cd_&_2RA|?Dq(@F%uVuB#DuqB+Kh9OG`#7<!dX3%8ud&$Vaz)+=KTAY}kYNb$6 zS(1^TXRM%`t56IMYK4Ntk_`QleErP4g3=Pbtm6DUO~zX+X_+~xn!>kO@(WV)ZZQ{E z7T;n?EJ`oC#R5`rizO#NG36GQXI@Hbg=<k!e$g$~f}+g4l3Q%WB`K*zMYmW|D>6%N zaTg>O6{p67O}@onT2PQ$6p)#koLcOXnOqXZotBxG5?_*7l%84=#g&_wof@B%pIDR< z#SJzK%3+0yLDYeD-eLut7{yrv(o<4ely{3YIVZn3Rg<}hg@J+L7E4NEN#ZTm0+3xR z8Hz+07#MyzIa|eq7N-^!#{?(mmz2b~<R_QrrskCt$Aso(hUXV$$H0?s3^Y+1#z2B7 z29##>3My~0fEawB_?H8x2qs1WMhQkfMm|OXCJrVpMjj?MMh-?cMm9z+#v(BW28Lu% z*n^aEF)%Q&!V*seBLhPX11Q<lGS)DpFiA4hGSx7oFiSGjGN-WAvZV0EFxRryvemLz zG}JJ<FvM2Wa@25?Fi0|_uw^q91=X;ou!}R)vZip9FxId(Gm10RvgDaTRd8lA6_wPm zfmN`jaFsCDut8Ob)Ubm^*;BYn7;D%eqBR^POp**W93{+>3~5XyEHx}P44DiitRT8j zC!8ULAMTc_8YUNp*di3S+=IJ?4aqGQ2)9gNEMkJYh7+r6cyPLg4eW{?;S3cjHOwvy zu`;!sCG1%oHJo5Kb3)t<$_Nt}3r)fqQh0+IGzAj17#SG26hHu!3=}ep6%rLvGLu2M zJh7-!p**uBLm@l0vRFZ>6qF*BbQF|w^2<|;loS&4QWTVua`Kb2l^_OyQ&6!&W*(9O zItpMFVA0~#5*>x|RE6ZkJcZKYRE5kmg@XLzOpsL|O~t7t5Vc%j<G{H=0ph5<l6-~K z%#w`MBCyerY@v`}q)?n%;skO*F<6ULK_aMF1L?6+0Ogv@{5+5+@{>Ttp+aIBs4Oi? zO-xZpE6UGR@Cx?#QvhXMh0@~8ymSaZH$SB`Cshw(UQsG2zgQ{wh5Gn_MQ*WzL*W)H zI1FyFf*pK|p$L?6Z!s1Wfr`Cbi~+Y8i*7Ln-C_*B#aQg8$qbf85SRj-Q7j>m0j{^0 zi%W{4Sl!}-{KKO-+~S@6eL{Wxiuf5A7^3)LLFJKIT#{c@8O0BF0wgFvevRUU2gWVt z#FP|Gt|B3jMxo5S%#zH+9Ei$LP$Wj7iur)zGm00g4icVG9NDRr;YFDxsZlI>rMU%Q zvItBT7YQ>kFce9G2vA`GE-{KkL0mot1_o77j<*73V_ptM4n__p7G^F+E=C?k4n{r* z$;83P!zjYYgCx!ek_C%PFmo{$fy~ilyTu+KpOT*(A78`<GMoeC8*xY>qX(hl6LZq@ mi!w_xa=`@%SRceWs1CcuVFQU*J9d!kK;;Vy*lirl9O3{oLl$KK literal 0 HcmV?d00001 diff --git a/search/__pycache__/movement_logic.cpython-36.pyc b/search/__pycache__/movement_logic.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..305fec5019e20f268ffabc036afb2771d6ba711c GIT binary patch literal 6011 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 literal 0 HcmV?d00001 diff --git a/search/__pycache__/search_algo.cpython-36.pyc b/search/__pycache__/search_algo.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..74e6717fea605784a31ba0a6ad30a0e18e472015 GIT binary patch literal 9848 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 literal 0 HcmV?d00001 diff --git a/search/__pycache__/search_algorithm.cpython-36.pyc b/search/__pycache__/search_algorithm.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8b0b45f5d0ec70481f3df1dc34911ee8c1453abb GIT binary patch literal 9585 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 literal 0 HcmV?d00001 diff --git a/search/__pycache__/util.cpython-36.pyc b/search/__pycache__/util.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1ad4c8f7c814b8daa3f6b233e1e3e9f1f4811f7e GIT binary patch literal 7451 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 literal 0 HcmV?d00001 diff --git a/search/main.py b/search/main.py index d4a4f71..9c8bd5b 100644 --- a/search/main.py +++ b/search/main.py @@ -22,17 +22,15 @@ def main(): sys.exit(1) parse_input(data) - # Add starting targets for piece in upperPiecesDict: find_target(piece) - # keep moving until all the piece met its target + make_board() + print_board(board) while targetsDict: input() take_turn() - make_board() - print_board(board) file.close() diff --git a/search/search_algorithm.py b/search/search_algorithm.py index c9c4943..0bd0dda 100644 --- a/search/search_algorithm.py +++ b/search/search_algorithm.py @@ -5,9 +5,12 @@ from typing import Dict, Set, List from search.movement_logic import * from search.search_algo import piece_collision - +import main # Constant definition: -from search.util import print_board +from search.util import * + +# Global variable turn is needed to print output +turn = 0 BLOCK = "[X]" UPPER_ROCK = 'R' @@ -285,17 +288,19 @@ def perform_optimal_combination(move_list: dict): -> prioritise action that after complete bring piece to its target. -> then choose an action from those piece with the least choice. -> then choose action from the remained piece in a way that not cause collision - :param move_list: contain all the pottential moved for all piece + :param move_list: contain all the potential moved for all piece """ - + global turn priority_list = [] # For each piece who has a target, move all the piece that after take this action will lead directly to its target. # Keep the rest in the another list {so that we can sort them and , move each of them} for piece in move_list: if piece in targetsDict.keys() and compare_tile(move_list[piece][HIGHEST_RANK], targetsDict[piece]): + print_move(upperPiecesDict[piece], targetsDict[piece]) # found a piece !!!perform swap and update board del board[upperPiecesDict[piece]] + upperPiecesDict[piece] = targetsDict[piece] board[targetsDict[piece]] = piece @@ -323,10 +328,14 @@ def perform_optimal_combination(move_list: dict): continue # Found a move that does not cause collision + + # This is print section + print(upperPiecesDict[piece], " to ", move_list[piece][index]) + print_move(upperPiecesDict[piece], move_list[piece][index]) + if upperPiecesDict[piece] in board.keys(): del board[upperPiecesDict[piece]] upperPiecesDict[piece] = move_list[piece][index] - board[move_list[piece][index]] = piece # log that this piece had visit this tile <- help with ranking its option. @@ -339,14 +348,15 @@ def take_turn(): choose a combination of move that is partially optimal {move all the piece <some time> closer to its target} """ - make_board() - print_board(board) possible_actions = {} for piece in upperPiecesDict: possible_actions[piece] = make_ranked_move_list(piece) - + global turn + turn += 1 perform_optimal_combination(possible_actions) + make_board() + print_board(board) update_target_dictionary() @@ -386,4 +396,24 @@ def update_target_dictionary(): if piece in targetsDict.keys(): continue - find_target(piece) \ No newline at end of file + find_target(piece) + +# Every tool in this document doesn't seem to be helpful. We're brute forcing this +def print_move(start: Tuple[int, int], finish: Tuple[int, int]): + # Go through every slide comparsion. If not printed already it's a swing. + # Three lines for readability + # Horizontal + global turn + if abs(start[0] - finish[0]) == 0 and abs(start[0] - finish[0]) <= 1: + print_slide(turn, start[0], start[1], finish[0], finish[1]) + # LL to UR diagonal or UR to LL diagonal + elif abs(start[0] - finish[0]) <= 1 and abs(start[1] - finish[1]) == 0: + print_slide(turn, start[0], start[1], finish[0], finish[1]) + # LR to UL diagonal + elif start[0] == (finish[0] - 1) and start[0] == (finish[0] + 1): + print_slide(turn, start[0], start[1], finish[0], finish[1]) + # UL to LR diagonal + elif start[0] == (finish[0] + 1) and start[0] == (finish[0] - 1): + print_slide(turn, start[0], start[1], finish[0], finish[1]) + else: + print_swing(turn, start[0], start[1], finish[0], finish[1]) \ No newline at end of file -- GitLab