From c5adfb0cdd4fa7f4c47b6ccb92b4043a22d89806 Mon Sep 17 00:00:00 2001 From: Idongesit Ukpong <116917866+IdyUkpong@users.noreply.github.com> Date: Tue, 31 Jan 2023 15:50:34 +0100 Subject: [PATCH] Task 2 Completed --- .DS_Store | Bin 0 -> 6148 bytes src/.DS_Store | Bin 0 -> 8196 bytes src/isolate-duplicates/.DS_Store | Bin 0 -> 6148 bytes src/isolate-duplicates/index.js | 24 +++++++++++++++++++++++- src/morse/.DS_Store | Bin 0 -> 6148 bytes src/morse/index.js | 28 +++++++++++++++++++++++++++- src/morse/test.js | 2 +- src/remove-dulplicates/index.js | 14 +++++++++++++- 8 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 .DS_Store create mode 100644 src/.DS_Store create mode 100644 src/isolate-duplicates/.DS_Store create mode 100644 src/morse/.DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..52bcad18510e173798b377bd1a5617bb266096e3 GIT binary patch literal 6148 zcmeHKL2uJA6n<{YNXrIALSh%BT)2&@+p0+%kV@$eJ0ML2!2wX0G^NXy#Z{A1K`H8; zUjPUG0>6V_z;EFM-?I&BQg)jVAV10ep6&NN*IyF5CL+<9gxf@QB63g|D>YQVF&^i# zVkOhVJfU(ls85m-dP&hrwC%78SOxwz1^C;&N+&d+lrmcWeurqCP~ zM`?Ul29IbRU%R9b{2rYtZ$dF=EAT!Sc-Lt}K6Z;!)I-GI0ZXd3nw58vd~d=J-~Kts-(CYwprRU;`@*^NiB4z$inf)YA?KFIrTC>o1`6o{ESvdE+FO2}{J$8+gIe zr31peV5^Us_+?p^3r%YmuYh@k&XtQ#Z8KU0tOEbI0=z%CD2#1`3yo^)K&7q#zzVvR z!RNmT%yA924K6fd1ST{UsHwtSF@&b0-!*YP^Ca7{3RngHD+NTQ>vcO=k~v#f7RP6;i*kg*#&HXcih{}< i$I9WOcoRh##$0xQZG#Jq=z-Zk0!jv3Sq1*60zUu<<-ZL8 literal 0 HcmV?d00001 diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..87dabae0373b3d89cab7b1695fc8bc02af54f8bc GIT binary patch literal 8196 zcmeI1&u-H|5XNWQ6gEMKs6rwaq`hz}C~c!k9FR;Xhu)Bk-~gz#Yl~WPy;1Bmf)M1_ zfS2Gocmf^=zWt*pOUlK6y2ZdrZ z@LD^yuMSi;1%NitZ4GVY0X9Z?4ZPM)Z7Ak+*@N(*!lxL*g=1V9cWB_XcIv`OxNs8w z%))0V!k!&*%DR&XoN~0Ga$UTK zznN=;PJw&~@aY2DZy23NJLh>_0nROP0n;WBr54rM?8{P4zr8ob{RMz4&2e4PuC(|C z=-_9}+@{KF;I(#Yp9WNR7l!iw4=!v>;3^SVcNg0+`Tz6FzyDvQCGoW~0VeQ=1Vm#$ z-0vgE?&=o=n_XU^9HAI9ezj8@g6iB40UXc%FhpCy)x-o|Yp3Xe@rMA5fh#8PR|)(A DNkJT- literal 0 HcmV?d00001 diff --git a/src/isolate-duplicates/.DS_Store b/src/isolate-duplicates/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..24166f7595e99793843651f9ad5bc6a69715b46b GIT binary patch literal 6148 zcmeHKJxc>Y5PhQoPi#`!2>S~T{0C>a6c%aXACPz!N@9vASYGds);Ax*e}xV4}b1(r>TufG2dg z$IkaJmg@y$O3W2U{cb`FIK>=OdRxqhHCE_!$6pn4aZquBXU@K%-tx1P{dSP8YosIt z$v`rY3?u_T#Q^VYmFmnfbuy3)Bm-Lp^n55BicMheXh#Q?wE)Bs-6pj4$*eUcunFuP z8KH=m61`NS#Sky2zeHXW*gJYTB$^M2l|P#ovDG<$v2;k|m^v9q2KE`y-j_1g`+v&6 z%wUsmDXEfyWZ=ItAfxuCop5(?w|?8F-nE6}mP1AJdNnAt_Z|WKq36iC1wCHWW?mE6 VJL)Xzw{l`W1dNbW$-pl#@Bx#iGZ+8> literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..a9b32128b465e77b9247ee6b5707ee473ab5caa4 GIT binary patch literal 6148 zcmeHK!AiqG5PefCCWz3Z$NhqU_ye(|2M=EK2c(UNQjJgrz2)u~d(t710@( zd7H`1Zs#RrIsjz;Ql9`b02x(rlGBWc-d7#SBzg9UVtc$IV1))xcpF5!<2N#(&+Z6! zctnjGbe~^=du-0v&1$)BmW<*nBJafF)5MC&I+-K!IP1mdo%mCXWDHKoaft=@sc=Co z@PNAan?8DH9N?LiY-mUJpWODMtqeELfHU9>{4)mFvsJRgh;E$$XTTZQGN9jwKvgUg zwh`^qL1QBTaZ0xd*E&mRPDofLY$NgxMPe#3rb-$yB&O3JQe2s^jTqA*Y50(IvZM(` z>~!uQEF4lsbn6T_1G^0D#mkxY|Hb$7|8A0BIRnnXpJG6!)m1fTNvXFEiql>jsMk~# njcX%rQ@F5J%vf#3$5a#ggD!|=!Zsp36#pY&G`MjFew2YP&YMqP literal 0 HcmV?d00001 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;