NAME
Games::Sudoku::Component::Controller
SYNOPSIS
use Games::Sudoku::Component::Controller;
# Let's create a default 9x9 puzzle.
my $c = Games::Sudoku::Component::Controller->new;
# Solve the (currently blank) puzzle
$c->solve;
# Then, make blanks
$c->make_blank(50);
# Voila! Let's see.
$c->table->as_HTML;
# If all you want is the result, just solve.
$c->solve;
# If you want to do something, then try this loop.
until ($c->status->is_solved) {
# Solve only one step forward (or backward)
$c->next;
# do something, such as updating a session file, printing
# a result, etc.
}
DESCRIPTION
This is a main controller.
ACCESSOR
table
history
status
Returns Games::Sudoku::Component::Table, Games::Sudoku::::Component::Controller::History, Games::Sudoku::::Component::Controller::Status object respectively.
METHODS
new (hash or hashref)
Creates an object. Options are:
- size
-
Specifies the size of a puzzle board (table). The default is 9. Actually this value is assumed to be a square of another integer.
- block_width
- block_height
-
Specify the width/height of internal blocks, respectively. (
block_width
xblock_height
=size
)
load (string or hash or hashref)
Loads and parses puzzle data from file or string. If there is only one argument, it is assumed to be raw puzzle data.
$sudoku->load(<<'EOT');
4 . . . . 1
2 1 . . 5 .
3 5 1 2 6 .
1 . . . 3 .
6 . . 5 1 2
5 . . . 4 6
EOT
If the argument seems to be a hash, data will be loaded from $hash{filename} (or $hash{file}, for short).
next
Does what should be done next, i.e. finds a cell that has least value possibilities, decides which value should be set (or should be tried), rewinds a step while rewinding.
find_and_set
Finds a cell that has least value possibilities and decides which value should be set (or should be tried).
set (row, column, value)
Tries to set a value of cell(row, column) to value. Though the value is not allowed in fact, the cell stores the value temporarily.
find_hints
Finds all the cells that have least value possibilities.
solve
Solves the puzzle that you generated or loaded. You can solve a 'blank' puzzle.
make_blank (integer)
Makes specified number of blanks for the (solved) puzzle randomly. This is useful but the puzzles made through this method may have several solutions.
rewind
Rewinds a stacked step. Mainly used when the solver is stuck. However, this is only useful when possible solutions are few. When there are too much solutions, rewind_all
may be a better choice.
rewind_all
Rewinds all the steps stacked in the history stack, i.e. restores the generated or loaded puzzle afresh. Mainly used when the solver is stuck several times. As next
(or find_and_set
) sets values a bit randomly, it tends to be faster to retry from the start than to rewind again and again.
clear
Clears all (the generated or loaded puzzle, and history stack).
SEE ALSO
- Games::Sudoku::Component
- Games::Sudoku::Component::Controller::History
- Games::Sudoku::Component::Controller::Loader
- Games::Sudoku::Component::Controller::Status
- Games::Sudoku::Component::Table
AUTHOR
Kenichi Ishigaki, <ishigaki@cpan.org>
COPYRIGHT AND LICENSE
Copyright (C) 2006 by Kenichi Ishigaki
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.