aboutsummaryrefslogtreecommitdiff
path: root/challenge-152/roger-bell-west/python
diff options
context:
space:
mode:
authordrbaggy <js5@sanger.ac.uk>2022-02-17 01:16:07 +0000
committerdrbaggy <js5@sanger.ac.uk>2022-02-17 01:16:07 +0000
commit32bf1349de3436301ed753dc24ae0652b3cded26 (patch)
tree40a8ce975c9dba0aaef8f8d8e8475a4ccfcde75d /challenge-152/roger-bell-west/python
parenta49da719c0b0a3580168798f7785eb814378e226 (diff)
parent82393908f2bf4dd4f5a35f2b6b2c7892611fec9a (diff)
downloadperlweeklychallenge-club-32bf1349de3436301ed753dc24ae0652b3cded26.tar.gz
perlweeklychallenge-club-32bf1349de3436301ed753dc24ae0652b3cded26.tar.bz2
perlweeklychallenge-club-32bf1349de3436301ed753dc24ae0652b3cded26.zip
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'challenge-152/roger-bell-west/python')
-rwxr-xr-xchallenge-152/roger-bell-west/python/ch-1.py19
-rwxr-xr-xchallenge-152/roger-bell-west/python/ch-2.py35
2 files changed, 54 insertions, 0 deletions
diff --git a/challenge-152/roger-bell-west/python/ch-1.py b/challenge-152/roger-bell-west/python/ch-1.py
new file mode 100755
index 0000000000..9da8902aeb
--- /dev/null
+++ b/challenge-152/roger-bell-west/python/ch-1.py
@@ -0,0 +1,19 @@
+#! /usr/bin/python3
+
+import unittest
+
+def tsp(tree):
+ mp=0
+ for r in tree:
+ mp += min(r)
+ return mp
+
+class TestTsp(unittest.TestCase):
+
+ def test_ex1(self):
+ self.assertEqual(tsp([[1],[5,3],[2,3,4],[7,1,0,2],[6,4,5,2,8]]),8,'example 1')
+
+ def test_ex2(self):
+ self.assertEqual(tsp([[5],[2,3],[4,1,4],[0,1,2,3],[7,2,4,1,9]]),9,'example 2')
+
+unittest.main()
diff --git a/challenge-152/roger-bell-west/python/ch-2.py b/challenge-152/roger-bell-west/python/ch-2.py
new file mode 100755
index 0000000000..52518be11a
--- /dev/null
+++ b/challenge-152/roger-bell-west/python/ch-2.py
@@ -0,0 +1,35 @@
+#! /usr/bin/python3
+
+import unittest
+
+class Rect(object):
+
+ def __init__(self,_xy1,_xy2):
+ self.xy1=[min(_xy1[0],_xy2[0]),min(_xy1[1],_xy2[1])]
+ self.xy2=[max(_xy1[0],_xy2[0]),max(_xy1[1],_xy2[1])]
+
+ def area(self):
+ area=1
+ for axis in range(2):
+ area *= self.xy2[axis]-self.xy1[axis]
+ return area
+
+ def overlap(self,other):
+ area=1
+ for axis in range(2):
+ area *= max(0,
+ min(self.xy2[axis],other.xy2[axis])-
+ max(self.xy1[axis],other.xy1[axis]))
+ return area
+
+ def fullarea(self,other):
+ return self.area()+other.area()-self.overlap(other)
+
+class TestRect(unittest.TestCase):
+ def test_ex1(self):
+ self.assertEqual(Rect([-1,0],[2,2]).fullarea(Rect([0,-1],[4,4])),22,'example 1')
+
+ def test_ex2(self):
+ self.assertEqual(Rect([-3,-1],[1,3]).fullarea(Rect([-1,-3],[2,2])),25,'example 1')
+
+unittest.main()