🔨 rename package compute -> solver
This commit is contained in:
28
packages/solver/getBestRoute.ts
Normal file
28
packages/solver/getBestRoute.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import { copyGrid } from "@snk/types/grid";
|
||||
import { createOutside } from "./outside";
|
||||
import { clearResidualColoredLayer } from "./clearResidualColoredLayer";
|
||||
import { clearCleanColoredLayer } from "./clearCleanColoredLayer";
|
||||
import type { Color, Grid } from "@snk/types/grid";
|
||||
import type { Snake } from "@snk/types/snake";
|
||||
|
||||
export const getBestRoute = (grid0: Grid, snake0: Snake) => {
|
||||
const grid = copyGrid(grid0);
|
||||
const outside = createOutside(grid);
|
||||
const chain: Snake[] = [snake0];
|
||||
|
||||
for (const color of extractColors(grid)) {
|
||||
if (color > 1)
|
||||
chain.unshift(
|
||||
...clearResidualColoredLayer(grid, outside, chain[0], color)
|
||||
);
|
||||
chain.unshift(...clearCleanColoredLayer(grid, outside, chain[0], color));
|
||||
}
|
||||
|
||||
return chain.reverse();
|
||||
};
|
||||
|
||||
const extractColors = (grid: Grid): Color[] => {
|
||||
// @ts-ignore
|
||||
let maxColor = Math.max(...grid.data);
|
||||
return Array.from({ length: maxColor }, (_, i) => (i + 1) as Color);
|
||||
};
|
||||
Reference in New Issue
Block a user