fauton
Version:
A library to test any finite automaton with arbitrary alphabets
40 lines (39 loc) • 1.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.GenerateString = void 0;
const generateRandomNumber_1 = require("../utils/generateRandomNumber");
class GenerateString {
static generateAllCombosWithinLength(alphabet, maxLength, startLength, cb) {
const generatedStrings = new Set();
function generateAllKLength(generatedString, stringLength) {
if (stringLength === 0) {
generatedStrings.add(generatedString);
if (cb)
cb(generatedString);
return;
}
for (let i = 0; i < alphabet.length; i += 1) {
generateAllKLength(generatedString + alphabet[i], stringLength - 1);
}
}
for (let length = startLength; length <= maxLength; length += 1) {
generateAllKLength('', length);
}
return Array.from(generatedStrings);
}
static generateRandomUnique(total, alphabet, minLength, maxLength, initialInputStrings) {
const uniqueRandomInputStrings = new Set(initialInputStrings ?? []);
while (uniqueRandomInputStrings.size + (initialInputStrings ?? []).length < total) {
const inputStringLength = (0, generateRandomNumber_1.generateRandomNumber)(minLength, maxLength);
let randomInputString = '';
for (let index = 0; index < inputStringLength; index += 1) {
randomInputString += alphabet[(0, generateRandomNumber_1.generateRandomNumber)(0, alphabet.length - 1)];
}
if (!uniqueRandomInputStrings.has(randomInputString)) {
uniqueRandomInputStrings.add(randomInputString);
}
}
return Array.from(uniqueRandomInputStrings);
}
}
exports.GenerateString = GenerateString;