43 def simplify_name(name): |
43 def simplify_name(name): |
44 name = replacements.get(name, name) |
44 name = replacements.get(name, name) |
45 name = abbreviations.get(name, name) |
45 name = abbreviations.get(name, name) |
46 return name |
46 return name |
47 |
47 |
48 def reduce_schedule(reitti, trip_length, whole = False): |
48 def reduce_schedule(reitti, trip_length, whole = False, long = False): |
49 length = ((trip_length / 600) * 3 + len(reitti) * 2) / 5 |
49 length = ((trip_length / 600) * 3 + len(reitti) * 2) / 5 |
50 if not reitti: |
50 if not reitti: |
51 return '' |
51 return '' |
52 have_already = set() |
52 have_already = set() |
53 i = 0 |
53 i = 0 |
130 'aura': 100, |
129 'aura': 100, |
131 'friskala': -1, |
130 'friskala': -1, |
132 'merimasku': 50, |
131 'merimasku': 50, |
133 'turkuhalli': 100, |
132 'turkuhalli': 100, |
134 'messukeskus': 100, |
133 'messukeskus': 100, |
135 'naantalin pikatie': 150, |
134 'naantalin pikatie': 25, |
136 'helsingin valtatie': 500, |
135 'helsingin valtatie': 25, |
|
136 'lauste': 25, |
|
137 'pompo': 25, |
|
138 'loukinainen': 25, |
|
139 'tuorla': 25, |
|
140 'satakunnantie': 25, |
|
141 'hepokulta': 25, |
|
142 'nättinummi': 25, |
|
143 'nummenmäki': 25, |
|
144 'kurala': 25, |
|
145 'itäharju': 25, |
|
146 'vasaramäki': 25, |
|
147 'pohjola': 25, |
|
148 'iso-heikkilä': 25, |
|
149 'patterinhaka': 25, |
|
150 'illoinen': 50, |
|
151 'luolavuori': 25, |
|
152 'mäntymäki': 25, |
|
153 'kurjenmäki': 25, |
|
154 'kuusisto': 25, |
|
155 'rautatieasema': 25, |
|
156 'majakkaranta': 25, |
|
157 'itäranta': 25, |
|
158 'martti': 25, |
|
159 'vähä-heikkilä': 25, |
|
160 'särkilahti': 25, |
|
161 'urusvuori': 25, |
|
162 'port arthur': 25, |
137 } |
163 } |
138 |
164 |
139 if 'kauppatori' not in reitti: |
165 if 'kauppatori' not in reitti: |
140 priorities['länsikeskus'] = priorities['skanssi'] = priorities['kauppatori'] |
166 priorities['länsikeskus'] = priorities['skanssi'] = priorities['kauppatori'] |
141 |
167 |
162 weights = sorted([ |
188 weights = sorted([ |
163 (stop, reitti_arvot[stop], i) \ |
189 (stop, reitti_arvot[stop], i) \ |
164 for i, stop in enumerate(reitti) \ |
190 for i, stop in enumerate(reitti) \ |
165 if reitti_arvot[stop] >= 1 |
191 if reitti_arvot[stop] >= 1 |
166 ], key = lambda stop: -stop[1]) |
192 ], key = lambda stop: -stop[1]) |
167 # enintään neljä tulee kylttiin |
193 if long: |
168 weights = weights[:3] |
194 weights = weights[:4] |
169 # jos kolmas kylttiarvo ei ole tarpeeksi merkittävä suhteessa reitin pituuteen niin otetaan se pois |
195 else: |
170 try: |
196 # enintään neljä tulee kylttiin |
171 if weights[2][0] != destination and weights[2][1] < (725 / length ** 0.8): |
197 weights = weights[:3] |
172 del weights[2] |
198 # jos kolmas kylttiarvo ei ole tarpeeksi merkittävä suhteessa reitin pituuteen niin otetaan se pois |
173 except IndexError: |
199 try: |
174 pass |
200 if weights[2][0] != destination and weights[2][1] < (725 / length ** 0.8): |
175 try: |
201 del weights[2] |
176 if weights[1][0] != destination and weights[1][1] < (500 / length ** 1.15): |
202 except IndexError: |
177 del weights[1] |
203 pass |
178 except IndexError: |
204 try: |
179 pass |
205 if weights[1][0] != destination and weights[1][1] < (500 / length ** 1.15): |
|
206 del weights[1] |
|
207 except IndexError: |
|
208 pass |
180 # lajitellaan painoarvot uudestaan reittijärjestykseen jotta sign tulee oikeinpäin |
209 # lajitellaan painoarvot uudestaan reittijärjestykseen jotta sign tulee oikeinpäin |
181 weights = sorted(weights, key = lambda weight_data: weight_data[2]) |
210 weights = sorted(weights, key = lambda weight_data: weight_data[2]) |
182 # muodostetaan sign.. |
211 # muodostetaan sign.. |
183 sign = [paino[0] for paino in weights] |
212 sign = [paino[0] for paino in weights] |
184 to_place = sign[-1] |
213 to_place = sign[-1] |