Skip to content

Commit

Permalink
LightsOut Image AutoGUI + Update requirements.txt
Browse files Browse the repository at this point in the history
  • Loading branch information
cameroncheung00 authored Sep 21, 2023
1 parent 693a2e6 commit 195fdde
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 23 deletions.
2 changes: 1 addition & 1 deletion puzzlesolver/puzzles/AutoGUI_Status.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
gui_status = {
'lights': {
None: 'v1'
None: 'v3'
},
'nqueens': {
None: 'v1',
Expand Down
2 changes: 1 addition & 1 deletion puzzlesolver/puzzles/hanoi.py
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,7 @@ def convert_move(self, move):
pos = board[index]
if pos == '-':
to_bottom_most = index
return "M_{}_{}".format(from_top_most, to_bottom_most)
return "M_{}_{}_x".format(from_top_most, to_bottom_most)

def revert_move(self, move):
"""Returns the uwapi move converted into regular move
Expand Down
51 changes: 39 additions & 12 deletions puzzlesolver/puzzles/image_autogui_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,27 +55,28 @@ def get_hanoi(variant_id):
"background": f"hanoi/{num_poles}_{num_disks}_variant_grid.svg",
"entities": pieces,
"arrowWidth": 0.06 if num_poles <= 3 else 0.08,
"animationType": "simpleSlidePlaceRemove"
"sounds": {"x": "general/slideThenRemove.mp3"},
"animationType": "simpleSlides",
}

if variant_id == '3_4':
regularTheme["centers"] = [[0.5 + (i % 3), 0.2 * (i // 3) + 1.6] for i in range(12)]
regularTheme["centers"] = [[0.5 + (i % 3), 0.2 * (i // 3) + 1.605] for i in range(12)]
elif variant_id == '3_3':
regularTheme["centers"] = [[0.5 + (i % 3), 0.2 * (i // 3) + 1.8] for i in range(9)]
regularTheme["centers"] = [[0.5 + (i % 3), 0.2 * (i // 3) + 1.805] for i in range(9)]
elif variant_id == '3_2':
regularTheme["centers"] = [[0.5 + (i % 3), 0.2 * (i // 3) + 2.0] for i in range(9)]
regularTheme["centers"] = [[0.5 + (i % 3), 0.2 * (i // 3) + 2.005] for i in range(9)]
elif variant_id == '3_1':
regularTheme["centers"] = [[0.5 + (i % 3), 0.2 * (i // 3) + 2.2] for i in range(9)]
regularTheme["centers"] = [[0.5 + (i % 3), 0.2 * (i // 3) + 2.205] for i in range(9)]
elif variant_id == '2_1':
regularTheme["centers"] = [[1 + (i % 2), 0.2 * (i // 2) + 2.25] for i in range(9)]
elif variant_id == '4_1':
regularTheme["centers"] = [[0.5 + (i % 4), 0.2 * (i // 4) + 3.0] for i in range(16)]
regularTheme["centers"] = [[0.5 + (i % 4), 0.2 * (i // 4) + 2.98] for i in range(16)]
elif variant_id == '4_2':
regularTheme["centers"] = [[0.5 + (i % 4), 0.2 * (i // 4) + 2.8] for i in range(16)]
regularTheme["centers"] = [[0.5 + (i % 4), 0.2 * (i // 4) + 2.78] for i in range(16)]
elif variant_id == '4_3':
regularTheme["centers"] = [[0.5 + (i % 4), 0.2 * (i // 4) + 2.6] for i in range(16)]
regularTheme["centers"] = [[0.5 + (i % 4), 0.2 * (i // 4) + 2.58] for i in range(16)]
elif variant_id == '4_4':
regularTheme["centers"] = [[0.5 + (i % 4), 0.2 * (i // 4) + 2.4] for i in range(16)]
regularTheme["centers"] = [[0.5 + (i % 4), 0.2 * (i // 4) + 2.38] for i in range(16)]
else:
return None
return {
Expand All @@ -85,6 +86,30 @@ def get_hanoi(variant_id):
}
}

def get_lightsout(variant_id):
if variant_id not in "2345678":
return None

sideLength = int(variant_id)
sL2 = sideLength * sideLength

return {
"defaultTheme": "regular",
"themes": {
"regular": {
"space": [sideLength, sideLength],
"centers": [[i % sideLength + 0.5, i // sideLength + 0.5] for i in range(sL2)],
"background": "lightsout/background.svg",
"entities": {
c: {"image": f"lightsout/{c}.svg", "scale": 1} for c in "01t"
},
"sounds": {"x": "general/remove.mp3"},
"animationType": "entityFade"
}
}
}


def get_npuzzle(variant_id):
if variant_id not in ("2", "3"):
return None
Expand All @@ -103,7 +128,7 @@ def get_npuzzle(variant_id):
},
"entitiesOverArrows": True,
"sounds": {"x": "general/slide.mp3"},
"animationType": "simpleSlidePlaceRemove"
"animationType": "simpleSlides"
}
}
}
Expand All @@ -119,7 +144,8 @@ def get_nqueens(variant_id):
"background": "nqueens/grid.svg",
"entities": {
"q": {"image": "chess/wikipedia/Q.svg", "scale": 1}
}
},
"animationType": "simpleSlides"
}
}
}
Expand All @@ -143,7 +169,7 @@ def get_rushhour(variant_id):
},
"arrowWidth": 0.1,
"sounds": {"x": "general/slide.mp3"},
"animationType": "multipleSlides"
"animationType": "simpleSlides"
}
}
}
Expand All @@ -155,6 +181,7 @@ def get_rushhour(variant_id):

image_autogui_data_funcs = {
"hanoi": get_hanoi,
"lights": get_lightsout,
"npuzzle": get_npuzzle,
"nqueens": get_nqueens,
"rushhour": get_rushhour
Expand Down
8 changes: 4 additions & 4 deletions puzzlesolver/puzzles/lightsout.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def generateMoves(self, movetype="all"):
moves = []
for i in range(len(self.grid)):
for j in range(len(self.grid)):
move_str = "A_{}_{}".format("1" if self.grid[j][i] else "0", str(i + j * len(self.grid)))
move_str = "A_t_{}_x".format(str(i + j * len(self.grid)))
moves.append(move_str)
return moves

Expand Down Expand Up @@ -88,7 +88,7 @@ def fromHash(cls, variantid, hash_val):
def generateStartPosition(cls, variantid):
variant = int(variantid)
position = "R_{}_{}_{}_".format("A", variant, variant)
position += '-' * (variant ** 2)
position += '1' * (variant ** 2)
return cls.deserialize(position)

@classmethod
Expand All @@ -109,7 +109,7 @@ def deserialize(cls, position: str):
puzzle.grid = []
for i in range(variant):
row = position[i*variant:(i+1)*variant]
row = [True if i == '-' else False for i in row]
row = [True if i == '1' else False for i in row]
puzzle.grid.append(row)
return puzzle

Expand All @@ -118,7 +118,7 @@ def serialize(self):

result = ""
for row in self.grid:
str_row = ["-" if entry else "*" for entry in row]
str_row = ["1" if entry else "0" for entry in row]
result += "".join(str_row)
output += result
return output
Expand Down
10 changes: 5 additions & 5 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
astroid==2.3.3
attrs==19.3.0
certifi==2023.7.22
Click==7.0
Click==8.1.3
coverage==5.0.3
Cython==0.29.33
decorator==4.4.2
Flask==2.2.5
Flask-Cors==3.0.8
importlib-metadata==1.5.0
importlib-metadata==3.6.0
isort==4.3.21
itsdangerous==1.1.0
Jinja2==2.11.3
itsdangerous==2.1.2
Jinja2==3.1.2
lazy-object-proxy==1.4.3
MarkupSafe==1.1.1
MarkupSafe==2.1.3
mccabe==0.6.1
more-itertools==8.2.0
networkx==2.4
Expand Down

0 comments on commit 195fdde

Please sign in to comment.