class MazeCrosser::MazeSolver

Class responsible for solving a maze, by using a given algorithm or a cache.

maze_solver = MazeSolver.new(maze, algorithm, cache_provider) maze_solver.solve

Public Class Methods

new(maze, algorithm, cache_provider) click to toggle source
# File lib/maze_crosser/maze_solver.rb, line 8
def initialize(maze, algorithm, cache_provider)
  @algorithm = algorithm
  @cache_provider = cache_provider
  @maze = maze
end

Public Instance Methods

solve() click to toggle source
# File lib/maze_crosser/maze_solver.rb, line 14
def solve
  if @cache_provider.get_solution(@maze.grid)
    return @cache_provider.get_solution(@maze.grid)
  end

  solution = @algorithm.run
  @cache_provider.add(@maze.grid, solution)
  solution
end