File tree Expand file tree Collapse file tree 3 files changed +75
-0
lines changed Expand file tree Collapse file tree 3 files changed +75
-0
lines changed Original file line number Diff line number Diff line change
1
+ # https://github.com/elmar-hinz/Python.Challenges
2
+ from challenges import Challenge
3
+
4
+ class HelloGraphChallenge (Challenge ):
5
+ """
6
+ Given: Two nodes and a list of edges
7
+ Return: Graph between the nodes and it's weight
8
+ """
9
+
10
+ sample = '''
11
+ 2
12
+ 4
13
+ 1->2:2
14
+ 2->3:4
15
+ 3->4:10
16
+ 4->5:8
17
+ 5->6:1
18
+ '''
19
+
20
+ expect = '''
21
+ 2->3->4
22
+ 14
23
+ '''
24
+
25
+ def build (self ):
26
+ self .model .start = self .line_to_integer (0 )
27
+ self .model .stop = self .line_to_integer (1 )
28
+ self .model .graph = dict ()
29
+ for edge in self .edges (2 ):
30
+ self .model .graph [edge .tail ] = (edge .head , edge .weight )
31
+
32
+ def calc (self ):
33
+ head = None
34
+ tail = self .model .start
35
+ self .result .graph = [tail ]
36
+ self .result .weight = 0
37
+ while tail != self .model .stop :
38
+ self .result .weight += self .model .graph [tail ][1 ]
39
+ tail = self .model .graph [tail ][0 ]
40
+ self .result .graph .append (tail )
41
+
42
+ def format (self ):
43
+ self .output = self .format_path (self .result .graph )
44
+ self .output += self .br
45
+ self .output += str (self .result .weight )
Original file line number Diff line number Diff line change
1
+ import unittest
2
+ from HelloGraph .challenge import HelloGraphChallenge
3
+
4
+ class HelloGraphTest (unittest .TestCase ):
5
+
6
+ def setUp (self ):
7
+ self .challenge = HelloGraphChallenge ()
8
+
9
+ def test__init__ (self ):
10
+ self .assertIsInstance (self .challenge , HelloGraphChallenge )
11
+ self .assertIn ('5->6' , self .challenge .sample )
12
+ self .assertIn ('2->3->4' , self .challenge .expect )
13
+
14
+ def test_build (self ):
15
+ self .challenge .read ()
16
+ self .challenge .build ()
17
+ self .assertEqual (2 , self .challenge .model .start )
18
+ self .assertEqual (4 , self .challenge .model .stop )
19
+ self .assertEqual (4 , self .challenge .model .graph [3 ][0 ])
20
+ self .assertEqual (10 , self .challenge .model .graph [3 ][1 ])
21
+
22
+ def test_format (self ):
23
+ self .challenge .result .weight = 14
24
+ self .challenge .result .graph = [2 , 3 , 4 ]
25
+ self .challenge .format ()
26
+ self .assertEqual (self .challenge .expectation (), self .challenge .output )
27
+
28
+ def test_full_integration (self ):
29
+ self .challenge .main ()
30
+ self .assertEqual (self .challenge .expectation (), self .challenge .output )
You can’t perform that action at this time.
0 commit comments