mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-04 15:39:42 +08:00
merge: Improved IsOdd
function (#914)
* refactor: used Boolean function for conversion * feat: added one more function and test cases * test: refactor test case & fixed var names * chore: fixed test placeholder
This commit is contained in:
@ -1,9 +1,45 @@
|
||||
/*
|
||||
* function to check if number is odd
|
||||
* return true if number is odd
|
||||
* Odd Number: https://simple.wikipedia.org/wiki/Odd_number
|
||||
* function to check if number is odd.
|
||||
* return true if number is odd.
|
||||
* else false
|
||||
*/
|
||||
|
||||
export const isOdd = (value) => {
|
||||
return !!((value & 1))
|
||||
}
|
||||
/**
|
||||
* @function isOdd
|
||||
* @description -> Checking if number is odd using not divisibility by 2
|
||||
* If number is not divisible by 2 i.e remainder = 1, then it is odd
|
||||
* therefore, the function will return true
|
||||
*
|
||||
* If number is divisible by 2 i.e remainder != 1, then it is even
|
||||
* therefore, the function will return false
|
||||
* @param {number} number
|
||||
* @returns {boolean}
|
||||
*/
|
||||
const isOdd = (number) => Boolean(number % 2) // 1 -> true, 0 -> false
|
||||
/**
|
||||
* @function isOddBitwise
|
||||
* @description -> Checking if number is even using bitwise operator
|
||||
* Bitwise AND (&) compares the bits of the 32
|
||||
* bit binary representations of the number and
|
||||
* returns a number after comparing each bit:
|
||||
*
|
||||
* 0 & 0 -> 0
|
||||
* 0 & 1 -> 0
|
||||
* 1 & 0 -> 0
|
||||
* 1 & 1 -> 1
|
||||
*
|
||||
* For every odd numbers, the last binary bit will be 1
|
||||
* and for even numbers, the last binary bit will be 0.
|
||||
*
|
||||
* As the number is compared with one, all the
|
||||
* other bits except the last will become 0. The
|
||||
* last bit will be 0 for even numbers and 1 for
|
||||
* odd numbers.
|
||||
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_AND
|
||||
* @param {number} number
|
||||
* @returns {boolean}
|
||||
*/
|
||||
const isOddBitwise = (number) => Boolean(number & 1) // 1 -> true, 0 -> false
|
||||
|
||||
export { isOdd, isOddBitwise }
|
||||
|
25
Maths/test/IsOdd.test.js
Normal file
25
Maths/test/IsOdd.test.js
Normal file
@ -0,0 +1,25 @@
|
||||
import { isOdd, isOddBitwise } from '../IsOdd'
|
||||
|
||||
describe('Testing the isOdd function', () => {
|
||||
it('should return true, if the number is odd', () => {
|
||||
const isOddNumber = isOdd(4)
|
||||
expect(isOddNumber).toBe(false)
|
||||
})
|
||||
|
||||
it('should return true, if the number is odd', () => {
|
||||
const isOddNumber = isOdd(7)
|
||||
expect(isOddNumber).toBe(true)
|
||||
})
|
||||
})
|
||||
|
||||
describe('Testing the isOddBitwise function', () => {
|
||||
it('should return true, if the number is odd', () => {
|
||||
const isOddNumber = isOddBitwise(6)
|
||||
expect(isOddNumber).toBe(false)
|
||||
})
|
||||
|
||||
it('should return true, if the number is odd', () => {
|
||||
const isOddNumber = isOddBitwise(3)
|
||||
expect(isOddNumber).toBe(true)
|
||||
})
|
||||
})
|
Reference in New Issue
Block a user