Skip to content

Commit 4a39672

Browse files
authored
Merge pull request #228 from sir-gon/feature/flipping_bits_alternative
[Hacker Rank] Interview Preparation Kit: Miscellaneous: Flipping bits…
2 parents fe3b4ad + 84ec4bc commit 4a39672

File tree

2 files changed

+68
-0
lines changed

2 files changed

+68
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// @link Problem definition [[docs/hackerrank/interview_preparation_kit/miscellaneous/flipping-bits.md]]
2+
3+
namespace algorithm_exercises_csharp.hackerrank.interview_preparation_kit.miscellaneous;
4+
5+
using System.Diagnostics.CodeAnalysis;
6+
using System.Text;
7+
8+
public static class FlippingBitsAlternative
9+
{
10+
public static long flippingBits(long n)
11+
{
12+
return ~n & 0xFFFFFFFF; // Use bitwise NOT and mask to ensure 32 bits
13+
}
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
namespace algorithm_exercises_csharp_test.hackerrank.interview_preparation_kit.miscellaneous;
2+
3+
using algorithm_exercises_csharp_test.common;
4+
using algorithm_exercises_csharp.hackerrank.interview_preparation_kit.miscellaneous;
5+
6+
[TestClass]
7+
public class FlippingBitsAlternativeTest
8+
{
9+
public class FlippingBitsAlternativeTestCaseTest(long input, long answer)
10+
{
11+
public long Input { get; } = input;
12+
public long Answer { get; } = answer;
13+
}
14+
15+
public class FlippingBitsAlternativeTestCase(string title, List<FlippingBitsAlternativeTestCaseTest> tests)
16+
{
17+
public string Title { get; } = title;
18+
public List<FlippingBitsAlternativeTestCaseTest> Tests { get; } = tests;
19+
}
20+
21+
private List<FlippingBitsAlternativeTestCase> testCases { get; set; } = default!;
22+
23+
[TestInitialize]
24+
public void testInitialize()
25+
{
26+
testCases = JsonLoader.resourceLoad<List<FlippingBitsAlternativeTestCase>>(
27+
"hackerrank/interview_preparation_kit/miscellaneous/flipping_bits.testcases.json"
28+
) ?? [];
29+
}
30+
31+
[TestMethod]
32+
public void testFlippingBitsAlternative()
33+
{
34+
long result;
35+
36+
foreach (FlippingBitsAlternativeTestCase tests in testCases)
37+
{
38+
foreach (FlippingBitsAlternativeTestCaseTest test in tests.Tests)
39+
{
40+
result = FlippingBitsAlternative.flippingBits(test.Input);
41+
Assert.AreEqual(
42+
test.Answer,
43+
result,
44+
string.Format(
45+
System.Globalization.CultureInfo.InvariantCulture,
46+
"FlippingBitsAlternative.flippingBits({0}) => must be: {1}",
47+
test.Input,
48+
test.Answer
49+
)
50+
);
51+
}
52+
}
53+
}
54+
}

0 commit comments

Comments
 (0)