module MazeCrosser::BasicGridValidator

Module responsible for aplying basic maze validations.

Constants

ALLOWED_CHARACTERS

Public Instance Methods

valid?(maze) click to toggle source
# File lib/maze_crosser/basic_grid_validator.rb, line 11
def valid?(maze)
  only_valid_characters?(maze) && \
    one_start_and_one_end?(maze) && \
    rectangular?(maze)
end

Private Instance Methods

one_start_and_one_end?(maze) click to toggle source
# File lib/maze_crosser/basic_grid_validator.rb, line 23
def one_start_and_one_end?(maze)
  flat_maze = maze.flatten

  flat_maze.count { |c| c == ALLOWED_CHARACTERS[:goal] } == 1 &&
    flat_maze.count { |c| c == ALLOWED_CHARACTERS[:start] } == 1
end
only_valid_characters?(maze) click to toggle source
# File lib/maze_crosser/basic_grid_validator.rb, line 19
def only_valid_characters?(maze)
  maze.flatten.reject { |c| ALLOWED_CHARACTERS.values.include? c }.empty?
end
rectangular?(maze) click to toggle source
# File lib/maze_crosser/basic_grid_validator.rb, line 30
def rectangular?(maze)
  row_size = maze[0].size
  maze.select { |row| row.size == row_size }.size == maze.size
end