diff options
Diffstat (limited to 'challenge-308/steven-wilson/python/ch-2.py')
| -rw-r--r-- | challenge-308/steven-wilson/python/ch-2.py | 25 |
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) |
