diff options
| author | Michael Manring <michael@manring> | 2025-02-11 20:21:22 +1100 |
|---|---|---|
| committer | Michael Manring <michael@manring> | 2025-02-11 20:25:44 +1100 |
| commit | c1c1323849a9659113f16d26f56d5548722de1e8 (patch) | |
| tree | 13b64de779e0f3e796aae3a7ba35d0aec8ff90c1 /challenge-308/pokgopun/python | |
| parent | 824dd6ce5ffa5e3545787712d213bbbf02639f47 (diff) | |
| download | perlweeklychallenge-club-c1c1323849a9659113f16d26f56d5548722de1e8.tar.gz perlweeklychallenge-club-c1c1323849a9659113f16d26f56d5548722de1e8.tar.bz2 perlweeklychallenge-club-c1c1323849a9659113f16d26f56d5548722de1e8.zip | |
pwc308 minor update on task#2
Diffstat (limited to 'challenge-308/pokgopun/python')
| -rw-r--r-- | challenge-308/pokgopun/python/ch-2.py | 41 |
1 files changed, 20 insertions, 21 deletions
diff --git a/challenge-308/pokgopun/python/ch-2.py b/challenge-308/pokgopun/python/ch-2.py index 5be727177d..25d2716b60 100644 --- a/challenge-308/pokgopun/python/ch-2.py +++ b/challenge-308/pokgopun/python/ch-2.py @@ -37,27 +37,26 @@ SO WHAT DO YOU THINK ? ### solution by pokgopun@gmail.com def decodeXOR(enc: tuple[int], init: int) -> tuple[int]: - org = [init] - for i in range(len(enc)): - o = 0 - if enc[i] == org[i]: ### a ^ o = a --> o = 0 - pass - elif enc[i] == 0: ### a ^ o = 0 --> o = a - o = org[i] - elif org[i] == 0: ### 0 ^ o = a --> o = a - o = enc[i] - else: - #print(i) - dst, src = enc[i], org[i] - if dst < src: - dst, src = src, dst - b = 1 - while dst > 0: - o += b * abs(dst%2 - src%2) - b *= 2 - dst //= 2 - src //= 2 - org.append(o) + l = len(enc) + org = [0 for i in range(l+1)] + org[0] = init + for i in range(l): + dst, src = enc[i], org[i] + if dst == src: ### a ^ o = a --> o = 0 + continue + #print(i) + if dst > src: + dst, src = src, dst + orgn = 0 + b = 1 + while dst > 0: + orgn += b * abs(dst%2 - src%2) + b *= 2 + dst //= 2 + src //= 2 + if src > 0: + orgn += b * src + org[i+1] = orgn return tuple(org) import unittest |
