From 5aca060e1a93c9f51ca3a7057ae6a97ed688fd7a Mon Sep 17 00:00:00 2001 From: Hardik Pawar Date: Thu, 10 Oct 2024 19:56:39 +0530 Subject: [PATCH 1/6] feat: Add `ParityCheck` new algorithm with Junit tests --- .../bitmanipulation/ParityCheck.java | 34 +++++++++++++++++++ .../bitmanipulation/ParityCheckTest.java | 16 +++++++++ 2 files changed, 50 insertions(+) create mode 100644 src/main/java/com/thealgorithms/bitmanipulation/ParityCheck.java create mode 100644 src/test/java/com/thealgorithms/bitmanipulation/ParityCheckTest.java diff --git a/src/main/java/com/thealgorithms/bitmanipulation/ParityCheck.java b/src/main/java/com/thealgorithms/bitmanipulation/ParityCheck.java new file mode 100644 index 000000000000..5acab4d4a362 --- /dev/null +++ b/src/main/java/com/thealgorithms/bitmanipulation/ParityCheck.java @@ -0,0 +1,34 @@ +package com.thealgorithms.bitmanipulation; + +/** + * The ParityCheck class provides a method to check the parity of a given number. + *

+ * Parity is a mathematical term that describes the property of an integer's binary representation. + * The parity of a binary number is the number of 1s in its binary representation. + * If the number of 1s is even, the parity is even; otherwise, it is odd. + *

+ * For example, the binary representation of 5 is 101, which has two 1s, so the parity of 5 is even. + * The binary representation of 6 is 110, which has two 1s, so the parity of 6 is even. + * The binary representation of 7 is 111, which has three 1s, so the parity of 7 is odd. + * + * @author Hardvan + */ +public final class ParityCheck { + private ParityCheck() { + } + + /** + * This method checks the parity of the given number. + * + * @param n the number to check the parity of + * @return true if the number has even parity, false otherwise + */ + public static boolean checkParity(int n) { + int count = 0; + while (n > 0) { + count += n & 1; + n >>= 1; + } + return count % 2 == 0; + } +} diff --git a/src/test/java/com/thealgorithms/bitmanipulation/ParityCheckTest.java b/src/test/java/com/thealgorithms/bitmanipulation/ParityCheckTest.java new file mode 100644 index 000000000000..f2a7c4974d87 --- /dev/null +++ b/src/test/java/com/thealgorithms/bitmanipulation/ParityCheckTest.java @@ -0,0 +1,16 @@ +package com.thealgorithms.bitmanipulation; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; + +public class ParityCheckTest { + + @Test + public void testIsOddParity() { + assertTrue(ParityCheck.checkParity(5)); // 101 has 2 ones (even parity) + assertFalse(ParityCheck.checkParity(7)); // 111 has 3 ones (odd parity) + assertFalse(ParityCheck.checkParity(8)); // 1000 has 1 one (odd parity) + } +} From 0a8b34162202370e219135e2da1d9aa1840e9297 Mon Sep 17 00:00:00 2001 From: Hardvan Date: Thu, 10 Oct 2024 14:26:59 +0000 Subject: [PATCH 2/6] Update directory --- DIRECTORY.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index a1a53cb2926c..986c95cf1de1 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -34,8 +34,11 @@ * [NumberAppearingOddTimes](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/bitmanipulation/NumberAppearingOddTimes.java) * [NumbersDifferentSigns](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/bitmanipulation/NumbersDifferentSigns.java) * [OnesComplement](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/bitmanipulation/OnesComplement.java) + * [ParityCheck](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/bitmanipulation/ParityCheck.java) * [ReverseBits](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/bitmanipulation/ReverseBits.java) * [SingleBitOperations](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/bitmanipulation/SingleBitOperations.java) + * [SingleElement](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/bitmanipulation/SingleElement.java) + * [SwapAdjacentBits](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/bitmanipulation/SwapAdjacentBits.java) * [TwosComplement](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/bitmanipulation/TwosComplement.java) * ciphers * a5 @@ -647,8 +650,11 @@ * [NumberAppearingOddTimesTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/bitmanipulation/NumberAppearingOddTimesTest.java) * [NumbersDifferentSignsTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/bitmanipulation/NumbersDifferentSignsTest.java) * [OnesComplementTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/bitmanipulation/OnesComplementTest.java) + * [ParityCheckTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/bitmanipulation/ParityCheckTest.java) * [ReverseBitsTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/bitmanipulation/ReverseBitsTest.java) * [SingleBitOperationsTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/bitmanipulation/SingleBitOperationsTest.java) + * [SingleElementTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/bitmanipulation/SingleElementTest.java) + * [SwapAdjacentBitsTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/bitmanipulation/SwapAdjacentBitsTest.java) * [TwosComplementTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/bitmanipulation/TwosComplementTest.java) * ciphers * a5 From 3463eadf362a7bb67e01cc50f2bd2b36d8b4a205 Mon Sep 17 00:00:00 2001 From: Hardik Pawar Date: Thu, 10 Oct 2024 20:05:10 +0530 Subject: [PATCH 3/6] Fix --- .../java/com/thealgorithms/bitmanipulation/ParityCheckTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/bitmanipulation/ParityCheckTest.java b/src/test/java/com/thealgorithms/bitmanipulation/ParityCheckTest.java index f2a7c4974d87..90147a61207b 100644 --- a/src/test/java/com/thealgorithms/bitmanipulation/ParityCheckTest.java +++ b/src/test/java/com/thealgorithms/bitmanipulation/ParityCheckTest.java @@ -6,7 +6,6 @@ import org.junit.jupiter.api.Test; public class ParityCheckTest { - @Test public void testIsOddParity() { assertTrue(ParityCheck.checkParity(5)); // 101 has 2 ones (even parity) From 9472c57bedffae3ac75a6ff23b751f572d4baa73 Mon Sep 17 00:00:00 2001 From: alxkm Date: Fri, 11 Oct 2024 18:28:20 +0000 Subject: [PATCH 4/6] Update directory --- DIRECTORY.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index 9bd91714e8c1..ca38e6854686 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -356,6 +356,7 @@ * [JosephusProblem](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/maths/JosephusProblem.java) * [JugglerSequence](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/maths/JugglerSequence.java) * [KaprekarNumbers](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/maths/KaprekarNumbers.java) + * [KaratsubaMultiplication](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/maths/KaratsubaMultiplication.java) * [KeithNumber](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/maths/KeithNumber.java) * [KrishnamurthyNumber](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/maths/KrishnamurthyNumber.java) * [LeastCommonMultiple](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/maths/LeastCommonMultiple.java) @@ -907,6 +908,7 @@ * [HeronsFormulaTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/HeronsFormulaTest.java) * [JosephusProblemTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/JosephusProblemTest.java) * [KaprekarNumbersTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/KaprekarNumbersTest.java) + * [KaratsubaMultiplicationTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/KaratsubaMultiplicationTest.java) * [LeastCommonMultipleTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/LeastCommonMultipleTest.java) * [LeonardoNumberTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/LeonardoNumberTest.java) * [LiouvilleLambdaFunctionTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/LiouvilleLambdaFunctionTest.java) From 4649c08c03e58f8fef42327d57209651cfd20230 Mon Sep 17 00:00:00 2001 From: alxkm Date: Fri, 11 Oct 2024 19:21:42 +0000 Subject: [PATCH 5/6] Update directory --- DIRECTORY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index ca38e6854686..cd369f0cd9d3 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -993,6 +993,7 @@ * [RemoveDuplicateFromStringTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/others/RemoveDuplicateFromStringTest.java) * [ReverseStackUsingRecursionTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/others/ReverseStackUsingRecursionTest.java) * [SkylineProblemTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/others/SkylineProblemTest.java) + * [SudokuTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/others/SudokuTest.java) * [TestPrintMatrixInSpiralOrder](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/others/TestPrintMatrixInSpiralOrder.java) * [TwoPointersTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/others/TwoPointersTest.java) * [WorstFitCPUTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/others/WorstFitCPUTest.java) From 7316776cf749c1f4aa3b8c93d912e2ad8335d6e4 Mon Sep 17 00:00:00 2001 From: siriak Date: Sat, 12 Oct 2024 07:24:04 +0000 Subject: [PATCH 6/6] Update directory --- DIRECTORY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index 04dada3b3d6a..30fa2cbee199 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -803,6 +803,7 @@ * [LevelOrderTraversalTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/trees/LevelOrderTraversalTest.java) * [PostOrderTraversalTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/trees/PostOrderTraversalTest.java) * [PreOrderTraversalTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/trees/PreOrderTraversalTest.java) + * [QuadTreeTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/trees/QuadTreeTest.java) * [SameTreesCheckTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/trees/SameTreesCheckTest.java) * [SplayTreeTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/trees/SplayTreeTest.java) * [TreapTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/trees/TreapTest.java)