aboutsummaryrefslogtreecommitdiff
path: root/challenge-308/steven-wilson/python/ch-2.py
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-308/steven-wilson/python/ch-2.py')
-rw-r--r--challenge-308/steven-wilson/python/ch-2.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/challenge-308/steven-wilson/python/ch-2.py b/challenge-308/steven-wilson/python/ch-2.py
new file mode 100644
index 0000000000..285f6dd2d7
--- /dev/null
+++ b/challenge-308/steven-wilson/python/ch-2.py
@@ -0,0 +1,25 @@
+#!/usr/bin/env python3
+
+
+def decode_xor(initial, encoded):
+ """ Given an encoded array and an initial integer, find the original array
+ that produced the given encoded array. It was encoded such that
+ encoded[i] = orig[i] XOR orig[i + 1].
+
+ >>> decode_xor(1, (1, 2, 3))
+ (1, 0, 2, 1)
+ >>> decode_xor(4, (6, 2, 7, 3))
+ (4, 2, 0, 7, 4)
+ """
+ decoded = [initial]
+
+ for e in encoded:
+ decoded.append(decoded[-1] ^ e)
+
+ return tuple(decoded)
+
+
+if __name__ == "__main__":
+ import doctest
+
+ doctest.testmod(verbose=True)