aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Manring <michael@manring>2025-02-11 20:21:22 +1100
committerMichael Manring <michael@manring>2025-02-11 20:25:44 +1100
commitc1c1323849a9659113f16d26f56d5548722de1e8 (patch)
tree13b64de779e0f3e796aae3a7ba35d0aec8ff90c1
parent824dd6ce5ffa5e3545787712d213bbbf02639f47 (diff)
downloadperlweeklychallenge-club-c1c1323849a9659113f16d26f56d5548722de1e8.tar.gz
perlweeklychallenge-club-c1c1323849a9659113f16d26f56d5548722de1e8.tar.bz2
perlweeklychallenge-club-c1c1323849a9659113f16d26f56d5548722de1e8.zip
pwc308 minor update on task#2
-rw-r--r--challenge-308/pokgopun/go/ch-2.go40
-rw-r--r--challenge-308/pokgopun/python/ch-2.py41
2 files changed, 39 insertions, 42 deletions
diff --git a/challenge-308/pokgopun/go/ch-2.go b/challenge-308/pokgopun/go/ch-2.go
index 12f0bba5ea..716421da88 100644
--- a/challenge-308/pokgopun/go/ch-2.go
+++ b/challenge-308/pokgopun/go/ch-2.go
@@ -58,29 +58,27 @@ func (in input) process() ints {
org := make(ints, l+1)
org[0] = in.init
for i := range l {
+ dst, src := enc[i], org[i]
+ if dst == src {
+ continue
+ }
+ if dst > src {
+ dst, src = src, dst
+ }
orgn := 0
- switch {
- case enc[i] == org[i]:
- case enc[i] == 0:
- orgn = org[i]
- case org[i] == 0:
- orgn = enc[i]
- default:
- b := 1
- dst, src := enc[i], org[i]
- if dst < src {
- dst, src = src, dst
- }
- for dst > 0 {
- o := dst%2 - src%2
- if o < 0 {
- o = 1
- }
- orgn += b * o
- b *= 2
- dst /= 2
- src /= 2
+ b := 1
+ for dst > 0 {
+ o := dst%2 - src%2
+ if o < 0 {
+ o = 1
}
+ orgn += b * o
+ b *= 2
+ dst /= 2
+ src /= 2
+ }
+ if src > 0 {
+ orgn += b * src
}
org[i+1] = orgn
}
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