aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.freedom.nl>2022-02-08 15:12:14 +0100
committerAbigail <abigail@abigail.freedom.nl>2022-02-08 15:12:14 +0100
commitacbd8f6b2a7471edbe77f9ea08ab82db66e1c304 (patch)
treeb8c15022fb8cb9e0f6fb39b634f348c9b94614c4
parent5045026f0fe4bf7ba93d00350f8bb6bbde68f5be (diff)
downloadperlweeklychallenge-club-acbd8f6b2a7471edbe77f9ea08ab82db66e1c304.tar.gz
perlweeklychallenge-club-acbd8f6b2a7471edbe77f9ea08ab82db66e1c304.tar.bz2
perlweeklychallenge-club-acbd8f6b2a7471edbe77f9ea08ab82db66e1c304.zip
Week 151: Python solutions
-rw-r--r--challenge-151/abigail/python/ch-1.py32
-rw-r--r--challenge-151/abigail/python/ch-2.py18
2 files changed, 50 insertions, 0 deletions
diff --git a/challenge-151/abigail/python/ch-1.py b/challenge-151/abigail/python/ch-1.py
new file mode 100644
index 0000000000..12dec88d86
--- /dev/null
+++ b/challenge-151/abigail/python/ch-1.py
@@ -0,0 +1,32 @@
+#!/usr/local/bin/python3
+
+#
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-151
+#
+
+#
+# Run as: python ch-1.py < input-file
+#
+
+import fileinput
+
+for line in fileinput . input ():
+ tree = list (map (lambda row: row . strip () . split (),
+ line . strip () . split ("|")))
+ for d in range (len (tree)):
+ if (d == len (tree) - 1):
+ print (d + 1)
+ break
+ done = False
+ for i in range (len (tree [d])):
+ if tree [d] [i] != "*":
+ ch1 = 2 * i
+ ch2 = 2 * i + 1
+ if ch1 >= len (tree [d + 1]) or (
+ (tree [d + 1] [ch1] == "*" and (
+ ch2 >= len (tree [d + 1]) or tree [d + 1] [ch2] == "*"))):
+ print (d + 1)
+ done = True
+ break
+ if done:
+ break
diff --git a/challenge-151/abigail/python/ch-2.py b/challenge-151/abigail/python/ch-2.py
new file mode 100644
index 0000000000..a20a18329b
--- /dev/null
+++ b/challenge-151/abigail/python/ch-2.py
@@ -0,0 +1,18 @@
+#!/usr/local/bin/python3
+
+#
+# See https://theweeklychallenge.org/blog/perl-weekly-challenge-151
+#
+
+#
+# Run as: python ch-2.py < input-file
+#
+
+import fileinput
+
+for line in fileinput . input ():
+ houses = list (map (lambda x: int (x), line . strip () . split ()))
+ best = [0] * (len (houses) + 2)
+ for i in range (len (houses) - 1, 1, -1):
+ best [i] = max (houses [i] + best [i + 2], best [i + 1])
+ print (houses [0] + best [2])