aboutsummaryrefslogtreecommitdiff
path: root/challenge-082/roger-bell-west/python
diff options
context:
space:
mode:
author冯昶 <fengchang@novel-supertv.com>2020-10-13 21:53:07 +0800
committer冯昶 <fengchang@novel-supertv.com>2020-10-13 21:53:07 +0800
commita3b7884792e5b7a8f147a294989fa49b65e9308f (patch)
tree27bd5f483c68238e9708d20f5985e2c8a578a0f3 /challenge-082/roger-bell-west/python
parentfa2e628623cb8c8437ff27ffe231894c7593f777 (diff)
parent73bd8af8d58941b8066141bc3fc64cf4165d80b5 (diff)
downloadperlweeklychallenge-club-a3b7884792e5b7a8f147a294989fa49b65e9308f.tar.gz
perlweeklychallenge-club-a3b7884792e5b7a8f147a294989fa49b65e9308f.tar.bz2
perlweeklychallenge-club-a3b7884792e5b7a8f147a294989fa49b65e9308f.zip
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'challenge-082/roger-bell-west/python')
-rwxr-xr-xchallenge-082/roger-bell-west/python/ch-1.py40
-rwxr-xr-xchallenge-082/roger-bell-west/python/ch-2.py37
2 files changed, 77 insertions, 0 deletions
diff --git a/challenge-082/roger-bell-west/python/ch-1.py b/challenge-082/roger-bell-west/python/ch-1.py
new file mode 100755
index 0000000000..88e8cc4399
--- /dev/null
+++ b/challenge-082/roger-bell-west/python/ch-1.py
@@ -0,0 +1,40 @@
+#! /usr/bin/python3
+
+import unittest
+from math import sqrt
+
+def factor(n):
+ o=set()
+ o.add(1)
+ o.add(n)
+ for i in range(2,int(sqrt(n))+1):
+ if (n % i == 0):
+ o.add(int(n/i))
+ o.add(i)
+ return o
+
+def commonfactor(*fs):
+ f=list(map(factor,fs))
+ s=f.pop();
+ while (f):
+ s = s & f.pop()
+ return sorted(s)
+
+class TestCf(unittest.TestCase):
+
+ def test_f1(self):
+ self.assertEqual(factor(12),set((1,2,3,4,6,12)),'twelve')
+
+ def test_f2(self):
+ self.assertEqual(factor(18),set((1,2,3,6,9,18)),'eighteen')
+
+ def test_f3(self):
+ self.assertEqual(factor(23),set((1,23)),'twenty-three')
+
+ def test_cf1(self):
+ self.assertEqual(commonfactor(12,18),[1,2,3,6],'twelve-eighteen')
+
+ def test_cf2(self):
+ self.assertEqual(commonfactor(18,23),[1],'twelve-twentythree')
+
+unittest.main()
diff --git a/challenge-082/roger-bell-west/python/ch-2.py b/challenge-082/roger-bell-west/python/ch-2.py
new file mode 100755
index 0000000000..4b88c1acf0
--- /dev/null
+++ b/challenge-082/roger-bell-west/python/ch-2.py
@@ -0,0 +1,37 @@
+#! /usr/bin/python3
+
+import unittest
+from collections import deque
+
+def isinterleave(a,b,c):
+ l=list(map(len,(a,b,c)))
+ buf=deque()
+ buf.append([0,0,0])
+ while (buf):
+ n=buf.popleft()
+ if (n[2] >= l[2]):
+ return 1
+ if ((n[0] < l[0]) and (a[n[0]] == c[n[2]])):
+ buf.append([n[0]+1,n[1],n[2]+1])
+ if ((n[1] < l[1]) and (b[n[1]] == c[n[2]])):
+ buf.append([n[0],n[1]+1,n[2]+1])
+ return 0
+
+class TestInterleave(unittest.TestCase):
+
+ def test_ex1(self):
+ self.assertEqual(isinterleave('XY','X','XXY'),1,'example 1')
+
+ def test_ex2(self):
+ self.assertEqual(isinterleave('XXY','XXZ','XXXXZY'),1,'example 2')
+
+ def test_ex3(self):
+ self.assertEqual(isinterleave('YX','X','XXY'),0,'example 3')
+
+ def test_ex4(self):
+ self.assertEqual(isinterleave('ACF','BDEG','ABCDEFG'),1,'example 4')
+
+ def test_ex5(self):
+ self.assertEqual(isinterleave('ACF','BDGE','ABCDEFG'),0,'example 5')
+
+unittest.main()