From dc764509cdbd585f3d23dfc917863869ac9803d5 Mon Sep 17 00:00:00 2001 From: chiemelie_ndibe Date: Tue, 15 Aug 2023 16:53:35 +0100 Subject: [PATCH] mini challenge 2 --- src/isolate-duplicates/index.js | 42 ++++++++++++++++++++++++++++++++- src/morse/index.js | 19 ++++++++++++++- src/remove-dulplicates/index.js | 40 ++++++++++++++++++++++++++++++- 3 files changed, 98 insertions(+), 3 deletions(-) diff --git a/src/isolate-duplicates/index.js b/src/isolate-duplicates/index.js index 79ae426..482149d 100644 --- a/src/isolate-duplicates/index.js +++ b/src/isolate-duplicates/index.js @@ -1,3 +1,43 @@ -function isolateDuplicates(text) {} +function isolateDuplicates(text) { +if(typeof(text) !== "string" ) { + throw Error("Please enter a valid string"); + } + let duplicate = {}; + let newString = ""; + let str = ''; + let count = 0; + let stringCount = []; + let newText = text.toLowerCase() + + for(let i = 0; i < newText.length; i++) { + if(newString !== newText[i]) { + if(duplicate[newString] > 2) { + str += ']'; + } + duplicate[newString] = 0; + newString = newText[i]; + + } + if(!duplicate[newText[i]]) { + duplicate[newText[i]] = 1; + } else if(duplicate[newText[i]] == 1) { + duplicate[newText[i]]++ + } else if(duplicate[newText[i]] == 2) { + str += '[' + duplicate[newText[i]]++ + count++ + } + str += text[i]; + } + if(duplicate[newString] > 2) { + str += ']' + + } + stringCount.push(str); + stringCount.push(count) + + return stringCount; + } + module.exports = isolateDuplicates; diff --git a/src/morse/index.js b/src/morse/index.js index cf65063..786b30c 100644 --- a/src/morse/index.js +++ b/src/morse/index.js @@ -58,6 +58,23 @@ const MORSE_CODE = { Object.freeze(MORSE_CODE); -function morse(text) {} + +function morse(text) { + if (typeof text !== "string") throw "Please provide a morse string" + let result = text + .split(' ') + .map( + a => a + .split(' ') + .map( + b => MORSE_CODE[b] + ).join('') + ).join(' '); + // result = result.trim() + // if(result[0]== ' ')result.shift(); + + return result.trim(); + +} module.exports = morse; diff --git a/src/remove-dulplicates/index.js b/src/remove-dulplicates/index.js index 75c6c9b..69d8b17 100644 --- a/src/remove-dulplicates/index.js +++ b/src/remove-dulplicates/index.js @@ -1,3 +1,41 @@ -function removeDuplicates(obj) {} +function removeDuplicates(obj) { + + let result = {}; + let keyArr =[]; + let valueArr=[]; + + for(let key in obj){ + keyArr.push(key); + valueArr.push(obj[key]) + } + const valueArrFiltered = valueArr.map(value=>{ + + let unique = new Set(value); + unique= [...unique] + return unique + }) + for(let i=valueArrFiltered.length-1; i>=0; i--){ + for(let j=valueArrFiltered[i].length-1; j>=0; j--){ + for(let k = i-1; k>=0; k--){ + if(valueArrFiltered[k].includes(valueArrFiltered[i][j])){ + let index = valueArrFiltered[k].indexOf(valueArrFiltered[i][j]); + valueArrFiltered[k].splice(index,1) + } + } + + } + + } + keyArr.forEach((key, index)=>{ + result[key]=valueArrFiltered[index]; + }) + + return result + + + } + + + module.exports = removeDuplicates;