-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsolution.py
118 lines (104 loc) · 3.08 KB
/
solution.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import unittest
def solver(participants):
zeitnehmer = list(filter(lambda x: x['zeitnehmer'] == True, participants))
saaldiener = list(filter(lambda x: x['saaldiener'] == True, participants))
if (len(zeitnehmer) == 0):
return {
'zeitnehmer': None,
'saaldiener': saaldiener[0]['number']
}
if (len(saaldiener) == 0):
return {
'zeitnehmer': zeitnehmer[0]['number'],
'saaldiener': None
}
return {
'zeitnehmer': zeitnehmer[0]['number'],
'saaldiener': saaldiener[0]['number']
}
class TestStringMethods(unittest.TestCase):
def test_solver(self):
participants = [{
'name': 'Eins',
'number': 1,
'zeitnehmer': True,
'saaldiener': False
}]
result = solver(participants)
self.assertIsNotNone(result)
def test_minimal_zeitnehmer(self):
participants = [{
'name': 'Eins',
'number': 1,
'zeitnehmer': True,
'saaldiener': False
}]
result = solver(participants)
self.assertEqual(result['zeitnehmer'], 1)
def test_two_zeitnehmer(self):
participants = [{
'name': 'Zwei',
'number': 2,
'zeitnehmer': True,
'saaldiener': False
},{
'name': 'Eins',
'number': 1,
'zeitnehmer': True,
'saaldiener': False
}]
result = solver(participants)
self.assertEqual(result['zeitnehmer'], 2)
def test_two_zeitnehmer_with_invalid_zeitnehmer(self):
participants = [{
'name': 'Zwei',
'number': 2,
'zeitnehmer': False,
'saaldiener': False
},{
'name': 'Eins',
'number': 1,
'zeitnehmer': True,
'saaldiener': False
}]
result = solver(participants)
self.assertEqual(result['zeitnehmer'], 1)
def test_just_one_saaldiener(self):
participants = [{
'name': 'Zwei',
'number': 3,
'zeitnehmer': False,
'saaldiener': True
},{
'name': 'Eins',
'number': 4,
'zeitnehmer': True,
'saaldiener': False
}]
result = solver(participants)
self.assertEqual(result['saaldiener'], 3)
def test_just_one_saaldiener(self):
participants = [{
'name': 'Zwei',
'number': 3,
'zeitnehmer': True,
'saaldiener': False
},{
'name': 'Eins',
'number': 4,
'zeitnehmer': True,
'saaldiener': True
}]
result = solver(participants)
self.assertEqual(result['saaldiener'], 4)
if __name__ == '__main__':
unittest.main()
## Ablauf
# csv einlesen
# -> csv --> participants
# preprocessing
# -> participants --> reduced participants (hard kernel)
# optimierung (solver)
# -> reduced participants --> rollenzuordnung
# ausgabe
# -> rollenzuordnung --> Ausgabe