sudokuhandler 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/sudoku/logic.rb CHANGED
@@ -235,7 +235,7 @@ module Sudoku
235
235
  unless size == other.size
236
236
  raise NotCompatibleError, "Cannot import a #{other.base} sudoku in a #{base} sudoku"
237
237
  end
238
- other.each{|x,y,v| set x,y,v}
238
+ other.each{|x,y,v| set x, y, v}
239
239
  self
240
240
  end
241
241
  end
data/lib/sudoku/solver.rb CHANGED
@@ -138,11 +138,11 @@ module Sudoku
138
138
  res
139
139
  end
140
140
 
141
- #Resoud le sudoku par backtracking
142
- # @return (Fixnum) le nombre de nombres ajoutés dans la grille
141
+ # Resoud le sudoku par backtracking
142
+ # @return [Fixnum] le nombre de nombres ajoutés dans la grille
143
143
  def solve_backtrack!
144
144
  res = solve_naive!
145
-
145
+
146
146
  each do |x, y, cur_val|
147
147
  next unless cur_val.zero?
148
148
  p = possibilities x, y
@@ -160,6 +160,16 @@ module Sudoku
160
160
  res
161
161
  end
162
162
 
163
+ # Renvoie un nouveau sudoku reolu par backtracking
164
+ # Si le temps de solution depasse timeout, le solveur est arrete
165
+ # @param [Fixnum] timeout Le temps maximum en secondes
166
+ # @return [Sudoku::Grid] Le sudoku resolu, ou en partie resolu si le timeout a joue
167
+ def solve_backtrack_timeout timeout
168
+ res = self.clone
169
+ Thread.new(res){|s| s.solve_backtrack!}.join(timeout)
170
+ res
171
+ end
172
+
163
173
  #Enleve les nombres qui sont impossibles de la grille
164
174
  # @return (Fixnum) le nombre de nombres enlevés
165
175
  def remove_impossible!
@@ -1,3 +1,3 @@
1
1
  module Sudoku
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
data/tests/test_sudoku.rb CHANGED
@@ -139,7 +139,7 @@ module GridTest
139
139
 
140
140
  def test_import
141
141
  s = create.make_valid
142
- s2 = Sudoku::Sn.new(s.size)
142
+ s2 = Sudoku::Sn.new(s.base).import s
143
143
  s2.each do |x,y,v|
144
144
  assert_equal s.get(x,y), v, "Importation d'une grille vers grille generique, cellules egales"
145
145
  end
@@ -190,11 +190,10 @@ module SolverTest
190
190
  assert s.complete?
191
191
  end
192
192
 
193
- def test_solve_backtrack
193
+ def test_solve_backtrack_timeout
194
194
  s = create.make_valid_incomplete
195
- t = Thread.new(s){|sudoku| sudoku.solve_backtrack!}
196
- t.join SOLVER_TIMEOUT
197
- assert s.complete?, "Toujours une solution en backtracking en max. #{SOLVER_TIMEOUT}s"
195
+ s2 = s.solve_backtrack_timeout(SOLVER_TIMEOUT)
196
+ assert s2.complete?, "Toujours une solution en backtracking en max. #{SOLVER_TIMEOUT}s"
198
197
  end
199
198
  end
200
199
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sudokuhandler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-24 00:00:00.000000000 Z
12
+ date: 2012-01-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake-compiler
16
- requirement: &8703760 !ruby/object:Gem::Requirement
16
+ requirement: &8669870 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *8703760
24
+ version_requirements: *8669870
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: yard
27
- requirement: &8703490 !ruby/object:Gem::Requirement
27
+ requirement: &8669630 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *8703490
35
+ version_requirements: *8669630
36
36
  description: Highly optimised Sudoku objects and mixins for Ruby
37
37
  email: titouanchristophe@gmail.com
38
38
  executables: []