ddl-manager
Version:
store postgres procedures and triggers in files
50 lines • 1.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.findMinimalRoute = void 0;
function findMinimalRoute(params) {
const allRoutes = [];
findAllRoutes({
graph: params.graph,
start: params.start,
end: params.end,
allRoutes,
prevRoute: []
});
let minimalRoute = allRoutes[0];
for (let i = 1, n = allRoutes.length; i < n; i++) {
const route = allRoutes[i];
if (route.length < minimalRoute.length) {
minimalRoute = route;
}
}
return minimalRoute;
}
exports.findMinimalRoute = findMinimalRoute;
function findAllRoutes(params) {
const currentRoute = [...params.prevRoute, params.start];
if (params.start === params.end) {
params.allRoutes.push(currentRoute);
return;
}
for (const points of params.graph) {
const lineHasStart = points.includes(params.start);
if (!lineHasStart) {
continue;
}
const nextPoints = points.filter(point => point !== params.start);
for (const nextPoint of nextPoints) {
const pointExistsInCurrentRoute = currentRoute.includes(nextPoint);
if (pointExistsInCurrentRoute) {
continue;
}
findAllRoutes({
graph: params.graph,
start: nextPoint,
end: params.end,
allRoutes: params.allRoutes,
prevRoute: currentRoute
});
}
}
}
//# sourceMappingURL=findMinimalRoute.js.map