{"ScriptPreparationCode":null,"TestCases":[{"Name":"Simple for loop","Code":"function repeatify(string, repetitions) {\r\n if (repetitions \u003C 0 || repetitions === Infinity) {\r\n throw new RangeError(\u0027Invalid repetitions number\u0027);\r\n }\r\n \r\n let result = \u0027\u0027;\r\n \r\n for (let i = 0; i \u003C repetitions; i\u002B\u002B) {\r\n result \u002B= string;\r\n }\r\n \r\n return result;\r\n}\r\n\r\nrepeatify(\u0027*\u0027, 10000);","IsDeferred":false},{"Name":"Extended for loop","Code":"function repeatify2(string, repetitions) {\r\n if (repetitions \u003C 0 || repetitions === Infinity) {\r\n throw new RangeError(\u0027Invalid repetitions number\u0027);\r\n }\r\n \r\n const isEven = repetitions % 2 === 0;\r\n const iterations = Math.floor(repetitions / 2);\r\n const stringTwice = string \u002B string;\r\n \r\n let result = \u0027\u0027;\r\n \r\n for (let i = 0; i \u003C iterations; i\u002B\u002B) {\r\n result \u002B= stringTwice;\r\n }\r\n \r\n if (!isEven) {\r\n result \u002B= string;\r\n }\r\n \r\n return result;\r\n}\r\n\r\nrepeatify2(\u0027*\u0027, 10000);","IsDeferred":false},{"Name":"Log based","Code":"function repeatify3(string, repetitions) {\r\n if (repetitions \u003C 0 || repetitions === Infinity) {\r\n throw new RangeError(\u0027Invalid repetitions number\u0027);\r\n }\r\n \r\n const cache = new Map();\r\n \r\n function repeat(string, repetitions) {\r\n if (repetitions === 0) {\r\n return \u0027\u0027;\r\n }\r\n \r\n const log = Math.floor(Math.log2(repetitions));\r\n let result;\r\n \r\n if (cache.has(log)) {\r\n result = cache.get(log);\r\n } else {\r\n result = string;\r\n \r\n for (let i = 1; i \u003C= log; i\u002B\u002B) {\r\n result \u002B= result;\r\n cache.set(i, result);\r\n }\r\n }\r\n \r\n const repetitionsProcessed = Math.pow(2, log);\r\n const repetitionsLeft = repetitions - repetitionsProcessed;\r\n \r\n return result \u002B repeat(string, repetitionsLeft);\r\n }\r\n \r\n return repeat(string, repetitions);\r\n}\r\n\r\nrepeatify3(\u0027*\u0027, 10000);","IsDeferred":false},{"Name":"Array approach","Code":"function repeatify4(string, repetitions) {\r\n if (repetitions \u003C 0 || repetitions === Infinity) {\r\n throw new RangeError(\u0027Invalid repetitions number\u0027);\r\n }\r\n \r\n return Array(repetitions \u002B 1).join(string);\r\n}\r\n\r\nrepeatify4(\u0027*\u0027, 10000);","IsDeferred":false}]}