diff --git a/Exercises/1-random.js b/Exercises/1-random.js index ef5ccaf..d082376 100644 --- a/Exercises/1-random.js +++ b/Exercises/1-random.js @@ -1,9 +1,7 @@ 'use strict'; -const random = (min, max) => { - // Generate random Number between from min to max - // Use Math.random() and Math.floor() - // See documentation at MDN -}; +const random = (min, max) => //Generate random Number between from min to max; + //Solution is not short + Math.floor(Math.random() * (max - min) + min); module.exports = { random }; diff --git a/Exercises/2-key.js b/Exercises/2-key.js index ba7e53a..96f761b 100644 --- a/Exercises/2-key.js +++ b/Exercises/2-key.js @@ -1,9 +1,12 @@ 'use strict'; const generateKey = (length, possible) => { - // Generate string of random characters - // Use Math.random() and Math.floor() - // See documentation at MDN + let result = ''; + while (result.length < length) { + const randomIdx = Math.floor(Math.random() * possible.length); + result += possible[randomIdx]; + } + return result; }; module.exports = { generateKey }; diff --git a/Exercises/3-ip.js b/Exercises/3-ip.js index 5b448dd..4903591 100644 --- a/Exercises/3-ip.js +++ b/Exercises/3-ip.js @@ -1,11 +1,6 @@ 'use strict'; -const ipToInt = (ip = '127.0.0.1') => { - // Parse ip address as string, for example '10.0.0.1' - // to ['10', '0', '0', '1'] to [10, 0, 0, 1] - // and convert to Number value 167772161 with sitwise shift - // (10 << 8 << 8 << 8) + (0 << 8 << 8) + (0 << 8) + 1 === 167772161 - // Use Array.prototype.reduce of for loop -}; +const ipToInt = (ip = '127.0.0.1') => ip.split('.').reverse() + .reduce((sum, cur, i) => sum + (Number(cur) << i * 8), 0); module.exports = { ipToInt }; diff --git a/Exercises/4-methods.js b/Exercises/4-methods.js index c1038e8..5132b56 100644 --- a/Exercises/4-methods.js +++ b/Exercises/4-methods.js @@ -1,21 +1,12 @@ 'use strict'; -const methods = iface => { - // Introspect all properties of iface object and - // extract function names and number of arguments - // For example: { - // m1: x => [x], - // m2: function (x, y) { - // return [x, y]; - // }, - // m3(x, y, z) { - // return [x, y, z]; - // } - // will return: [ - // ['m1', 1], - // ['m2', 2], - // ['m3', 3] - // ] -}; +const methods = iface => Object.entries(iface) + .reduce((res, cur) => { + const value = cur[1]; + if (typeof value === 'function') { + res.push([cur[0], value.length]); + } + return res; + }, []); module.exports = { methods };