adamayoung/maze-solver
A Swift Package to solve mazes
Example usage
Maze Square Type
Define an enum to describe each square type, which implements MazeSquareType.
e.g.
import Foundation
import MazeSolver
enum MyMazeSquareType: Character, MazeSquareType {
case empty = "."
case wall = "#"
case start = "S" // Optional
case end = "E" // Optional
var isEmpty: Bool {
self == .empty || self == .start || self == .end
}
var isWall: Bool {
self == .wall
}
// Optional
var isStart: Bool {
self == .start
}
// Optional
var isEnd: Bool {
self == .end
}
}Initialise
A maze can be initialised in several ways.
Array of Squares
let maze = try Maze<MyMazeSquareType>(
squares: [
[
MazeSquare(type: .empty, position: Position(x: 0, y: 0)),
...
],
[
MazeSquare(type: .wall, position: Position(x: 0, y: 1)),
...
],
...
]
)Input string
let input = """
######
#...E#
#.##.#
#S.#.#
######
"""
let maze = try Maze<MyMazeSquareType>(input: input)File
let mazeFileURL: URL = ...
let maze = try Maze<MyMazeSquareType>(fileURL: mazeFileURL)Finding a path
let result = maze.findShortestPath()
print(result.steps)
print(result.path)Package Metadata
Repository: adamayoung/maze-solver
Stars: 0
Forks: 1
Open issues: 0
Default branch: main
Primary language: swift
README: README.md