diff --git a/src/algorithm_exercises_csharp/hackerrank/interview_preparation_kit/miscellaneous/FlippingBitsAlternative.cs b/src/algorithm_exercises_csharp/hackerrank/interview_preparation_kit/miscellaneous/FlippingBitsAlternative.cs new file mode 100644 index 0000000..d6a7672 --- /dev/null +++ b/src/algorithm_exercises_csharp/hackerrank/interview_preparation_kit/miscellaneous/FlippingBitsAlternative.cs @@ -0,0 +1,14 @@ +// @link Problem definition [[docs/hackerrank/interview_preparation_kit/miscellaneous/flipping-bits.md]] + +namespace algorithm_exercises_csharp.hackerrank.interview_preparation_kit.miscellaneous; + +using System.Diagnostics.CodeAnalysis; +using System.Text; + +public static class FlippingBitsAlternative +{ + public static long flippingBits(long n) + { + return ~n & 0xFFFFFFFF; // Use bitwise NOT and mask to ensure 32 bits + } +} diff --git a/src/algorithm_exercises_csharp_test/hackerrank/interview_preparation_kit/miscellaneous/FlippingBitsAlternative.Test.cs b/src/algorithm_exercises_csharp_test/hackerrank/interview_preparation_kit/miscellaneous/FlippingBitsAlternative.Test.cs new file mode 100644 index 0000000..bbe9a19 --- /dev/null +++ b/src/algorithm_exercises_csharp_test/hackerrank/interview_preparation_kit/miscellaneous/FlippingBitsAlternative.Test.cs @@ -0,0 +1,54 @@ +namespace algorithm_exercises_csharp_test.hackerrank.interview_preparation_kit.miscellaneous; + +using algorithm_exercises_csharp_test.common; +using algorithm_exercises_csharp.hackerrank.interview_preparation_kit.miscellaneous; + +[TestClass] +public class FlippingBitsAlternativeTest +{ + public class FlippingBitsAlternativeTestCaseTest(long input, long answer) + { + public long Input { get; } = input; + public long Answer { get; } = answer; + } + + public class FlippingBitsAlternativeTestCase(string title, List tests) + { + public string Title { get; } = title; + public List Tests { get; } = tests; + } + + private List testCases { get; set; } = default!; + + [TestInitialize] + public void testInitialize() + { + testCases = JsonLoader.resourceLoad>( + "hackerrank/interview_preparation_kit/miscellaneous/flipping_bits.testcases.json" + ) ?? []; + } + + [TestMethod] + public void testFlippingBitsAlternative() + { + long result; + + foreach (FlippingBitsAlternativeTestCase tests in testCases) + { + foreach (FlippingBitsAlternativeTestCaseTest test in tests.Tests) + { + result = FlippingBitsAlternative.flippingBits(test.Input); + Assert.AreEqual( + test.Answer, + result, + string.Format( + System.Globalization.CultureInfo.InvariantCulture, + "FlippingBitsAlternative.flippingBits({0}) => must be: {1}", + test.Input, + test.Answer + ) + ); + } + } + } +}