From b74962555af1df5457306c385bf0eed1a259d6db Mon Sep 17 00:00:00 2001 From: Smit Gabani Date: 2022年9月23日 03:44:38 -0400 Subject: [PATCH 1/7] fixes #1106 --- Bit-Manipulation/CountSetBits.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 Bit-Manipulation/CountSetBits.js diff --git a/Bit-Manipulation/CountSetBits.js b/Bit-Manipulation/CountSetBits.js new file mode 100644 index 0000000000..995f58a37b --- /dev/null +++ b/Bit-Manipulation/CountSetBits.js @@ -0,0 +1,24 @@ +// author: Smit Gabani +// https://github.com/smitgabani + +/** + * explanation link: https://iq.opengenus.org/brian-kernighan-algorithm/ + * The below algorithm is called as Brian Kernighan's algorithm + * @param: num takes number whose number of set bit is to be found + * @return: the count of set bits in the binary equivalent + * */ + function CountSetBits(num) { + 'use strict' + let cnt = 0; + while(num> 0) { + cnt++; + // num = num & (num - 1); + num&=(num-1); + } + return cnt; +} + +// console.log(CountSetBits(10)) +// expected output: 2 + +export { CountSetBits } \ No newline at end of file From a6aebb422e24140fd11a26f12cd03aa179cf2f85 Mon Sep 17 00:00:00 2001 From: Smit Gabani Date: 2022年9月23日 04:03:12 -0400 Subject: [PATCH 2/7] add CountSetBits algorithm --- Bit-Manipulation/CountSetBits.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Bit-Manipulation/CountSetBits.js b/Bit-Manipulation/CountSetBits.js index 995f58a37b..ae9c6869fd 100644 --- a/Bit-Manipulation/CountSetBits.js +++ b/Bit-Manipulation/CountSetBits.js @@ -1,3 +1,4 @@ + // author: Smit Gabani // https://github.com/smitgabani @@ -21,4 +22,4 @@ // console.log(CountSetBits(10)) // expected output: 2 -export { CountSetBits } \ No newline at end of file +export { CountSetBits } From ba6f851ad702004a74b1e1df1abce155126e3fb1 Mon Sep 17 00:00:00 2001 From: Smit Gabani Date: 2022年9月23日 04:08:20 -0400 Subject: [PATCH 3/7] add CountSetBits algorithm --- Bit-Manipulation/CountSetBits.js | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/Bit-Manipulation/CountSetBits.js b/Bit-Manipulation/CountSetBits.js index ae9c6869fd..238d25ccc6 100644 --- a/Bit-Manipulation/CountSetBits.js +++ b/Bit-Manipulation/CountSetBits.js @@ -1,24 +1,21 @@ - +'use strict' // author: Smit Gabani // https://github.com/smitgabani /** * explanation link: https://iq.opengenus.org/brian-kernighan-algorithm/ - * The below algorithm is called as Brian Kernighan's algorithm + * Brain Kernighan's Algorithm for Counting Set Bits * @param: num takes number whose number of set bit is to be found * @return: the count of set bits in the binary equivalent * */ - function CountSetBits(num) { - 'use strict' - let cnt = 0; - while(num> 0) { - cnt++; - // num = num & (num - 1); - num&=(num-1); - } - return cnt; +function CountSetBits (num) { + let cnt = 0 + while (num> 0) { + cnt++ + num &= (num - 1) + } + return cnt } - // console.log(CountSetBits(10)) // expected output: 2 From d0ba2a3b554fb52c7e8d605e9294fef8c0546335 Mon Sep 17 00:00:00 2001 From: Smit Gabani Date: 2022年9月23日 04:19:53 -0400 Subject: [PATCH 4/7] add CountSetBits algorithm & test --- Bit-Manipulation/test/CountSetBits.test.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Bit-Manipulation/test/CountSetBits.test.js diff --git a/Bit-Manipulation/test/CountSetBits.test.js b/Bit-Manipulation/test/CountSetBits.test.js new file mode 100644 index 0000000000..4cc1af6cb5 --- /dev/null +++ b/Bit-Manipulation/test/CountSetBits.test.js @@ -0,0 +1,22 @@ +import { CountSetBits } from '../CountSetBits' + +test('check CountSetBits of 25 is 3', () => { + const res = CountSetBits(25) + expect(res).toBe(3) +}) +test('check CountSetBits of 36 is 2', () => { + const res = CountSetBits(36) + expect(res).toBe(2) +}) +test('check CountSetBits of 16 is 1', () => { + const res = CountSetBits(16) + expect(res).toBe(1) +}) +test('check CountSetBits of 58 is 4', () => { + const res = CountSetBits(58) + expect(res).toBe(4) +}) +test('check CountSetBits of 0 is 0', () => { + const res = CountSetBits(0) + expect(res).toBe(0) +}) From d90363bdef676f5ec15e1889374b551f7d7af7fb Mon Sep 17 00:00:00 2001 From: Smit Gabani Date: 2022年9月26日 08:14:20 -0400 Subject: [PATCH 5/7] fix --- Bit-Manipulation/test/CountSetBits.test.js | 31 +++++++++------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/Bit-Manipulation/test/CountSetBits.test.js b/Bit-Manipulation/test/CountSetBits.test.js index 4cc1af6cb5..53f6b274a1 100644 --- a/Bit-Manipulation/test/CountSetBits.test.js +++ b/Bit-Manipulation/test/CountSetBits.test.js @@ -1,22 +1,15 @@ import { CountSetBits } from '../CountSetBits' -test('check CountSetBits of 25 is 3', () => { - const res = CountSetBits(25) - expect(res).toBe(3) -}) -test('check CountSetBits of 36 is 2', () => { - const res = CountSetBits(36) - expect(res).toBe(2) -}) -test('check CountSetBits of 16 is 1', () => { - const res = CountSetBits(16) - expect(res).toBe(1) -}) -test('check CountSetBits of 58 is 4', () => { - const res = CountSetBits(58) - expect(res).toBe(4) -}) -test('check CountSetBits of 0 is 0', () => { - const res = CountSetBits(0) - expect(res).toBe(0) +test('CountSetBits', () => { + const tests = { + // binary representation: set bits + 25: 3, + 36: 2, + 16: 1, + 58: 4, + 0: 0 + } + for (const binary in tests) { + expect(CountSetBits(binary)).toBe(tests[binary]) + } }) From 9ec4f5f25381fddb84316031fa346c877ce16592 Mon Sep 17 00:00:00 2001 From: Smit Gabani Date: 2022年9月26日 14:48:06 -0400 Subject: [PATCH 6/7] fix --- Bit-Manipulation/test/CountSetBits.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Bit-Manipulation/test/CountSetBits.test.js b/Bit-Manipulation/test/CountSetBits.test.js index 53f6b274a1..1eef749594 100644 --- a/Bit-Manipulation/test/CountSetBits.test.js +++ b/Bit-Manipulation/test/CountSetBits.test.js @@ -2,7 +2,7 @@ import { CountSetBits } from '../CountSetBits' test('CountSetBits', () => { const tests = { - // binary representation: set bits + // decimal representation: set bits 25: 3, 36: 2, 16: 1, From fe9555ba9e1d9f3a1fc8a33e562bf31e71276c8d Mon Sep 17 00:00:00 2001 From: Smit Gabani Date: 2022年9月27日 00:48:26 -0400 Subject: [PATCH 7/7] fix --- Bit-Manipulation/test/CountSetBits.test.js | 31 +++++++++++++--------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/Bit-Manipulation/test/CountSetBits.test.js b/Bit-Manipulation/test/CountSetBits.test.js index 1eef749594..266ed8568e 100644 --- a/Bit-Manipulation/test/CountSetBits.test.js +++ b/Bit-Manipulation/test/CountSetBits.test.js @@ -1,15 +1,22 @@ import { CountSetBits } from '../CountSetBits' -test('CountSetBits', () => { - const tests = { - // decimal representation: set bits - 25: 3, - 36: 2, - 16: 1, - 58: 4, - 0: 0 - } - for (const binary in tests) { - expect(CountSetBits(binary)).toBe(tests[binary]) - } +test('check CountSetBits of 25 is 3', () => { + const res = CountSetBits(25) + expect(res).toBe(3) }) +test('check CountSetBits of 36 is 2', () => { + const res = CountSetBits(36) + expect(res).toBe(2) +}) +test('check CountSetBits of 16 is 1', () => { + const res = CountSetBits(16) + expect(res).toBe(1) +}) +test('check CountSetBits of 58 is 4', () => { + const res = CountSetBits(58) + expect(res).toBe(4) +}) +test('check CountSetBits of 0 is 0', () => { + const res = CountSetBits(0) + expect(res).toBe(0) +}) \ No newline at end of file

AltStyle によって変換されたページ (->オリジナル) /