@kitten-science/kitten-engineers
Version:
26 lines • 893 B
JavaScript
import { Buildings, Resources } from "@kitten-science/kitten-scientists/types/index.js";
export const Solutions = [...Buildings, ...Resources];
export class GraphSolver {
operators;
constructor(operators) {
this.operators = operators;
}
solve(node, root = node, parents = []) {
for (const operator of this.operators) {
if (!operator.solves.some(solution => node.requires.includes(solution))) {
continue;
}
node.children.add(operator);
if (root.ancestors.has(operator)) {
continue;
}
for (const parent of parents) {
parent.ancestors.add(operator);
}
root.ancestors.add(operator);
this.solve(operator, root, [...parents, node]);
}
return root;
}
}
//# sourceMappingURL=GraphSolver.js.map