0.0
No commit activity in last 3 years
No release in over 3 years
A gem to solve any sudoku puzzle.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 1.10
~> 10.0
>= 0
 Project Readme

I Love Sudoku

I Love Sudoku is a gem for solving any sudoku puzzle. Documentation for public methods is below. You can also read about how it works at this link.

Installation

Add this line to your application's Gemfile:

gem 'i_love_sudoku'

And then execute:

$ bundle

Or install it yourself as:

$ gem install i_love_sudoku

Usage

###ILoveSudoku.new(matrix)

You can create a new puzzle either with or without a ready-made matrix.

If you have a 9x9 nested array already, for example if you're using the gem in the context of a web app where that formatted object comes over from the front end, you can create a new puzzle with that array. Note that empty spaces are represented by nil.

$ matrix = [ [nil, 7, nil, nil, nil, nil, 5, nil, nil],
             [nil, nil, nil, nil, 5, 1, nil, nil, nil],
             [nil, nil, nil, 3, 7, 9, 2, 6, 8],
             [1, 2, nil, nil, 8, nil, 4, nil, 6],
             [nil, 4, nil, nil, nil, nil, nil, 9, nil],
             [9, nil, 3, nil, 2, nil, nil, 8, 5],
             [8, 9, 7, 2, 4, 3, nil, nil, nil],
             [nil, nil, nil, 6, 1, nil, nil, nil, nil],
             [nil, nil, 2, nil, nil, nil, nil, 4, nil] ]
$ puzzle = ILoveSudoku.new(matrix)
$ puts puzzle.unsolved_string
.7.|...|5..
...|.51|...
...|379|268
---+---+---
12.|.8.|4.6
.4.|...|.9.
9.3|.2.|.85
---+---+---
897|243|...
...|61.|...
..2|...|.4.

If you're playing with the gem in your terminal, it probably makes more sense to create a puzzle with no matrix and manually input the separate lines. See #edit_row for details.

$ puzzle = ILoveSudoku.new
$ puts puzzle.unsolved_string
...|...|...
...|...|...
...|...|...
---+---+---
...|...|...
...|...|...
...|...|...
---+---+---
...|...|...
...|...|...
...|...|...

####edit_row(row_number, string) This method takes the row number (indexed from 0) and a string of periods and integers and overwrites the existing row. This is a good way to manually enter a puzzle in your command line.

$ puzzle = ILoveSudoku.new
$ puzzle.edit_row(1, "3..4..678")
$ puts puzzle.unsolved_string
...|...|...
3..|4..|678
...|...|...
---+---+---
...|...|...
...|...|...
...|...|...
---+---+---
...|...|...
...|...|...
...|...|...

####unsolved_string and #unsolved_matrix Returns the current state of the puzzle input in string or matrix format.

####solved_string and #solved_matrix Returns the solved puzzle in string or matrix format.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/dsberger/i_love_sudoku.

License

The gem is available as open source under the terms of the MIT License.