diff options
Diffstat (limited to 'challenge-141/roger-bell-west/python')
| -rwxr-xr-x | challenge-141/roger-bell-west/python/ch-1.py | 36 | ||||
| -rwxr-xr-x | challenge-141/roger-bell-west/python/ch-2.py | 26 |
2 files changed, 62 insertions, 0 deletions
diff --git a/challenge-141/roger-bell-west/python/ch-1.py b/challenge-141/roger-bell-west/python/ch-1.py new file mode 100755 index 0000000000..b1e8726449 --- /dev/null +++ b/challenge-141/roger-bell-west/python/ch-1.py @@ -0,0 +1,36 @@ +#! /usr/bin/python3 + +import unittest + +from math import sqrt + +def factorcount(n): + if n==1: + return 1 + f=2 + s=int(sqrt(n)) + if s*s==n: + s-=1 + f+=1 + for pf in range(2,s+1): + if n % pf == 0: + f += 2 + return f + +def divisors(count,n): + nn=n + a=[] + t=0 + while nn: + t+=1 + if factorcount(t)==count: + a.append(t) + nn-=1 + return a + +class TestDivisors(unittest.TestCase): + + def test_ex1(self): + self.assertEqual(divisors(8,10),[24,30,40,42,54,56,66,70,78,88],'example 2') + +unittest.main() diff --git a/challenge-141/roger-bell-west/python/ch-2.py b/challenge-141/roger-bell-west/python/ch-2.py new file mode 100755 index 0000000000..1bcf983c5f --- /dev/null +++ b/challenge-141/roger-bell-west/python/ch-2.py @@ -0,0 +1,26 @@ +#! /usr/bin/python3 + +import unittest + +def likenumber(source,factor): + s=[int(i) for i in str(source)] + m=len(s) + n=0 + for mask in range(1,(1<<m)-1): + c=0 + for di in range(m): + if mask & 1<<di: + c=c*10+s[di] + if c % factor == 0: + n+=1 + return n + +class TestLikenumber(unittest.TestCase): + + def test_ex1(self): + self.assertEqual(likenumber(1234,2),9,'example 1') + + def test_ex2(self): + self.assertEqual(likenumber(768,4),3,'example 2') + +unittest.main() |
