diff options
Diffstat (limited to 'challenge-099/roger-bell-west/python')
| -rwxr-xr-x | challenge-099/roger-bell-west/python/ch-1.py | 37 | ||||
| -rwxr-xr-x | challenge-099/roger-bell-west/python/ch-2.py | 39 |
2 files changed, 76 insertions, 0 deletions
diff --git a/challenge-099/roger-bell-west/python/ch-1.py b/challenge-099/roger-bell-west/python/ch-1.py new file mode 100755 index 0000000000..8a3140e45e --- /dev/null +++ b/challenge-099/roger-bell-west/python/ch-1.py @@ -0,0 +1,37 @@ +#! /usr/bin/python3 + +import re + +def pm(text,match): + rl=list() + rl.append("^") + for c in match: + if c == '?': + rl.append(".") + elif c == '*': + rl.append(".*") + else: + rl.append(c) + rl.append("$") + rls=''.join(rl) + if re.match(rls,text): + return 1 + return 0 + +import unittest + +class TestPm(unittest.TestCase): + + def test_ex1(self): + self.assertEqual(pm('abcde','a*e'),1,'example 1') + + def test_ex2(self): + self.assertEqual(pm('abcde','a*d'),0,'example 2') + + def test_ex3(self): + self.assertEqual(pm('abcde','?b*d'),0,'example 3') + + def test_ex4(self): + self.assertEqual(pm('abcde','a*c?e'),1,'example 4') + +unittest.main() diff --git a/challenge-099/roger-bell-west/python/ch-2.py b/challenge-099/roger-bell-west/python/ch-2.py new file mode 100755 index 0000000000..2acef1cb02 --- /dev/null +++ b/challenge-099/roger-bell-west/python/ch-2.py @@ -0,0 +1,39 @@ +#! /usr/bin/python3 + +from collections import defaultdict + +def us(text,match): + s=defaultdict(list) + for i,c in enumerate(text): + s[c].append(i) + j=list() + for c in match: + if c in s: + j.append(s[c]) + else: + return 0 + o=list(); + for i in range(len(j[0])): + o.append(1) + for m in range(1,len(j)): + n=list() + for bi in range(len(j[m])): + t=0 + for ai in range(len(j[m-1])): + if j[m-1][ai] < j[m][bi]: + t += o[ai] + n.append(t) + o=n + return sum(o) + +import unittest + +class TestUs(unittest.TestCase): + + def test_ex1(self): + self.assertEqual(us('littleit','lit'),5,'example 1') + + def test_ex2(self): + self.assertEqual(us('london','lon'),3,'example 2') + +unittest.main() |
