From 859b2a4a9352ca5247acf5b69f3975b5b5b83915 Mon Sep 17 00:00:00 2001 From: Musa Dango Date: Mon, 25 Mar 2024 20:58:04 +0100 Subject: [PATCH 1/9] musaddango --- Solutions/musaddango.js | 139 ++++++++++++++++++++++++++++++++++++++++ package-lock.json | 6 +- 2 files changed, 142 insertions(+), 3 deletions(-) create mode 100644 Solutions/musaddango.js diff --git a/Solutions/musaddango.js b/Solutions/musaddango.js new file mode 100644 index 0000000..4dbaee8 --- /dev/null +++ b/Solutions/musaddango.js @@ -0,0 +1,139 @@ +const identity = (n) => n; + +const addb = (a,b) => a+b; + +const subb = (a,b) => a > b ? a-b : b-a; + +const mulb = (a,b) => a * b; + +const minb = (a,b) => a < b ? a : b; + +const maxb = (a,b) => a > b ? a : b; + +function add (...nums){ + const array = [...nums]; + let sum = 0; + for(let i = 0; i array[i]){ + smallest = array[i]; + } + } + return !smallest ? "No arguments were passed" : smallest; +} + + + +// https://github.com/zero-to-mastery/JS_Fun_Practice + + + +module.exports = { + identity, + addb, + subb, + mulb, + minb, + maxb, + add, + // sub, + mul, + min, + // max, + // addRecurse, + // mulRecurse, + // minRecurse, + // maxRecurse, + // not, + // acc, + // accPartial, + // accRecurse, + // fill, + // fillRecurse, + // set, + // identityf, + // addf, + // liftf, + // pure, + // curryb, + // curry, + // inc, + // twiceUnary, + // doubl, + // square, + // twice, + // reverseb, + // reverse, + // composeuTwo, + // composeu, + // composeb, + // composeTwo, + // compose, + // limitb, + // limit, + // genFrom, + // genTo, + // genFromTo, + // elementGen, + // element, + // collect, + // filter, + // filterTail, + // concatTwo, + // concat, + // concatTail, + // gensymf, + // gensymff, + // fibonaccif, + // counter, + // revocableb, + // revocable, + // extract, + // m, + // addmTwo, + // addm, + // liftmbM, + // liftmb, + // liftm, + // exp, + // expn, + // addg, + // liftg, + // arrayg, + // continuizeu, + // continuize, + // vector, + // exploitVector, + // vectorSafe, + // pubsub, + // mapRecurse, + // filterRecurse, +}; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 06cf353..f726029 100644 --- a/package-lock.json +++ b/package-lock.json @@ -429,9 +429,9 @@ } }, "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "engines": { "node": "*" From aa6ee1414ecc0e30583bcca13faadda7cf45daae Mon Sep 17 00:00:00 2001 From: Musa Dango Date: Mon, 25 Mar 2024 21:09:33 +0100 Subject: [PATCH 2/9] musaddango --- Solutions/musaddango.js | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/Solutions/musaddango.js b/Solutions/musaddango.js index 4dbaee8..b871630 100644 --- a/Solutions/musaddango.js +++ b/Solutions/musaddango.js @@ -19,16 +19,6 @@ function add (...nums){ return sum; }; -// function sub(...nums){ -// const array = [...nums]; -// let diff = 0; -// for (let i = 0; i maxNum){ + maxNum = array[i]; + } + } + return maxNum && typeof maxNum === "number"? maxNum : "Invalid input"; +} @@ -67,7 +64,7 @@ module.exports = { // sub, mul, min, - // max, + max, // addRecurse, // mulRecurse, // minRecurse, From 89abe66c3744bab5446366aea901653229266ef6 Mon Sep 17 00:00:00 2001 From: Musa Dango Date: Tue, 26 Mar 2024 21:48:36 +0100 Subject: [PATCH 3/9] musaddango --- Solutions/{musaddango.js => musaddango_solution.js} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename Solutions/{musaddango.js => musaddango_solution.js} (91%) diff --git a/Solutions/musaddango.js b/Solutions/musaddango_solution.js similarity index 91% rename from Solutions/musaddango.js rename to Solutions/musaddango_solution.js index b871630..9e33f46 100644 --- a/Solutions/musaddango.js +++ b/Solutions/musaddango_solution.js @@ -26,7 +26,7 @@ function mul(...nums){ for (let i = 0; i Date: Thu, 28 Mar 2024 23:26:39 +0100 Subject: [PATCH 4/9] minRecurse done --- Solutions/musaddango_solution.js | 50 ++++++++++++++++++++++++++++---- 1 file changed, 45 insertions(+), 5 deletions(-) diff --git a/Solutions/musaddango_solution.js b/Solutions/musaddango_solution.js index 9e33f46..375523e 100644 --- a/Solutions/musaddango_solution.js +++ b/Solutions/musaddango_solution.js @@ -51,6 +51,46 @@ function max(...nums){ return maxNum; } +function addRecurse(...nums){ + if(nums.length === 0) return 0; + + let newArray = nums.slice(1) + return nums[0] + addRecurse(newArray); +} + +function mulRecurse(...nums){ + if(nums.length === 0) return 1; + + let newArray = nums.slice(1); + return nums[0] * mulRecurse(...newArray); +} + +function minRecurse(...nums){ + // Base case + if(nums.length === 1){ + return nums[0]; + } + const lastSmallest = minRecurse(...nums.slice(1)); + return nums[0] < lastSmallest ? nums[0] : lastSmallest; +} + +function maxRecurse(...nums){ + //Base case + if(nums.length === 1){ + return [0]; + } + const lastBiggest = maxRecurse(...nums.slice(1)); + return nums[0] > lastBiggest ? nums[0] : lastBiggest; +} + +function not(func){ + if(!(func instanceof Function) || typeof func() !== "number"){ + return "Invalid argument."; + } + + return func() * -1; +} + module.exports = { @@ -65,11 +105,11 @@ module.exports = { mul, min, max, - // addRecurse, - // mulRecurse, - // minRecurse, - // maxRecurse, - // not, + addRecurse, + mulRecurse, + minRecurse, + maxRecurse, + not, // acc, // accPartial, // accRecurse, From c43b6efae36fd31c58fc08aed83e1bcac426982f Mon Sep 17 00:00:00 2001 From: Musa Dango Date: Fri, 12 Jul 2024 11:42:15 +0100 Subject: [PATCH 5/9] musaddango --- Solutions/musaddango_solution.js | 60 ++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/Solutions/musaddango_solution.js b/Solutions/musaddango_solution.js index 375523e..dd964cd 100644 --- a/Solutions/musaddango_solution.js +++ b/Solutions/musaddango_solution.js @@ -1,96 +1,104 @@ const identity = (n) => n; -const addb = (a,b) => a+b; +const addb = (a, b) => a + b; -const subb = (a,b) => a > b ? a-b : b-a; +const subb = (a, b) => a > b ? a - b : b - a; -const mulb = (a,b) => a * b; +const mulb = (a, b) => a * b; -const minb = (a,b) => a < b ? a : b; +const minb = (a, b) => a < b ? a : b; -const maxb = (a,b) => a > b ? a : b; +const maxb = (a, b) => a > b ? a : b; -function add (...nums){ +function add(...nums) { const array = [...nums]; let sum = 0; - for(let i = 0; i array[i]){ + for (let i = 0; i < array.length; i++) { + if (smallest > array[i]) { smallest = array[i]; } } return smallest; } -function max(...nums){ +function max(...nums) { const array = [...nums]; let maxNum = array[0]; - for(let i = 0; i maxNum){ + for (let i = 0; i < array.length; i++) { + if (array[i] > maxNum) { maxNum = array[i]; } } return maxNum; } -function addRecurse(...nums){ - if(nums.length === 0) return 0; +function addRecurse(...nums) { + if (nums.length === 0) return 0; let newArray = nums.slice(1) return nums[0] + addRecurse(newArray); } -function mulRecurse(...nums){ - if(nums.length === 0) return 1; +function mulRecurse(...nums) { + if (nums.length === 0) return 1; let newArray = nums.slice(1); return nums[0] * mulRecurse(...newArray); } -function minRecurse(...nums){ +function minRecurse(...nums) { // Base case - if(nums.length === 1){ + if (nums.length === 1) { return nums[0]; } const lastSmallest = minRecurse(...nums.slice(1)); return nums[0] < lastSmallest ? nums[0] : lastSmallest; } -function maxRecurse(...nums){ +function maxRecurse(...nums) { //Base case - if(nums.length === 1){ + if (nums.length === 1) { return [0]; } const lastBiggest = maxRecurse(...nums.slice(1)); return nums[0] > lastBiggest ? nums[0] : lastBiggest; } -function not(func){ - if(!(func instanceof Function) || typeof func() !== "number"){ +function not(func) { + if (!(func instanceof Function) || typeof func() !== "number") { return "Invalid argument."; } return func() * -1; } +function acc(func, initial) { + + return function (...args) { + return func(args, initial); + } +} + + module.exports = { @@ -110,7 +118,7 @@ module.exports = { minRecurse, maxRecurse, not, - // acc, + acc, // accPartial, // accRecurse, // fill, From f38588b86271f0ec279a21870d6a0c878a315388 Mon Sep 17 00:00:00 2001 From: Musa Dango Date: Sat, 13 Jul 2024 19:10:16 +0100 Subject: [PATCH 6/9] sub function --- Solutions/musaddango_solution.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Solutions/musaddango_solution.js b/Solutions/musaddango_solution.js index dd964cd..daf338e 100644 --- a/Solutions/musaddango_solution.js +++ b/Solutions/musaddango_solution.js @@ -20,6 +20,15 @@ function add(...nums) { }; +function sub(...args) { + + let result = args[i]; + for (let i = 0; i < args.length; i++) { + result -= args[i]; + }; +} + + function mul(...nums) { const array = [...nums]; let mult = 1; @@ -94,7 +103,7 @@ function not(func) { function acc(func, initial) { return function (...args) { - return func(args, initial); + return args.reduce((accum, current) => func(current, accum), initial); } } @@ -109,7 +118,7 @@ module.exports = { minb, maxb, add, - // sub, + sub, mul, min, max, From ad3b4b4490fd967c4cc6e7edd97c32b44a9c6b41 Mon Sep 17 00:00:00 2001 From: Musa Dango Date: Sat, 13 Jul 2024 19:19:10 +0100 Subject: [PATCH 7/9] accPartial --- Solutions/musaddango_solution.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Solutions/musaddango_solution.js b/Solutions/musaddango_solution.js index daf338e..8f08b25 100644 --- a/Solutions/musaddango_solution.js +++ b/Solutions/musaddango_solution.js @@ -107,6 +107,13 @@ function acc(func, initial) { } } +function accPartial(func, start, end) { + return function (...args) { + let sub = args.slice(start, end).reduce((accum, current) => func(current, accum), 0) + const result = [...args.slice(0, start), sub, ...args.slice(end)]; + return result; + } +} @@ -128,7 +135,7 @@ module.exports = { maxRecurse, not, acc, - // accPartial, + accPartial, // accRecurse, // fill, // fillRecurse, From 51ecbe4b23b4194941810e0f9954fd4dd8b8cb37 Mon Sep 17 00:00:00 2001 From: Musa Dango Date: Tue, 16 Jul 2024 23:54:22 +0100 Subject: [PATCH 8/9] fill and fillRecourse functions added --- Solutions/musaddango_solution.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/Solutions/musaddango_solution.js b/Solutions/musaddango_solution.js index 8f08b25..ddf0123 100644 --- a/Solutions/musaddango_solution.js +++ b/Solutions/musaddango_solution.js @@ -115,7 +115,18 @@ function accPartial(func, start, end) { } } +function fill(num) { + return new Array(num).fill(num); +} + +function fillRecurse(value, length = value) { + // Base case + if (length === 0) return []; + let result = [...fillRecurse(value, length - 1), value]; + + return result; +} module.exports = { identity, @@ -137,8 +148,8 @@ module.exports = { acc, accPartial, // accRecurse, - // fill, - // fillRecurse, + fill, + fillRecurse, // set, // identityf, // addf, From bc491720f90b51913a6e5b1b3fd96ac397f00f23 Mon Sep 17 00:00:00 2001 From: Musa Dango Date: Wed, 17 Jul 2024 00:23:56 +0100 Subject: [PATCH 9/9] fillRecurse and set functions --- Solutions/musaddango_solution.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/Solutions/musaddango_solution.js b/Solutions/musaddango_solution.js index ddf0123..4a3f09d 100644 --- a/Solutions/musaddango_solution.js +++ b/Solutions/musaddango_solution.js @@ -128,6 +128,21 @@ function fillRecurse(value, length = value) { return result; } +function set(arr) { + let result = []; + let hash = {}; + + + for (let i = 0; i < arr.length; i++) { + if (!(arr[i] in hash)) { + hash[arr[i]] = true; + result.push(arr[i]); + } + } + + return result; +} + module.exports = { identity, addb, @@ -150,7 +165,7 @@ module.exports = { // accRecurse, fill, fillRecurse, - // set, + set, // identityf, // addf, // liftf,