diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-02-09 23:23:41 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-02-09 23:23:41 +0000 |
| commit | 729877b25a4bb56c8c782196ca96f9ceccf05e26 (patch) | |
| tree | 7bdae85f1226b91e2545726c5301622ae7145977 /challenge-099/roger-bell-west/python | |
| parent | c2632df608cd7ad055586aaa4d704619e0f96c01 (diff) | |
| parent | c1563b79408590d253d2840f5781bde3f15ca449 (diff) | |
| download | perlweeklychallenge-club-729877b25a4bb56c8c782196ca96f9ceccf05e26.tar.gz perlweeklychallenge-club-729877b25a4bb56c8c782196ca96f9ceccf05e26.tar.bz2 perlweeklychallenge-club-729877b25a4bb56c8c782196ca96f9ceccf05e26.zip | |
Merge pull request #3485 from Firedrake/rogerbw-challenge-099
Solutions for challenge #099
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() |
