UNPKG

fauton

Version:

A library to test any finite automaton with arbitrary alphabets

40 lines (39 loc) 1.86 kB
"use strict"; 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;