From 7dc529b146e639ce5dcffe1162fac8f0f4917ecb Mon Sep 17 00:00:00 2001 From: mac Date: Sun, 13 Aug 2023 20:41:25 +0100 Subject: [PATCH] init --- src/isolate-duplicates/index.js | 33 ++++++++++++++++++++++++- src/morse/index.js | 43 ++++++++++++++++++++++++++++++++- src/morse/test.js | 2 +- src/remove-dulplicates/index.js | 21 +++++++++++++++- 4 files changed, 95 insertions(+), 4 deletions(-) diff --git a/src/isolate-duplicates/index.js b/src/isolate-duplicates/index.js index 79ae426..1ad15ff 100644 --- a/src/isolate-duplicates/index.js +++ b/src/isolate-duplicates/index.js @@ -1,3 +1,34 @@ -function isolateDuplicates(text) {} +function isolateDuplicates(dup) { + if (dup === undefined) { + throw Error(); + } + if (dup.length === 0) { + throw Error("Please enter a valid string"); + } + let newArr = []; + let dupArr = []; + let count = 0; + let lower = dup.toLowerCase(); + for (let i = 0; i < lower.length + 1; i++) { + if (lower[i - 1] === lower[i] && lower[i - 2] === lower[i]) { + dupArr.push(dup[i]); + } else { + if (dupArr.length !== 0) { + count += 1; + dupArr = dupArr.join(""); + dupArr = `[${dupArr}]`; + + newArr.push(dupArr); + } + newArr.push(dup[i]); + dupArr = []; + } + } + if (newArr[newArr.length - 1] === undefined) { + newArr.splice(newArr.length - 1, 1); + } + + return [newArr.join("").toString(), count]; +} module.exports = isolateDuplicates; diff --git a/src/morse/index.js b/src/morse/index.js index cf65063..bd97935 100644 --- a/src/morse/index.js +++ b/src/morse/index.js @@ -58,6 +58,47 @@ const MORSE_CODE = { Object.freeze(MORSE_CODE); -function morse(text) {} +function morse(text) { + if (text === "") { + return ""; + } + if (text === undefined) { + throw Error(); + } + if (text.length === 0) { + throw Error("Please provide a morse string"); + } + let data = text.split(" "); + let output = []; + + for (let i = 0; i < data.length; i++) { + output.push(MORSE_CODE[data[i]]); + } + let newArr = output; + + for (let i = 0; i < output.length; i++) { + if (newArr[0] === undefined) { + newArr.shift(); + } + if (newArr[output.length - 1] === undefined) { + newArr.pop(); + } + } + for (let i = 0; i < newArr.length; i++) { + if (newArr[i] === 0 && newArr[i] === undefined) { + newArr[i] = newArr[i + 1]; + } + if (newArr[i] === undefined && newArr[i + 1] === undefined) { + newArr[i] = " "; + i++; + } else if (newArr[i] === undefined) { + newArr[i] = ""; + } else { + newArr[i] = newArr[i]; + } + } + + return newArr.join(""); +} module.exports = morse; diff --git a/src/morse/test.js b/src/morse/test.js index 8667892..478847c 100644 --- a/src/morse/test.js +++ b/src/morse/test.js @@ -38,8 +38,8 @@ describe("Morse spec", () => { }); test("it decodes letters with multiple spaces", () => { - expect(morseToText(" . ")).toBe("E"); expect(morseToText(" . . ")).toBe("E E"); + expect(morseToText(" . ")).toBe("E"); expect( morseToText( " ...---... -.-.-- - .... . --.- ..- .. -.-. -.- -... .-. --- .-- -. ..-. --- -..- .--- ..- -- .--. ... --- ...- . .-. - .... . .-.. .- --.. -.-- -.. --- --. .-.-.- " diff --git a/src/remove-dulplicates/index.js b/src/remove-dulplicates/index.js index 75c6c9b..479133d 100644 --- a/src/remove-dulplicates/index.js +++ b/src/remove-dulplicates/index.js @@ -1,3 +1,22 @@ -function removeDuplicates(obj) {} +function removeDuplicates(obj) { + let compare = [], + newObject = {}, + k = Object.keys(obj); + + for (let i = k.length - 1; i >= 0; i--) { + let val = obj[k[i]], + newVal = []; + + for (let j = 0; j < val.length; j++) { + if (!compare.includes(val[j])) { + compare.push(val[j]); + newVal.push(val[j]); + } + } + + newObject[k[i]] = newVal; + } + return newObject; +} module.exports = removeDuplicates;