diff options
Diffstat (limited to 'challenge-336/roger-bell-west/python/ch-2.py')
| -rwxr-xr-x | challenge-336/roger-bell-west/python/ch-2.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/challenge-336/roger-bell-west/python/ch-2.py b/challenge-336/roger-bell-west/python/ch-2.py new file mode 100755 index 0000000000..da264be42b --- /dev/null +++ b/challenge-336/roger-bell-west/python/ch-2.py @@ -0,0 +1,36 @@ +#! /usr/bin/python3 + +def finalscore(a): + p = [] + for n in a: + match n: + case "C": + p.pop() + case "D": + p.append(2 * p[-1]) + case "+": + p.append(p[-2] + p[-1]) + case _: + p.append(int(n)) + return sum(p) + +import unittest + +class TestFinalscore(unittest.TestCase): + + def test_ex1(self): + self.assertEqual(finalscore(["5", "2", "C", "D", "+"]), 30, 'example 1') + + def test_ex2(self): + self.assertEqual(finalscore(["5", "-2", "4", "C", "D", "9", "+", "+"]), 27, 'example 2') + + def test_ex3(self): + self.assertEqual(finalscore(["7", "D", "D", "C", "+", "3"]), 45, 'example 3') + + def test_ex4(self): + self.assertEqual(finalscore(["-5", "-10", "+", "D", "C", "+"]), -55, 'example 4') + + def test_ex5(self): + self.assertEqual(finalscore(["3", "6", "+", "D", "C", "8", "+", "D", "-2", "C", "+"]), 128, 'example 5') + +unittest.main() |
