diff options
| author | Dave Jacoby <jacoby.david@gmail.com> | 2022-11-14 09:29:47 -0500 |
|---|---|---|
| committer | Dave Jacoby <jacoby.david@gmail.com> | 2022-11-14 09:29:47 -0500 |
| commit | b43c7c0901bac835315fe78c39db7528e9a9a58d (patch) | |
| tree | dbe607f12c2ea0a4413a552332c40111b2fbbc80 /challenge-190/eric-cheung/python/ch-2.py | |
| parent | 2e12c850a19098123c635ccacfa30b69f6ba66dc (diff) | |
| parent | 377a415bb53d1ed0b16b70d190bb444241216036 (diff) | |
| download | perlweeklychallenge-club-b43c7c0901bac835315fe78c39db7528e9a9a58d.tar.gz perlweeklychallenge-club-b43c7c0901bac835315fe78c39db7528e9a9a58d.tar.bz2 perlweeklychallenge-club-b43c7c0901bac835315fe78c39db7528e9a9a58d.zip | |
Merge branch 'master' of https://github.com/manwar/perlweeklychallenge-club
Diffstat (limited to 'challenge-190/eric-cheung/python/ch-2.py')
| -rwxr-xr-x | challenge-190/eric-cheung/python/ch-2.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/challenge-190/eric-cheung/python/ch-2.py b/challenge-190/eric-cheung/python/ch-2.py new file mode 100755 index 0000000000..cc9f934746 --- /dev/null +++ b/challenge-190/eric-cheung/python/ch-2.py @@ -0,0 +1,54 @@ +
+## Credit:
+## https://github.com/manwar/perlweeklychallenge-club/blob/master/challenge-190/roger-bell-west/python/ch-2.py
+
+from collections import deque
+
+def GetMap(strFuncInput):
+ return chr(int(strFuncInput) + 64)
+
+def GetStack(stackLeft, stackLeftTail, nLastPos):
+
+ stackCopy = stackLeft.copy()
+ stackCopy.append(stackLeftTail[0:nLastPos])
+ stackCopy.append(stackLeftTail[nLastPos:])
+
+ return stackCopy
+
+def decodedList(strFuncInput):
+ stackTemp = deque()
+ stackTemp.append([strFuncInput])
+ arrTempOutput = set()
+
+ while len(stackTemp) > 0:
+
+ stackTempPopLeft = stackTemp.popleft()
+ stackTempPopLeftTail = stackTempPopLeft.pop()
+
+ if len(stackTempPopLeftTail) == 0:
+ arrTempOutput.add(tuple(stackTempPopLeft))
+ continue
+
+ if stackTempPopLeftTail[0] != "0":
+ stackTemp.append(GetStack(stackTempPopLeft, stackTempPopLeftTail, 1))
+
+ if len(stackTempPopLeftTail) >= 2:
+ nCheckVal = int(stackTempPopLeftTail[0:2])
+ if nCheckVal >= 1 and nCheckVal <= 26:
+ stackTemp.append(GetStack(stackTempPopLeft, stackTempPopLeftTail, 2))
+
+ arrOuput = []
+
+ for elemLoop in arrTempOutput:
+ arrOuput.append("".join(GetMap(charLoop) for charLoop in elemLoop))
+
+ arrOuput.sort()
+
+ return arrOuput
+
+
+## strInput = "11" ## Example 1
+## strInput = "1115" ## Example 2
+strInput = "127" ## Example 3
+
+print (decodedList(strInput))
|
