1 of 11

Sudoku Solvers

Faculty:

Raghuveer Mohan

Team:

Michael Richards

Jaden Krekow

Alice Luce

Adrian Rodriguez

2 of 11

What we seek to accomplish

  • Create a sudoku app that allows for the user to:
    • Generate random sudoku puzzles based on requested difficulty
    • Try and solve that sudoku puzzle (1 unique solution)
    • Give user option to auto solve the puzzle or give hints
    • Support different variations of sudoku

3 of 11

How we can accomplish that: Puzzle Generation

  • Conduct literature review to find out what type of algorithm is most efficient for sudoku generation
  • Construct algorithm based off the finding which ensures the puzzle:
    • Has a solution
    • Has 1 unique solution
    • Matches the difficulty set by user

4 of 11

How we can accomplish that: Difficulty Settings

  • Difficulty in sudoku revolves around information
  • The more information given (filled in cells), the easier it is to solve
  • The less information, the harder it is to solve
  • Puzzle generator will have a set cut off for how much information to give based on the selected difficulty

5 of 11

How we can accomplish that: User Interface

  • Play and solve sudoku puzzles with use of an effective user interface
  • PyQt as our framework (subject to change)
  • Streamline the solving process by traversing the cells via arrow keys
  • Play test and incorporate feedback

6 of 11

How we can accomplish that: Sudoku Solver

  • Conduct literature review to see what type of algorithm is most efficient
  • Keep time complexity to a minimum
  • Include functionality to solve sudoku variants
  • Design data structures to reflect variants and their differences while keeping complexity low

7 of 11

How we can accomplish that: Sudoku Variations

  • Some sudoku variations can be adapted to use the same generation algorithm, while some can not
  • Pick which variations to include, figure out if they can be adapted to current generator algorithm
  • Write unique algorithm if necessary

8 of 11

Milestone 1

  • Research solving strategies/constraint satisfaction algorithms
  • Research Sudoku board generation
  • Test tools for user interface and collaboration
  • Create functional and interface requirements documentation
  • Create design documents
  • Create test cases

9 of 11

Milestone 2

  • Create efficient data structures to apply researched algorithms onto to solve Sudoku
  • Create basic GUI for Sudoku board
  • Run a basic game of Sudoku

10 of 11

Milestone 3

  • Explore more efficient ways to test the solvability of a Sudoku board
  • Generate boards with unique solutions
  • Efficiently automatically solve basic Sudoku games

11 of 11

Questions?