aboutsummaryrefslogtreecommitdiff
path: root/challenge-202/roger-bell-west/python/ch-2.py
diff options
context:
space:
mode:
author冯昶 <fengchang@novel-supertv.com>2023-02-06 18:29:49 +0800
committer冯昶 <fengchang@novel-supertv.com>2023-02-06 18:29:49 +0800
commit0f18fa3badcf6e6ddc58e793c868ce041054a496 (patch)
treead0b6ebe9b4b6b896475079163a282aec6b3fee3 /challenge-202/roger-bell-west/python/ch-2.py
parentb99b26aef8b033642ff3794f0fddf6deb3234b43 (diff)
parentf92e84261b474f81c014f4982268d6e2797b66d9 (diff)
downloadperlweeklychallenge-club-0f18fa3badcf6e6ddc58e793c868ce041054a496.tar.gz
perlweeklychallenge-club-0f18fa3badcf6e6ddc58e793c868ce041054a496.tar.bz2
perlweeklychallenge-club-0f18fa3badcf6e6ddc58e793c868ce041054a496.zip
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'challenge-202/roger-bell-west/python/ch-2.py')
-rwxr-xr-xchallenge-202/roger-bell-west/python/ch-2.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/challenge-202/roger-bell-west/python/ch-2.py b/challenge-202/roger-bell-west/python/ch-2.py
new file mode 100755
index 0000000000..447a12d6f9
--- /dev/null
+++ b/challenge-202/roger-bell-west/python/ch-2.py
@@ -0,0 +1,48 @@
+#! /usr/bin/python3
+
+import unittest
+
+def widestvalley(a):
+ av = []
+ ac = []
+ l = -1
+ for v in a:
+ if v == l:
+ ac[-1] += 1
+ else:
+ av.append(v)
+ ac.append(1)
+ l = v
+ s = []
+ e = []
+ c = 0
+ for i in range(len(av)):
+ if i ==0 or i == len(av) - 1 or (av[i - 1] < av[i] and av[i] > av[i + 1]):
+ s.append(c)
+ e.append(c + ac[i] - 1)
+ c += ac[i]
+ out = []
+ for i in range(len(s) - 1):
+ if e[i+1] - s[i] + 1 > len(out):
+ out = a[s[i] : e[i+1] + 1];
+ return out
+
+
+class TestWidestvalley(unittest.TestCase):
+
+ def test_ex1(self):
+ self.assertEqual(widestvalley([1, 5, 5, 2, 8]), [5, 5, 2, 8], 'example 1')
+
+ def test_ex2(self):
+ self.assertEqual(widestvalley([2, 6, 8, 5]), [2, 6, 8], 'example 2')
+
+ def test_ex3(self):
+ self.assertEqual(widestvalley([9, 8, 13, 13, 2, 2, 15, 17]), [13, 13, 2, 2, 15, 17], 'example 3')
+
+ def test_ex4(self):
+ self.assertEqual(widestvalley([2, 1, 2, 1, 3]), [2, 1, 2], 'example 4')
+
+ def test_ex5(self):
+ self.assertEqual(widestvalley([1, 3, 3, 2, 1, 2, 3, 3, 2]), [3, 3, 2, 1, 2, 3, 3], 'example 5')
+
+unittest.main()