aboutsummaryrefslogtreecommitdiff
path: root/challenge-151/lubos-kolouch/python
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-02-12 16:32:34 +0000
committerGitHub <noreply@github.com>2022-02-12 16:32:34 +0000
commitf651ab8add6cf47e6b687eec43adca058d619d1a (patch)
tree589f3934516e1f45f3614fec4c6f8d632bb98067 /challenge-151/lubos-kolouch/python
parentdc5f66c3855869d4589862093a02dbfe7465c62c (diff)
parent4f2b0c70d8340837bed2c92c5dfbd816d6c612e8 (diff)
downloadperlweeklychallenge-club-f651ab8add6cf47e6b687eec43adca058d619d1a.tar.gz
perlweeklychallenge-club-f651ab8add6cf47e6b687eec43adca058d619d1a.tar.bz2
perlweeklychallenge-club-f651ab8add6cf47e6b687eec43adca058d619d1a.zip
Merge pull request #5642 from LubosKolouch/master
Challenge 151 LK
Diffstat (limited to 'challenge-151/lubos-kolouch/python')
-rw-r--r--challenge-151/lubos-kolouch/python/ch-1.py30
-rw-r--r--challenge-151/lubos-kolouch/python/ch-2.py26
2 files changed, 56 insertions, 0 deletions
diff --git a/challenge-151/lubos-kolouch/python/ch-1.py b/challenge-151/lubos-kolouch/python/ch-1.py
new file mode 100644
index 0000000000..fd34a05784
--- /dev/null
+++ b/challenge-151/lubos-kolouch/python/ch-1.py
@@ -0,0 +1,30 @@
+import re
+
+
+def get_min_depth(input: str):
+ """Calculate the depth"""
+ # Input: '1 | 2 3 | 4 5'
+
+ # iterate through the layers. If the next layer does not have 2^n items,
+ # there must be a leaf node
+
+ input = re.sub(r"\s", "", input)
+ layers = input.split("|")
+
+ for layer_count, _ in enumerate(layers, 1):
+ # if not defined means we are at the last layer
+
+ try:
+ items_count = len(layers[layer_count])
+ except IndexError:
+ return layer_count
+
+ if items_count != 2**layer_count:
+ return layer_count
+
+ return None
+
+
+assert get_min_depth("1 | 2 3 | 4 5") == 2
+assert get_min_depth("1 | 2 3 | 4 * * 5 | * 6") == 3
+assert get_min_depth("1 | 2 3") == 2
diff --git a/challenge-151/lubos-kolouch/python/ch-2.py b/challenge-151/lubos-kolouch/python/ch-2.py
new file mode 100644
index 0000000000..d71588785d
--- /dev/null
+++ b/challenge-151/lubos-kolouch/python/ch-2.py
@@ -0,0 +1,26 @@
+cache = {}
+
+
+def get_houses_max(houses: list):
+ """Calculate the best way through the houses"""
+
+ try:
+ return cache[",".join(map(str, houses))]
+ except KeyError:
+ pass
+
+ max_value = 0
+ house_index = 0
+
+ for house_index, _ in enumerate(houses[2:]):
+ next_houses_values = get_houses_max(houses[2 + house_index :])
+ if next_houses_values > max_value:
+ max_value = next_houses_values
+
+ cache[",".join(map(str, houses))] = houses[0] + max_value
+ return houses[0] + max_value
+
+
+assert get_houses_max([2, 4, 5]) == 7
+cache = {}
+assert get_houses_max([4, 2, 3, 6, 5, 3]) == 13