diff options
| author | 冯昶 <fengchang@novel-supertv.com> | 2020-10-13 21:53:07 +0800 |
|---|---|---|
| committer | 冯昶 <fengchang@novel-supertv.com> | 2020-10-13 21:53:07 +0800 |
| commit | a3b7884792e5b7a8f147a294989fa49b65e9308f (patch) | |
| tree | 27bd5f483c68238e9708d20f5985e2c8a578a0f3 /challenge-082/roger-bell-west/python | |
| parent | fa2e628623cb8c8437ff27ffe231894c7593f777 (diff) | |
| parent | 73bd8af8d58941b8066141bc3fc64cf4165d80b5 (diff) | |
| download | perlweeklychallenge-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-x | challenge-082/roger-bell-west/python/ch-1.py | 40 | ||||
| -rwxr-xr-x | challenge-082/roger-bell-west/python/ch-2.py | 37 |
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() |
