Skip to content

scottbedard/pathfinder

Repository files navigation

@bedard/pathfinder

Build status Codecov NPM Bundle size License

This project is a simple javascript implementation of the A* search algorithm. It was mainly built to get my feet wet with Solid.js.

View sandbox →

Basic usage

Use findPath to find the shortest path between two points within a two-dimensional matrix.

import { findPath } from '@bedard/pathfinder'

const maze = [
  [0, 0, 0, 0, 0],
  [1, 1, 1, 1, 0],
  [0, 0, 0, 0, 0],
  [0, 1, 1, 1, 1],
  [0, 0, 0, 0, 0],
]

const solution = findPath({
  data: maze,
  from: { row: 0, col: 0 },
  to: { row: 4, col: 4 },
})

console.log(solution) // [{ row, col }, ...]

To optimize the solution, an optional heuristic function can be used. Included with this library are euclidean and manhattan distance helpers. When no heuristic function is defined, it will use Dijkstra's algorithm.

import { euclidean, findPath } from '@bedard/pathfinder'

findPath({
  data,
  from,
  to,
  heuristic: (current, next) => euclidean(next, to), // <- prefer steps towards the target
})

License

MIT

Copyright (c) 2024-present, Scott Bedard