module Sudoku

Constants

ADAPTERS

Adaptateurs de base

VERSION

Public Class Methods

[](n)
Alias for: best_class_for
[]=(zone, adapter)
Alias for: define_class_for
best_class_for(n) click to toggle source

Renvoie la classe de la première implémentation dont la zone comprend n

@param [Fixnum] n La base du sudoku
@return [Class] La première classe dont la zone comprend n, ou la première classe
                donc la zone est 0 (zone par défaut)
# File lib/sudoku.rb, line 106
def best_class_for n
  n = n.to_i
  ADAPTERS.each do |ad|
    zone    = ad[0]
    adapter = ad[1]
    
    return adapter if zone == 0
    
    case n
    when zone 
      return adapter
    end
  end
end
Also aliased as: []
best_grid_for(n=3) click to toggle source

Renvoie une instance de la meilleure implémentation pour un sudoku de base n

@param [Fixnum] n La base du sudoku
@return [Grid]
# File lib/sudoku.rb, line 133
def best_grid_for n=3
  n = n.to_i
  best_class_for(n).new n
end
Also aliased as: new
define_class_for(zone, adapter) click to toggle source

Ajoute un adapteur pour la zone definie.

@param [Range, Fixnum] zone La zone de validité de l'adapteur
@param [Class] adapter L'adaptateur à ajouter
# File lib/sudoku.rb, line 125
def define_class_for zone, adapter
  ADAPTERS.unshift [zone, adapter]
end
Also aliased as: []=
new(n=3)
Alias for: best_grid_for
parse(str) click to toggle source

Renvoie un nouveau Sudoku a partir de la chaine donnee

@param [String] str Une chaine Sutxt
@return [Grid] Un sudoku rempli avec les données Sutxt
# File lib/sudoku.rb, line 142
def parse str
  unless str =~ /(\d+):(.+);/
    raise MalformedSutxtError, "It doesn't seem to be a sutxt line..."
  end

  base = $1.to_i
  return best_grid_for(base).load(str)
end