Module: Xudoku::Utils

Included in:
Board, Deducer, Solver
Defined in:
lib/xudoku/utils.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#bits_to_numbers(bits) ⇒ Object



20
21
22
23
24
25
26
# File 'lib/xudoku/utils.rb', line 20

def bits_to_numbers(bits)
  numbers = []
  9.times do |i|
    numbers << i if ((1 << i) & bits).positive?
  end
  numbers
end

#guesses_from(position, numbers) ⇒ Object



16
17
18
# File 'lib/xudoku/utils.rb', line 16

def guesses_from(position, numbers)
  numbers.map { |n| [position, n] }
end

#pick_better(current_guess, current_count, new_guesses) ⇒ Object



8
9
10
11
12
13
14
# File 'lib/xudoku/utils.rb', line 8

def pick_better(current_guess, current_count, new_guesses)
  return [new_guesses, 1] if current_guess.nil?
  return [new_guesses, 1] if new_guesses.size < current_guess.size
  return [current_guess, current_count] if new_guesses.size > current_guess.size

  [current_guess, current_count + 1]
end

#pos(x, y, axis) ⇒ Object



28
29
30
31
32
33
34
35
36
37
# File 'lib/xudoku/utils.rb', line 28

def pos(x, y, axis)
  case axis
  when Axis::ROW
    x * 9 + y
  when Axis::COLUMN
    y * 9 + x
  when Axis::BOX
    ([0, 3, 6, 27, 30, 33, 54, 57, 60][x] + [0, 1, 2, 9, 10, 11, 18, 19, 20][y])
  end
end