Skip to content

Commit 3e6d1aa

Browse files
author
Gonzalo Diaz
committed
[Hacker Rank] Interview Preparation Kit: Miscellaneous: Maximum Xor. First steps.
1 parent 7d82ba7 commit 3e6d1aa

File tree

3 files changed

+56
-0
lines changed

3 files changed

+56
-0
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# pylint: disable=line-too-long
2+
# @link Problem definition [[docs/hackerrank/interview_preparation_kit/miscellaneous/flipping-bits.md]] # noqa
3+
# pylint: enable=line-too-long
4+
5+
def maxXor(arr: list[int], queries: list[int]) -> list[int]:
6+
result = []
7+
8+
for j in queries:
9+
maximum = 0
10+
for x in arr:
11+
maximum = max(maximum, j ^ x)
12+
result.append(maximum)
13+
14+
return result
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
[
2+
{
3+
"title": "Sample Test case 0",
4+
"arr": [0, 1, 2],
5+
"queries": [3, 7, 2],
6+
"expected": [3, 7, 3]
7+
},
8+
{
9+
"title": "Sample Test case 1",
10+
"arr": [5, 1, 7, 4, 3],
11+
"queries": [2, 0],
12+
"expected": [7, 7]
13+
},
14+
{
15+
"title": "Sample Test case 2",
16+
"arr": [1, 3, 5, 7],
17+
"queries": [17, 6],
18+
"expected": [22, 7]
19+
}
20+
]
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import unittest
2+
from pathlib import Path
3+
4+
from ....lib.loader import loadTestCases
5+
from .maximum_xor import maxXor
6+
7+
FILE_PATH = str(Path(__file__).resolve().parent)
8+
9+
TEST_CASES = loadTestCases(
10+
FILE_PATH + '/maximum_xor.testcases.json')
11+
12+
13+
class TestMaximumXor(unittest.TestCase):
14+
15+
def test_maximum_xor(self):
16+
17+
for _, _tt in enumerate(TEST_CASES):
18+
19+
self.assertEqual(
20+
maxXor(_tt['arr'], _tt['queries']), _tt['expected'],
21+
f"{_} | maxXor({_tt['arr']}, {_tt['queries']}) must be "
22+
f"=> {_tt['expected']}")

0 commit comments

Comments
 (0)