1 #!/usr/bin/env python3 |
1 #!/usr/bin/env python3 |
|
2 |
|
3 replacements = { |
|
4 "Ylioppilaskylä-Itä": "Ylioppilaskylä", |
|
5 "Ylioppilaskylä-Länsi": "Ylioppilaskylä", |
|
6 "Caribia": "Ylioppilaskylä", |
|
7 "Jokila": "Lieto", |
|
8 "Piispala": "Lieto", |
|
9 'Saaro': 'Ruissalo', |
|
10 'Silvola': 'Vahto', |
|
11 'Hemmola': 'Vahto', |
|
12 'Paasniittu': 'Ruskon keskusta', |
|
13 'Kahari': 'Ruskon keskusta', |
|
14 'Kemiö': 'Kemiönsaari', |
|
15 'Kasnäs': 'Kemiönsaari', |
|
16 } |
|
17 |
|
18 # nimiä joista voidaan joustaa tarvittaessa |
|
19 abbreviations = { |
|
20 'Raision keskusta': 'Raisio', |
|
21 'Ruskon keskusta': 'Rusko', |
|
22 'Naantalin keskusta': 'Naantali', |
|
23 'Kaarinan keskusta': 'Kaarina', |
|
24 'Kauppakeskus Mylly': 'Mylly', |
|
25 } |
|
26 |
|
27 def simplify_name(name): |
|
28 name = replacements.get(name, name) |
|
29 name = abbreviations.get(name, name) |
|
30 return name |
|
31 |
2 def reduce_schedule(reitti, trip_length, whole = False): |
32 def reduce_schedule(reitti, trip_length, whole = False): |
3 length = ((trip_length / 600) + len(reitti)) / 2 |
33 length = ((trip_length / 600) + len(reitti)) / 2 |
4 def abstract_sign(sign): |
|
5 abstractions = { |
|
6 'Moikoinen': 'Hirvensalo', |
|
7 'Maanpää': 'Hirvensalo', |
|
8 'Papinsaari': 'Hirvensalo', |
|
9 'Häppilä': 'Hirvensalo', |
|
10 'Friskala': 'Hirvensalo', |
|
11 'Kukola': 'Hirvensalo', |
|
12 'Oriniemi': 'Hirvensalo', |
|
13 'Haarla': 'Hirvensalo', |
|
14 'Lauttasaari': 'Hirvensalo', |
|
15 'Pikisaari': 'Hirvensalo', |
|
16 'Pernon telakka': 'Perno', |
|
17 } |
|
18 try: |
|
19 start = sign.index('Kauppatori') |
|
20 except ValueError: |
|
21 return sign |
|
22 result = [] |
|
23 for i, place in enumerate(sign): |
|
24 if i >= start: |
|
25 abstract_place = abstractions.get(place, place) |
|
26 if abstract_place not in result: |
|
27 result.append(abstract_place) |
|
28 else: |
|
29 result.append(place) |
|
30 return result |
|
31 if not reitti: |
34 if not reitti: |
32 return '' |
35 return '' |
33 eksoalueet = { |
36 eksoalueet = { |
34 'Turku', 'Naantali', 'Lieto', 'Aura', 'Kaarina', 'Pargas', 'Marttila', 'Somero', 'Koski Tl', 'Tarvasjoki', |
37 'Turku', 'Naantali', 'Lieto', 'Aura', 'Kaarina', 'Pargas', 'Marttila', 'Somero', 'Koski Tl', 'Tarvasjoki', |
35 'Kaivopuisto', |
38 'Kaivopuisto', |
36 } |
|
37 replacements = { |
|
38 "Ylioppilaskylä-Itä": "Ylioppilaskylä", |
|
39 "Ylioppilaskylä-Länsi": "Ylioppilaskylä", |
|
40 "Caribia": "Ylioppilaskylä", |
|
41 "Jokila": "Lieto", |
|
42 "Piispala": "Lieto", |
|
43 'Saaro': 'Ruissalo', |
|
44 'Silvola': 'Vahto', |
|
45 'Hemmola': 'Vahto', |
|
46 'Paasniittu': 'Ruskon keskusta', |
|
47 'Kahari': 'Ruskon keskusta', |
|
48 'Kemiö': 'Kemiönsaari', |
|
49 'Kasnäs': 'Kemiönsaari', |
|
50 } |
39 } |
51 have_already = set() |
40 have_already = set() |
52 i = 0 |
41 i = 0 |
53 while i < len(reitti): |
42 while i < len(reitti): |
54 if reitti[i] in replacements: |
43 if reitti[i] in replacements: |
121 "Kemiönsaari": 500, |
110 "Kemiönsaari": 500, |
122 } |
111 } |
123 |
112 |
124 if 'Kauppatori' not in reitti: |
113 if 'Kauppatori' not in reitti: |
125 priorities['Länsikeskus'] = priorities['Skanssi'] = priorities['Kauppatori'] |
114 priorities['Länsikeskus'] = priorities['Skanssi'] = priorities['Kauppatori'] |
126 |
|
127 # nimiä joista voidaan joustaa tarvittaessa |
|
128 abbreviations = { |
|
129 'Raision keskusta': 'Raisio', |
|
130 'Ruskon keskusta': 'Rusko', |
|
131 'Naantalin keskusta': 'Naantali', |
|
132 'Kaarinan keskusta': 'Kaarina', |
|
133 'Kauppakeskus Mylly': 'Mylly', |
|
134 } |
|
135 |
115 |
136 from_place = reitti[0] |
116 from_place = reitti[0] |
137 destination = reitti[-1] |
117 destination = reitti[-1] |
138 reitti_arvot = {} |
118 reitti_arvot = {} |
139 f = lambda i: i**-0.3 |
119 f = lambda i: i**-0.3 |
170 pass |
150 pass |
171 # lajitellaan painoarvot uudestaan reittijärjestykseen jotta sign tulee oikeinpäin |
151 # lajitellaan painoarvot uudestaan reittijärjestykseen jotta sign tulee oikeinpäin |
172 weights = sorted(weights, key = lambda paino: paino[2]) |
152 weights = sorted(weights, key = lambda paino: paino[2]) |
173 # muodostetaan sign.. |
153 # muodostetaan sign.. |
174 sign = [paino[0] for paino in weights] |
154 sign = [paino[0] for paino in weights] |
175 #sign = abstract_sign(sign) |
|
176 # supista nimet jos mahdollista |
155 # supista nimet jos mahdollista |
177 def finalise(sign, abbreviation_level = 0): |
156 def finalise(sign, abbreviation_level = 0): |
178 if abbreviation_level > 0: |
157 if abbreviation_level > 0: |
179 sign = [abbreviations.get(paikka, paikka) for paikka in sign] |
158 sign = [abbreviations.get(paikka, paikka) for paikka in sign] |
180 return sign |
159 return sign |