Sha256: 067fe86da10e2a9542b51368479649486e3c32271634708ac93052292715744c
Contents?: true
Size: 999 Bytes
Versions: 1
Compression:
Stored size: 999 Bytes
Contents
require 'tree' class TreeSolver attr_reader :maze def initialize(maze) @maze = maze end def paths(start_x, start_y) current_cell = @maze.cell(start_x, start_y) root_node = current_node = Tree::TreeNode.new("#{current_cell.x},#{current_cell.y}", current_cell) visited_cells = [current_cell] stack_node = [] stack_cell = [] while visited_cells.size != @maze.width * @maze.height neighbours = current_cell.connected_neighbours unvisited_neighbours = neighbours - visited_cells if unvisited_neighbours.size == 0 current_cell = stack_cell.pop current_node = stack_node.pop elsif unvisited_neighbours.size >= 1 current_cell = unvisited_neighbours.shift stack_cell += unvisited_neighbours stack_node += [current_node]*unvisited_neighbours.size end visited_cells << current_cell new_node = Tree::TreeNode.new("#{current_cell.x},#{current_cell.y}", current_cell) current_node << new_node current_node = new_node end root_node end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rmaze-1.5.0 | lib/solver/tree_solver.rb |