From 2ef92bc7fdbf129784bc4a36ef084946f61b9bf3 Mon Sep 17 00:00:00 2001 From: dna113p Date: Thu, 19 Oct 2017 22:10:07 -0700 Subject: [PATCH 1/4] add countSetBits to lib/index.js --- lib/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/index.js b/lib/index.js index 02226c95..f0539a88 100644 --- a/lib/index.js +++ b/lib/index.js @@ -11,6 +11,7 @@ module.exports = { concatenateArray: require("./concatenateArray"), contain: require("./contain"), countSpaces: require("./countSpaces"), + countSetBits: require("./countSetBits"), countUpperCase: require("./countUpperCase"), cube: require("./cube"), dec2hex: require("./dec2hex"), From 3bf6273447c2f7539030162fed9e505ace6f41e3 Mon Sep 17 00:00:00 2001 From: dna113p Date: Thu, 19 Oct 2017 22:39:36 -0700 Subject: [PATCH 2/4] implement countSetBits.js --- lib/countSetBits.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/countSetBits.js b/lib/countSetBits.js index de7f709c..5cee851a 100644 --- a/lib/countSetBits.js +++ b/lib/countSetBits.js @@ -1,8 +1,12 @@ // Write a function that returns the number of 1s in the binary representation of the integer (first parameter) - +// Brian Khernigan's algorithm function countSetBits(n) { - // Your code goes here. - return; + let count = 0; + while(n) { + n = n & (n - 1); + count++; + } + return count; } module.exports = countSetBits; \ No newline at end of file From 58a82ede155a05aab1e5955b52d68e3a0ad3a86a Mon Sep 17 00:00:00 2001 From: dna113p Date: Thu, 19 Oct 2017 22:47:57 -0700 Subject: [PATCH 3/4] add new function --- lib/index.js | 1 + lib/unique.js | 8 ++++++++ test/unique.test.js | 17 +++++++++++++++++ 3 files changed, 26 insertions(+) create mode 100644 lib/unique.js create mode 100644 test/unique.test.js diff --git a/lib/index.js b/lib/index.js index f0539a88..b762eb4e 100644 --- a/lib/index.js +++ b/lib/index.js @@ -66,6 +66,7 @@ module.exports = { sum: require("./sum"), swapCase: require("./swapCase"), take: require("./take"), + unique: require("./unique"), uppercase: require("./uppercase"), vowelCount: require("./vowelCount"), without: require("./without"), diff --git a/lib/unique.js b/lib/unique.js new file mode 100644 index 00000000..4255c8d7 --- /dev/null +++ b/lib/unique.js @@ -0,0 +1,8 @@ +//Return the number of unique elements in the array + +function unique(arr) { + //your code here + return; +} + +module.exports = unique; \ No newline at end of file diff --git a/test/unique.test.js b/test/unique.test.js new file mode 100644 index 00000000..6e5b59d0 --- /dev/null +++ b/test/unique.test.js @@ -0,0 +1,17 @@ +const { unique } = require("../lib"); + +describe("unique", () => { + test("should find 1 unique number in [1]", () => { + expect(unique([1])).toEqual(); + }); + + test("should find 1 unique number in [5,5,5]", () => { + expect(unique([5,5,5])).toEqual(1); + }); + + test("should find 3 unique numbers in [1,2,3]", () => { + expect(unique([1,2,3])).toEqual(3); + }); +}); + + From f68ea7987f69998ce6b05ff3d58d174a76996423 Mon Sep 17 00:00:00 2001 From: dna113p Date: Fri, 20 Oct 2017 17:19:24 -0700 Subject: [PATCH 4/4] resolve issues --- lib/index.js | 2 +- lib/{unique.js => uniqueCount.js} | 4 ++-- test/unique.test.js | 17 ----------------- test/uniqueCount.test.js | 22 ++++++++++++++++++++++ 4 files changed, 25 insertions(+), 20 deletions(-) rename lib/{unique.js => uniqueCount.js} (59%) delete mode 100644 test/unique.test.js create mode 100644 test/uniqueCount.test.js diff --git a/lib/index.js b/lib/index.js index b762eb4e..8770ceba 100644 --- a/lib/index.js +++ b/lib/index.js @@ -66,7 +66,7 @@ module.exports = { sum: require("./sum"), swapCase: require("./swapCase"), take: require("./take"), - unique: require("./unique"), + uniqueCount: require("./uniqueCount"), uppercase: require("./uppercase"), vowelCount: require("./vowelCount"), without: require("./without"), diff --git a/lib/unique.js b/lib/uniqueCount.js similarity index 59% rename from lib/unique.js rename to lib/uniqueCount.js index 4255c8d7..a66efd44 100644 --- a/lib/unique.js +++ b/lib/uniqueCount.js @@ -1,8 +1,8 @@ //Return the number of unique elements in the array -function unique(arr) { +function uniqueCount(arr) { //your code here return; } -module.exports = unique; \ No newline at end of file +module.exports = uniqueCount; \ No newline at end of file diff --git a/test/unique.test.js b/test/unique.test.js deleted file mode 100644 index 6e5b59d0..00000000 --- a/test/unique.test.js +++ /dev/null @@ -1,17 +0,0 @@ -const { unique } = require("../lib"); - -describe("unique", () => { - test("should find 1 unique number in [1]", () => { - expect(unique([1])).toEqual(); - }); - - test("should find 1 unique number in [5,5,5]", () => { - expect(unique([5,5,5])).toEqual(1); - }); - - test("should find 3 unique numbers in [1,2,3]", () => { - expect(unique([1,2,3])).toEqual(3); - }); -}); - - diff --git a/test/uniqueCount.test.js b/test/uniqueCount.test.js new file mode 100644 index 00000000..9d1eb1b1 --- /dev/null +++ b/test/uniqueCount.test.js @@ -0,0 +1,22 @@ +const { uniqueCount } = require("../lib"); + +describe("uniqueCount", () => { + test("should find 1 unique item in [1]", () => { + expect(uniqueCount([1])).toEqual(); + }); + + test("should find 1 unique item in [5,5,5]", () => { + expect(uniqueCount([5,5,5])).toEqual(1); + }); + + test("should find 3 unique item in [1,2,3]", () => { + expect(uniqueCount([1,2,3])).toEqual(3); + }); + + test("should find 2 unique items in [{a:1},{a:1}]", () => { + expect(uniqueCount([{a:1},{a:1}])).toEqual(2); + }); + +}); + +