diff --git a/challenges/left-pad/solutions/javascript/function/README.md b/challenges/left-pad/solutions/javascript/function/README.md new file mode 100644 index 0000000..d37265d --- /dev/null +++ b/challenges/left-pad/solutions/javascript/function/README.md @@ -0,0 +1,3 @@ +# left-pad/javascript/function + +Created by [@Divlo](https://github.com/Divlo) on 21 May 2023. diff --git a/challenges/left-pad/solutions/javascript/function/package.json b/challenges/left-pad/solutions/javascript/function/package.json new file mode 100644 index 0000000..3dbc1ca --- /dev/null +++ b/challenges/left-pad/solutions/javascript/function/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/challenges/left-pad/solutions/javascript/function/solution.js b/challenges/left-pad/solutions/javascript/function/solution.js new file mode 100644 index 0000000..568a696 --- /dev/null +++ b/challenges/left-pad/solutions/javascript/function/solution.js @@ -0,0 +1,40 @@ +import readline from 'node:readline' + +/** + * + * @param {string} string + * @param {number} resultLength + * @param {string} padString + * @returns {string} + */ +const leftPad = (string, resultLength, padString) => { + resultLength = resultLength - string.length + if (resultLength <= 0) { + return string + } + let pad = '' + while (resultLength !== 0) { + if (resultLength & 1) { + pad += padString + } + resultLength >>= 1 + if (resultLength) { + padString += padString + } + } + return pad + string +} + +const solution = () => { + console.log(leftPad(input[0], Number(input[1]), input[2])) +} + +const input = [] +const readlineInterface = readline.createInterface({ + input: process.stdin, + output: process.stdout +}) +readlineInterface.on('line', (value) => { + input.push(value) +}) +readlineInterface.on('close', solution)