2016 Update
This commit is contained in:
parent
948b86eafa
commit
dcf5d15da3
7965 changed files with 139854 additions and 31002 deletions
|
|
@ -1,20 +1,19 @@
|
|||
class Queen
|
||||
def initialize(num=8)
|
||||
@num = num
|
||||
end
|
||||
attr_reader :count
|
||||
|
||||
def solve(out=true)
|
||||
def initialize(num=8, out=true)
|
||||
@num = num
|
||||
@out = out
|
||||
@row = *0...@num
|
||||
@frame = "+-" + "--" * @num + "+"
|
||||
@count = 0
|
||||
add = Array.new(2 * @num - 1, true)
|
||||
sub = Array.new(2 * @num - 1, true)
|
||||
_solve([], add, sub)
|
||||
@count
|
||||
add = Array.new(2 * @num - 1, true) # \ direction check
|
||||
sub = Array.new(2 * @num - 1, true) # / direction check
|
||||
solve([], add, sub)
|
||||
end
|
||||
|
||||
def _solve(row, add, sub)
|
||||
private
|
||||
def solve(row, add, sub)
|
||||
y = row.size
|
||||
if y == @num
|
||||
print_out(row) if @out
|
||||
|
|
@ -23,7 +22,7 @@ class Queen
|
|||
(@row-row).each do |x|
|
||||
next unless add[x+y] and sub[x-y]
|
||||
add[x+y] = sub[x-y] = false
|
||||
_solve(row+[x], add, sub)
|
||||
solve(row+[x], add, sub)
|
||||
add[x+y] = sub[x-y] = true
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
(1..6).each do |n|
|
||||
puzzle = Queen.new(n)
|
||||
puts " #{n} Queen : #{puzzle.solve}"
|
||||
puts " #{n} Queen : #{puzzle.count}"
|
||||
end
|
||||
|
||||
(7..12).each do |n|
|
||||
puzzle = Queen.new(n)
|
||||
puts " #{n} Queen : #{puzzle.solve(false)}" # no display
|
||||
puzzle = Queen.new(n, false) # do not display
|
||||
puts " #{n} Queen : #{puzzle.count}"
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue