diff options
| author | 冯昶 <fengchang@novel-supertv.com> | 2023-02-06 18:29:49 +0800 |
|---|---|---|
| committer | 冯昶 <fengchang@novel-supertv.com> | 2023-02-06 18:29:49 +0800 |
| commit | 0f18fa3badcf6e6ddc58e793c868ce041054a496 (patch) | |
| tree | ad0b6ebe9b4b6b896475079163a282aec6b3fee3 /challenge-202/roger-bell-west/python/ch-2.py | |
| parent | b99b26aef8b033642ff3794f0fddf6deb3234b43 (diff) | |
| parent | f92e84261b474f81c014f4982268d6e2797b66d9 (diff) | |
| download | perlweeklychallenge-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-x | challenge-202/roger-bell-west/python/ch-2.py | 48 |
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() |
