aboutsummaryrefslogtreecommitdiff
path: root/challenge-077/roger-bell-west/python
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2020-09-07 10:29:57 +0100
committerGitHub <noreply@github.com>2020-09-07 10:29:57 +0100
commitfbfee38e0e12ed07abcf88bd2705a9515ce11e13 (patch)
tree0b9e6d0a7e0e7800df5b7a825c2b97dc0f9f8396 /challenge-077/roger-bell-west/python
parent088221170be5d4e05e4b8cc3966443e9e15d6393 (diff)
parent086e57c56348285068f346a5a0053f61a939512b (diff)
downloadperlweeklychallenge-club-fbfee38e0e12ed07abcf88bd2705a9515ce11e13.tar.gz
perlweeklychallenge-club-fbfee38e0e12ed07abcf88bd2705a9515ce11e13.tar.bz2
perlweeklychallenge-club-fbfee38e0e12ed07abcf88bd2705a9515ce11e13.zip
Merge pull request #2227 from Firedrake/rogerbw-challenge-077
Solutions for challenge #77.
Diffstat (limited to 'challenge-077/roger-bell-west/python')
-rwxr-xr-xchallenge-077/roger-bell-west/python/ch-1.py27
-rwxr-xr-xchallenge-077/roger-bell-west/python/ch-2.py33
2 files changed, 60 insertions, 0 deletions
diff --git a/challenge-077/roger-bell-west/python/ch-1.py b/challenge-077/roger-bell-west/python/ch-1.py
new file mode 100755
index 0000000000..14e3f9cefb
--- /dev/null
+++ b/challenge-077/roger-bell-west/python/ch-1.py
@@ -0,0 +1,27 @@
+#! /usr/bin/python3
+
+import unittest
+from itertools import combinations
+
+def psum(n):
+ p=[1,1]
+ while (p[-1]<=n):
+ p.append(p[-1]+p[-2])
+ del p[0]
+ o=list()
+ for l in range (1,len(p)):
+ for c in combinations(p,l):
+ if (sum(c)==n):
+ o.append(c)
+ break
+ return o
+
+class TestMajority(unittest.TestCase):
+
+ def test_ex1(self):
+ self.assertEqual(psum(6),[(1, 5), (1, 2, 3)],'example 6-2')
+
+ def test_ex2(self):
+ self.assertEqual(psum(9),[(1, 8), (1, 3, 5)],'example 9-2')
+
+unittest.main()
diff --git a/challenge-077/roger-bell-west/python/ch-2.py b/challenge-077/roger-bell-west/python/ch-2.py
new file mode 100755
index 0000000000..d5ad3c7cab
--- /dev/null
+++ b/challenge-077/roger-bell-west/python/ch-2.py
@@ -0,0 +1,33 @@
+#! /usr/bin/python3
+
+import unittest
+
+def nx(n):
+ mr=len(n)-1
+ mc=len(n[0])-1
+ isol=0
+ for r in (range(0,mr+1)):
+ for c in (range(0,mc+1)):
+ if n[r][c] != 'X':
+ continue
+ isolated=1
+ for dr in (-1,0,1):
+ if (r+dr >= 0 and r+dr <= mr):
+ for dc in (-1,0,1):
+ if ((dc != 0 or dr != 0) and c+dc >= 0 and c+dc <= mc):
+ if n[r+dr][c+dc] == 'X':
+ isolated=0
+ break
+ if (isolated):
+ isol += 1
+ return isol
+
+class TestMajority(unittest.TestCase):
+
+ def test_ex1(self):
+ self.assertEqual(nx(('O O X'.split(),'X O O'.split(),'X O O'.split())),1,'example 1')
+
+ def test_ex2(self):
+ self.assertEqual(nx(('O O X O'.split(),'X O O O'.split(),'X O O X'.split(),'O X O O'.split())),2,'example 2')
+
+unittest.main()