module Sudoku::Generator

Permet de generer rapidement un sudoku

Public Instance Methods

make_diagonal() click to toggle source

Remplit la diagonale descendante de 1 a self.size

@return [self]
# File lib/sudoku/generator.rb, line 6
def make_diagonal
  each{|x,y,val| set x,x,x+1 if x==y}
  self
end
make_valid() click to toggle source

Remplit tout le sudoku de maniere a ce qu'il soit valide

@return [self]
# File lib/sudoku/generator.rb, line 13
def make_valid
  pattern = Array.new(size){|i| i+1}.shuffle
  size.times do |y|
    size.times do |x|
      set x, y, pattern[x]
    end
    base.times{|i| pattern.push pattern.shift}
    pattern.push pattern.shift if base - (y%base) == 1
  end
  self
end
make_valid_incomplete(seed=2) click to toggle source

Cree un sudoku valide et laisse des cases vides au hasard

@param [Fixnum] seed Le parametre a utiliser pour rand()
@return [self]
# File lib/sudoku/generator.rb, line 28
def make_valid_incomplete seed=2
  pattern = Array.new(size){|i| i+1}.shuffle
  size.times do |y|
    size.times do |x|
      set x, y, pattern[x] if rand(seed) == seed-1
    end
    base.times{|i| pattern.push pattern.shift}
    pattern.push pattern.shift if base - (y%base) == 1
  end
  self
end