UNPKG

@kitten-science/kitten-engineers

Version:
26 lines 893 B
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