aboutsummaryrefslogtreecommitdiff
path: root/challenge-141/roger-bell-west/python
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-141/roger-bell-west/python')
-rwxr-xr-xchallenge-141/roger-bell-west/python/ch-1.py36
-rwxr-xr-xchallenge-141/roger-bell-west/python/ch-2.py26
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()