aboutsummaryrefslogtreecommitdiff
path: root/neighbouring_bitwise_xor.py
diff options
context:
space:
mode:
Diffstat (limited to 'neighbouring_bitwise_xor.py')
-rw-r--r--neighbouring_bitwise_xor.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/neighbouring_bitwise_xor.py b/neighbouring_bitwise_xor.py
new file mode 100644
index 0000000..1e8412b
--- /dev/null
+++ b/neighbouring_bitwise_xor.py
@@ -0,0 +1,30 @@
+# 2683. Neighboring Bitwise XOR
+from functools import reduce
+from operator import xor
+
+"""
+a 0-indexed array 'derived' with length 'n' is derived by computing the
+bitwise xor of adjacnet values in a binary array 'original' of length 'n'.
+specifically, for each index 'i' in the range '[0, n - 1]' if 'i = n - 1'
+then 'derived[i] = original[i] ^ original[0]', otherwise 'derived[i] =
+original[i] ^ original[i + 1]'. given an array 'derived', your task is to
+determine whether there exists a valid binary array 'original' that could
+have formed 'derived'. return true if such an array exists or false
+otherwise.
+"""
+
+
+class Solution(object):
+ def doesValidArrayExist(self, derived):
+ """
+ :type derived: List[int]
+ :rtype: bool
+ """
+ return not reduce(xor, derived)
+
+
+if __name__ == "__main__":
+ obj = Solution()
+ print(obj.doesValidArrayExist(derived=[1, 1, 0]))
+ print(obj.doesValidArrayExist(derived=[1, 1]))
+ print(obj.doesValidArrayExist(derived=[1, 0]))