sudokuhandler 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
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: []