for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php declare(strict_types=1);
namespace Stratadox\PuzzleSolver\Puzzle\SlidingPuzzle;
use Stratadox\PuzzleSolver\Heuristic;
use Stratadox\PuzzleSolver\Puzzle;
use function assert;
use function levenshtein;
final class LevenshteinHeuristic implements Heuristic
{
public function estimate(Puzzle $puzzle): float
assert($puzzle instanceof SlidingPuzzle);
return levenshtein(
$puzzle->goalState(),
$puzzle->currentState(),
100,
1,
100
);
}