diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..52bcad1 Binary files /dev/null and b/.DS_Store differ diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000..87dabae Binary files /dev/null and b/src/.DS_Store differ diff --git a/src/isolate-duplicates/.DS_Store b/src/isolate-duplicates/.DS_Store new file mode 100644 index 0000000..24166f7 Binary files /dev/null and b/src/isolate-duplicates/.DS_Store differ diff --git a/src/isolate-duplicates/index.js b/src/isolate-duplicates/index.js index 79ae426..0a1bb1e 100644 --- a/src/isolate-duplicates/index.js +++ b/src/isolate-duplicates/index.js @@ -1,3 +1,25 @@ -function isolateDuplicates(text) {} +function isolateDuplicates(text) { + if (typeof text !== "string") { + return "Please enter a valid string"; + } + let identical = ""; + let countIdentical = 0; + for (let i = 0; i < text.length; i++) { + let j = i + 1; + let count = 0; + while (j < text.length && text[i] === text[j]) { + j++; + count++; + } + if (count > 2) { + identical += text[i] + "[" + text.slice(i + 1, j) + "]"; + countIdentical++; + i = j - 1; + } else { + identical += text.slice(i, j); + } + } + return [identical, countIdentical]; +} module.exports = isolateDuplicates; diff --git a/src/morse/.DS_Store b/src/morse/.DS_Store new file mode 100644 index 0000000..a9b3212 Binary files /dev/null and b/src/morse/.DS_Store differ diff --git a/src/morse/index.js b/src/morse/index.js index cf65063..88793c9 100644 --- a/src/morse/index.js +++ b/src/morse/index.js @@ -58,6 +58,32 @@ const MORSE_CODE = { Object.freeze(MORSE_CODE); -function morse(text) {} +function morse(text) { + if (Array.isArray(text)) { + throw new Error("Please provide a morse string"); + return "Please provide a morse string"; + } + + if (typeof text === "undefined") { + throw new Error("Please provide a morse string"); + return; + } + + // split text by 3 spaces to break them into an array of words + let _morseArr = text.trim().split(" "); + + let _arrOfDecodedWords = _morseArr.map((item) => { + let getMorseCodeFromItem = item.split(" "); + + let getWordsFromItemArray = getMorseCodeFromItem.map((value) => { + let decodedLetter = MORSE_CODE[value]; + return decodedLetter; + }); + + return getWordsFromItemArray.join(""); + }); + + return _arrOfDecodedWords.join(" "); +} module.exports = morse; diff --git a/src/morse/test.js b/src/morse/test.js index 8667892..f4268fa 100644 --- a/src/morse/test.js +++ b/src/morse/test.js @@ -1,4 +1,4 @@ -const morseToText = require("."); +const morseToText = require("./index4"); describe("Morse assumptions", () => { test("it returns an empty string untouched", () => { diff --git a/src/remove-dulplicates/index.js b/src/remove-dulplicates/index.js index 75c6c9b..5d3281a 100644 --- a/src/remove-dulplicates/index.js +++ b/src/remove-dulplicates/index.js @@ -1,3 +1,15 @@ -function removeDuplicates(obj) {} +function removeDuplicates(obj) { + let x = []; + let diff = (a, b) => [...new Set([...a].filter((x) => !b.includes(x)))]; + return Object.entries(obj) + .reverse() + .map((entry) => { + const subCollector = x; + x = [...new Set([...x, ...entry[1]])]; + return [entry[0], [...new Set(diff(entry[1], subCollector))]]; + }) + .reduce((arrays, array) => ((arrays[array[0]] = array[1]), arrays), {}); + +} module.exports = removeDuplicates;