aboutsummaryrefslogtreecommitdiff
path: root/challenge-099/roger-bell-west/python
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-02-09 23:23:41 +0000
committerGitHub <noreply@github.com>2021-02-09 23:23:41 +0000
commit729877b25a4bb56c8c782196ca96f9ceccf05e26 (patch)
tree7bdae85f1226b91e2545726c5301622ae7145977 /challenge-099/roger-bell-west/python
parentc2632df608cd7ad055586aaa4d704619e0f96c01 (diff)
parentc1563b79408590d253d2840f5781bde3f15ca449 (diff)
downloadperlweeklychallenge-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-xchallenge-099/roger-bell-west/python/ch-1.py37
-rwxr-xr-xchallenge-099/roger-bell-west/python/ch-2.py39
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()