@rohitbakoliya/test-gen
Version:
Quickly generate test cases for stress testing using interactive CLI.
39 lines (38 loc) • 1.34 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const Random_1 = __importDefault(require("../../helper/Random"));
const ShuffleArray_1 = __importDefault(require("../ShuffleArray"));
const GraphUtil_1 = __importDefault(require("../../helper/GraphUtil"));
/**
* Generates Random unweighted Tree
* @param nodesRange node range [minNodes, MaxNodes]
* @returns edge set
*/
const RndUnweightedTree = ({ nodesRange }) => {
const nodes = Random_1.default({ min: nodesRange[0], max: nodesRange[1] });
const t = new GraphUtil_1.default(nodes);
const p = [];
const permutation = [];
for (let i = 0; i < nodes; i++) {
p.push(Random_1.default({ min: 0, max: Math.max(0, i - 1) }));
permutation.push(i);
}
ShuffleArray_1.default(permutation);
for (let i = 1; i < nodes; i++) {
t.addEdge(permutation[i] + 1, permutation[p[i]] + 1);
}
t.suffleEdges();
let output = nodes + '\n';
t.edges.forEach(function (edge) {
output += edge.join(' ') + '\n';
});
return {
result: t.edges,
nodes,
output,
};
};
exports.default = RndUnweightedTree;