Answered step by step
Verified Expert Solution
Question
1 Approved Answer
Instruction: For this assignment, you need to implement two different search algorithms to solve a puzzle problem. For this puzzle game, the GUI (graphical
Instruction: For this assignment, you need to implement two different search algorithms to solve a puzzle problem. For this puzzle game, the GUI (graphical user interface) framework is provided that is developed by Python and pygame library. Below is a highlight of the provided framework. Two folders are given: 1. game folder - This folder deals with all the graphical or visual stuff, including pattern generation from an image, user mouse/keyboard interface, ext (You do not need to modify any files in this class). 2. sol folder - This folder has the file that provides a solution for a given puzzle. Three functions you can find from this file "bfs()", "dfs()" and "astar()". (For this project, you are required to implement the first two functions). These three functions are triggered by the three buttons in the GUI accordingly. What you need to do is to create Python project (suggested using the Interpreters 3.0 or higher) and copy these two folders directly to the created project. Then you need to install the pygame library, e.g. pip tools. Open the "puzzle.py" file in the game folder and run the code from there. Requirements: You need to implement the two functions in the "solution.py" file in the "sol" folder: 1. bfs (puzzle) (50%) 2. dfs(puzzle) (50%). The input argument "puzzle" is just a list of 9 numbers, e.g. [4, 3, 5, 2, 0, 1, 8, 6, 7], where the number "8" represents the empty space. You can use a print() function to see this input data. Both functions expect you to return a list of a path for the number "8" to move to make the sequence into a sequential order. Each element of the path represents a new position of the number "8" to move. The details are explaned in the section below. What should be submitted: Explanation of the returned "path" list: The path stores the moving steps of the empty space "8" to move though when you play the game you move the tiles rather than the empty space. Below shows an example of the moving path of "8" For example: Input: data = {0, 4, 1, 3, 8, 2, 6, 7, 5 }; Goal: make it into the correct order {0, 1, 2, 3, 4, 5, 6, 7, 8) You need to make the following changes on the number 8, since the number 8 represents the empty space, moving 8 to its neighboring numbers equals to moving the corresponding number to the empty space. Below it shows a demo of the steps: 041 swap with 4 081 swap with 1 018 swap with 2 012 swap with 5 012 382 342 >342 348 -> 345-... 675 675 675 675 678 So from this example, the right path should be {1, 2, 5, 8). WHY? You may thought it was {4, 1, 2, 5), since the number 8 has swapped with them in this order. That is true. However, we do not care which number it swapped with, but which position the number 8 has gone through. As the numbers can be in any positions during different time, which give no hint about where the number 8 is. In contrast, the positions are fixed. So we assume the positions are in the same order as an increasing sequence: [0] [1] [2] Fixed Position = [3] [4] [5] [6] [7] [8] Here, I use "[]" to distinguish the positions from the numbers. So now you can see, the number 8 starts from position [4], then swapped with number 4, which goes to the position [1]; then swapped with number 1, which goes to the position [2]; then swapped with number 2, which goes to the position [5]; finally, swapped with number 5, which goes to the position [8]. So the path you should assign to the parameter "&solution" with the path sequence {1, 2, 5, 8). solution.py puzzle.py highlight_digit.py GeneratePuzzle.py digit_sqr.py button.py X Node.py X 2 #This is the only file you need to work on. You do NOT need to modify other files 4 # Below are the functions you need to implement. For the first project, you only need to finish implementing bfs() and difs () 5 6 7 #here you need to implement the Breadth First Search Method def bfs (puzzle): 8 9 list = [] 10 A return list 11 12 #here you need to implement the Depth First Search Method def dfs (puzzle): 13 14 list = [] 15 0 return list 16 17 18 #This will be for next project 19 def astar (puzzle): list = [] 20 21 A return list 22 23 3
Step by Step Solution
★★★★★
3.41 Rating (160 Votes )
There are 3 Steps involved in it
Step: 1
class State def initself state parent move depth cost key selfstate state selfparen...Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started