Sha256: 51d0142e4f30d2d91e62bccf10f829cdd9b56ab1735ef9473d9fa1b6f4e2edf1
Contents?: true
Size: 979 Bytes
Versions: 2
Compression:
Stored size: 979 Bytes
Contents
require 'tree' class TreeSolver attr_reader :maze def initialize(maze) @maze = maze end def paths(*coords) current_cell = @maze.cell *coords root_node = current_node = Tree::TreeNode.new(current_cell.coords.map(&:to_s).join(','), current_cell) visited_cells = [current_cell] stack_node = [] stack_cell = [] while visited_cells.size != @maze.total_cells 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.coords.map(&:to_s).join(','), current_cell) current_node << new_node current_node = new_node end root_node end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rmaze-2.1.0 | lib/solver/tree_solver.rb |
rmaze-2.0.0 | lib/solver/tree_solver.rb |