# CPSC 312 Project 1: Sudoku

## Author

Jixing (Leo) Li

Jiayao (Raymond) Chen

Chen (Phoenix) Song

## What is the problem?

Sudoku, according to Wikipedia, is a “logic-based, combinatorial number-placement puzzle”, whose objective is to fill a 9×9 grid with digits so that each column, each row, and each of the nine 3×3 subgrids that compose the grid (also called "boxes", "blocks", or "regions") contains all of the digits from 1 to 9. The puzzle setter provides a partially completed grid, which for a well-posed puzzle has a single solution.

We decided to evaluate the performance of Haskell when it solves this type of problem. The program will basically perform a Deep-first Search on a given incomplete Sudoku, and return one of the possible solutions for it.

## What is the something extra?

Time permitting, we can implement a Sudoku generator, which will generate one incomplete but solvable 9x9 Sudoku. Also, we will make an effort to improve the input ways, so that the program is more user friendly and intuitive.

## What did we learn from doing this?

Follow Prof. Poole's advice, design top-down, build bottom-up.

IO is kind of a challenge thing when implementing.

Last, we learn how to use heuristic algorithm to speed up solving sudoku