scottbedard / pathfinder

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

@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

About

License:MIT License


Languages

Language:TypeScript 84.6%Language:JavaScript 7.7%Language:HTML 7.4%Language:CSS 0.3%