From 320e6d9df8420211e944a39ea12487b804bd8ae5 Mon Sep 17 00:00:00 2001 From: Vishnu Vardhan <123796183+pvcube66@users.noreply.github.com> Date: Fri, 11 Oct 2024 23:13:56 +0530 Subject: [PATCH 1/2] Add files via upload --- Bit-Manipulation/EvenorOdd.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 Bit-Manipulation/EvenorOdd.js diff --git a/Bit-Manipulation/EvenorOdd.js b/Bit-Manipulation/EvenorOdd.js new file mode 100644 index 0000000000..bc6169043d --- /dev/null +++ b/Bit-Manipulation/EvenorOdd.js @@ -0,0 +1,23 @@ +/** + * + * This script will check whether a number is even or odd + * using bit manipulation. + * Idea: + * A number can be determined as even or odd by the lsb(least significant bit) or the + * right most bit in binary representation + * if we simply perform an and operation with 1 and the number we can determine: + * eg: + * number & 1 == 1, the number is odd + * number & 1 == 0, the number is even + * + * More about it : + * https://www.geeksforgeeks.org/check-if-a-number-is-odd-or-even-using-bitwise-operators/ + * + */ + +export const evenOrOdd = (number) => { + if (typeof number !== 'number' || !Number.isInteger(number)) { + throw new Error('Input must be an integer.') + } + return number & 1 ? 'odd' : 'even' +} From 64d9c705526b232c8e27160e0a44144e1e72dd23 Mon Sep 17 00:00:00 2001 From: Vishnu Vardhan <123796183+pvcube66@users.noreply.github.com> Date: Fri, 11 Oct 2024 23:15:19 +0530 Subject: [PATCH 2/2] added the test cases for even or odd checker --- Bit-Manipulation/test/EvenorOdd.test.js | 39 +++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Bit-Manipulation/test/EvenorOdd.test.js diff --git a/Bit-Manipulation/test/EvenorOdd.test.js b/Bit-Manipulation/test/EvenorOdd.test.js new file mode 100644 index 0000000000..a15558f761 --- /dev/null +++ b/Bit-Manipulation/test/EvenorOdd.test.js @@ -0,0 +1,39 @@ +import { evenOrOdd } from '../EvenorOdd' + +test('check evenOrOdd of 25 is odd', () => { + const res = evenOrOdd(25) + expect(res).toBe('odd') +}) + +test('check evenOrOdd of 36 is even', () => { + const res = evenOrOdd(36) + expect(res).toBe('even') +}) + +test('check evenOrOdd of 0 is even', () => { + const res = evenOrOdd(0) + expect(res).toBe('even') +}) + +test('check evenOrOdd of -13 is odd', () => { + const res = evenOrOdd(-13) + expect(res).toBe('odd') +}) + +test('check evenOrOdd of 4294967295 is odd', () => { + const res = evenOrOdd(4294967295) + expect(res).toBe('odd') +}) + +test('check evenOrOdd of -36 is even', () => { + const res = evenOrOdd(-36) + expect(res).toBe('even') +}) + +test('check evenOrOdd of 21.1 throws error', () => { + expect(() => evenOrOdd(21.1)).toThrow() +}) + +test('check evenOrOdd of {} throws error', () => { + expect(() => evenOrOdd({})).toThrow() +})