Contents

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