const allNames: string[] = []; for (let c1 = 0; c1 < 26; c1++) { const letter1 = String.fromCharCode(c1 + 65); for (let c2 = 0; c2 < 26; c2++) { const letter2 = String.fromCharCode(c2 + 65); for (let n1 = 0; n1 < 10; n1++) { const number1 = String(n1); for (let n2 = 0; n2 < 10; n2++) { const number2 = String(n2); for (let n3 = 0; n3 < 10; n3++) { const number3 = String(n3); allNames.push(`${letter2}${letter1}${number1}${number2}${number3}`); } } } } } let possibleNames = [...allNames]; const generateName = (): string => { const index = Math.floor(Math.random() * possibleNames.length); const name = possibleNames[index]; possibleNames.splice(index, 1); return name; }; export class Robot { private _name = ""; constructor() { this.resetName(); } public get name(): string { return this._name; } public resetName(): void { this._name = generateName(); } public static releaseNames(): void { possibleNames = [...allNames]; } }