SudokuBuilder
$ gem install sudoku_builder
$ irb
> puzzle = SudokuBuilder.create
> puzzle.pretty_print
+-----------------------------+
| 7 9 2 | 5 1 4 | 8 6 3 |
| 3 4 1 | 7 8 6 | 2 5 9 |
| 5 6 8 | 3 9 2 | 7 1 4 |
+-----------------------------+
| 4 5 7 | 6 3 8 | 9 2 1 |
| 6 1 9 | 2 5 7 | 4 3 8 |
| 2 8 3 | 1 4 9 | 6 7 5 |
+-----------------------------+
| 9 7 5 | 4 2 1 | 3 8 6 |
| 8 3 6 | 9 7 5 | 1 4 2 |
| 1 2 4 | 8 6 3 | 5 9 7 |
+-----------------------------+
> puzzle.hard.pretty_print
+-----------------------------+
| _ 2 6 | _ _ _ | _ 8 _ |
| _ _ _ | _ 2 _ | 1 3 7 |
| _ _ _ | 9 _ _ | 4 _ _ |
+-----------------------------+
| 1 5 _ | _ _ 7 | _ _ _ |
| 9 4 2 | _ _ _ | _ _ _ |
| 6 _ _ | 1 4 _ | _ _ 2 |
+-----------------------------+
| _ _ _ | 4 7 2 | 6 1 9 |
| _ 6 4 | _ _ _ | _ 5 3 |
| 2 _ _ | _ _ 6 | 7 _ 8 |
+-----------------------------+
> puzzle = SudokuBuilder.create
> puzzle.easy.pretty_print
+-----------------------------+
| 8 6 _ | 9 2 5 | _ _ 4 |
| _ 1 _ | _ _ _ | 5 2 7 |
| 2 4 5 | 7 _ 3 | 9 8 _ |
+-----------------------------+
| 6 _ 4 | _ _ 1 | 7 5 9 |
| _ _ 1 | 3 7 _ | _ 6 8 |
| _ 7 8 | 5 6 _ | 2 1 3 |
+-----------------------------+
| _ 8 3 | 4 _ 2 | 6 9 1 |
| _ _ _ | _ 3 7 | 8 _ _ |
| 4 5 6 | 1 _ _ | 3 7 2 |
+-----------------------------+
> to_solve = SudokuBuilder.create.hard.to_a
> solved = SudokuBuilder.solve(to_solve).pretty_print
+-----------------------------+
| 3 2 1 | 9 8 4 | 6 5 7 |
| 7 8 4 | 6 3 5 | 1 2 9 |
| 9 5 6 | 7 1 2 | 8 4 3 |
+-----------------------------+
| 8 1 7 | 4 6 9 | 5 3 2 |
| 6 3 2 | 1 5 7 | 9 8 4 |
| 4 9 5 | 8 2 3 | 7 6 1 |
+-----------------------------+
| 5 7 9 | 2 4 8 | 3 1 6 |
| 2 6 3 | 5 7 1 | 4 9 8 |
| 1 4 8 | 3 9 6 | 2 7 5 |
+-----------------------------+
> puzzle = SudokuBuilder.create
> print puzzle.to_flat_a
# an array from 0..80 with each value of the sudoku
[1, 7, 8, 6, 5, 3, 4, 2, 9, 4, 5, 6, 1, 2, 9, 3, 8, 7, 9, 3, 2, 8, 7, 4, 6, 5, 1, 2, 6, 5, 4, 9, 8, 7, 1, 3, 3, 1, 7, 5, 6, 2, 9, 4, 8, 8, 4, 9, 3, 1, 7, 2, 6, 5, 5, 9, 1, 7, 4, 6, 8, 3, 2, 6, 2, 3, 9, 8, 1, 5, 7, 4, 7, 8, 4, 2, 3, 5, 1, 9, 6]
Contributing
- Fork it ( https://github.com/[my-github-username]/sudoku_builder/fork )
- Create your feature branch (
git checkout -b my-new-feature
)
- Commit your changes (
git commit -am 'Add some feature'
)
- Push to the branch (
git push origin my-new-feature
)
- Create a new Pull Request