busroute.py

Tue, 29 Aug 2017 17:34:09 +0300

author
Teemu Piippo <teemu@hecknology.net>
date
Tue, 29 Aug 2017 17:34:09 +0300
changeset 51
145b453ba8f2
parent 46
548b526ded3b
child 52
cab8d38fe5c6
permissions
-rw-r--r--

Ruotsi

5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
1 #!/usr/bin/env python3
27
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
2
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
3 replacements = {
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
4 "Ylioppilaskylä-Itä": "Ylioppilaskylä",
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
5 "Ylioppilaskylä-Länsi": "Ylioppilaskylä",
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
6 "Caribia": "Ylioppilaskylä",
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
7 "Jokila": "Lieto",
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
8 "Piispala": "Lieto",
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
9 'Saaro': 'Ruissalo',
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
10 'Silvola': 'Vahto',
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
11 'Hemmola': 'Vahto',
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
12 'Paasniittu': 'Ruskon keskusta',
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
13 'Kahari': 'Ruskon keskusta',
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
14 'Kemiö': 'Kemiönsaari',
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
15 'Kasnäs': 'Kemiönsaari',
46
548b526ded3b Lisätty Naantalin pikatie ja Logomo-alueet, korjattu Perno ja Pansio
Teemu Piippo <teemu@hecknology.net>
parents: 45
diff changeset
16 'Pernon telakka': 'Perno',
27
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
17 }
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
18
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
19 # nimiä joista voidaan joustaa tarvittaessa
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
20 abbreviations = {
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
21 'Raision keskusta': 'Raisio',
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
22 'Ruskon keskusta': 'Rusko',
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
23 'Naantalin keskusta': 'Naantali',
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
24 'Kaarinan keskusta': 'Kaarina',
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
25 'Kauppakeskus Mylly': 'Mylly',
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
26 }
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
27
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
28 def simplify_name(name):
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
29 name = replacements.get(name, name)
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
30 name = abbreviations.get(name, name)
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
31 return name
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
32
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
33 def reduce_schedule(reitti, trip_length, whole = False):
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
34 length = ((trip_length / 600) + len(reitti)) / 2
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
35 if not reitti:
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
36 return ''
22
3d094a804af8 lisää muutoksia
Teemu Piippo <teemu@hecknology.net>
parents: 21
diff changeset
37 eksoalueet = {
3d094a804af8 lisää muutoksia
Teemu Piippo <teemu@hecknology.net>
parents: 21
diff changeset
38 'Turku', 'Naantali', 'Lieto', 'Aura', 'Kaarina', 'Pargas', 'Marttila', 'Somero', 'Koski Tl', 'Tarvasjoki',
3d094a804af8 lisää muutoksia
Teemu Piippo <teemu@hecknology.net>
parents: 21
diff changeset
39 'Kaivopuisto',
3d094a804af8 lisää muutoksia
Teemu Piippo <teemu@hecknology.net>
parents: 21
diff changeset
40 }
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
41 have_already = set()
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
42 i = 0
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
43 while i < len(reitti):
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
44 if reitti[i] in replacements:
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
45 reitti[i] = replacements[reitti[i]]
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
46 if reitti[i] in have_already:
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
47 del reitti[i]
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
48 else:
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
49 have_already.add(reitti[i])
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
50 i += 1
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
51 priorities = {
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
52 'Ihala': 150,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
53 'Kauppakeskus Mylly': 200,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
54 'Kuninkoja': 80,
45
ddf7c58091ef Ota se friskala pois kyltistä
Teemu Piippo <teemu@hecknology.net>
parents: 44
diff changeset
55 'Moikoinen': 80,
44
f6b73571a6b8 Lisätty Suovuori
Teemu Piippo <teemu@hecknology.net>
parents: 43
diff changeset
56 'Raision keskusta': 150,
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
57 'Kukola': 50,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
58 'Kaistarniemi': 50,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
59 'Papinsaari': 50,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
60 'Oriniemi': 50,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
61 'Pikisaari': 50,
43
1c9102fea431 Prioriteettejä...
Teemu Piippo <teemu@hecknology.net>
parents: 31
diff changeset
62 'Häppilä': 20,
45
ddf7c58091ef Ota se friskala pois kyltistä
Teemu Piippo <teemu@hecknology.net>
parents: 44
diff changeset
63 'Haarla': 80,
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
64 'Ylioppilaskylä': 50,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
65 'Halinen': 70,
21
6a0394d5a159 Yleistä päivittelyä
Teemu Piippo <teemu@hecknology.net>
parents: 20
diff changeset
66 'Kakskerta': 200,
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
67 'Pansio': 50,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
68 'Räntämäki': 10,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
69 'Verkahovi': 20,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
70 'Skanssi': 200,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
71 'Vaala': 20,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
72 'Varissuo': 60,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
73 'Kohmo': 80,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
74 'Kupittaa': 70,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
75 'Kauppatori': 1e15,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
76 'Lentoasema': 50,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
77 'Runosmäki': 50,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
78 'Lieto': 100,
22
3d094a804af8 lisää muutoksia
Teemu Piippo <teemu@hecknology.net>
parents: 21
diff changeset
79 'Lieto as': 200,
6
Teemu Piippo <teemu@hecknology.net>
parents: 5
diff changeset
80 'Ilmarinen': 50,
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
81 'Vahto': 50,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
82 'Ruskon keskusta': 200,
27
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
83 'Oriketo': 50,
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
84 'Harittu': 40,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
85 'Jäkärlä': 50,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
86 'Paattinen': 100,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
87 'Kaarinan keskusta': 200,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
88 'Naantalin keskusta': 200,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
89 'Uittamo': 50,
6
Teemu Piippo <teemu@hecknology.net>
parents: 5
diff changeset
90 'Piikkiö': 100,
Teemu Piippo <teemu@hecknology.net>
parents: 5
diff changeset
91 'Paimio': 100,
31
60045b362d71 - Ajovuoroa ei enää esitetä kahdessa välilehdessä vaan puukuvaimessa
Teemu Piippo <teemu@hecknology.net>
parents: 27
diff changeset
92 'Pargas': 100,
60045b362d71 - Ajovuoroa ei enää esitetä kahdessa välilehdessä vaan puukuvaimessa
Teemu Piippo <teemu@hecknology.net>
parents: 27
diff changeset
93 'Nagu': 100,
27
f89504285945 Lisää aluejuttuja
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
94 'Yli-Maaria': 70,
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
95 'Saramäki': 50,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
96 'Tarvasjoki': 100,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
97 'Marttila': 100,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
98 'Koski Tl': 100,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
99 'Katariina': 50,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
100 'Länsikeskus': 50,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
101 'Kaanaa': 100,
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
102 'Satava': 50,
6
Teemu Piippo <teemu@hecknology.net>
parents: 5
diff changeset
103 'Suikkila': 50,
Teemu Piippo <teemu@hecknology.net>
parents: 5
diff changeset
104 'Raunistula': 50,
Teemu Piippo <teemu@hecknology.net>
parents: 5
diff changeset
105 'Räntämäki': 50,
Teemu Piippo <teemu@hecknology.net>
parents: 5
diff changeset
106 'Moisio': 25,
13
55241f0e1079 Rajattu Pääskyvuoren ja Varissuon alueet ja lisätty Pääskyvuoren prioriteettia. Nyt Pääskyvuori näkyy niissä P2:n kylteissä jotka menevät Pääskyvuoreen
Teemu Piippo <teemu@hecknology.net>
parents: 12
diff changeset
107 'Pääskyvuori': 100,
22
3d094a804af8 lisää muutoksia
Teemu Piippo <teemu@hecknology.net>
parents: 21
diff changeset
108 'Rautatieasema': 50,
46
548b526ded3b Lisätty Naantalin pikatie ja Logomo-alueet, korjattu Perno ja Pansio
Teemu Piippo <teemu@hecknology.net>
parents: 45
diff changeset
109 'Logomo': 100,
20
3199e289ae62 - Sivusto hieman edustuksellisempi
Teemu Piippo <teemu@hecknology.net>
parents: 16
diff changeset
110 'Rymättylä': 50,
22
3d094a804af8 lisää muutoksia
Teemu Piippo <teemu@hecknology.net>
parents: 21
diff changeset
111 "Sauvo": 500,
3d094a804af8 lisää muutoksia
Teemu Piippo <teemu@hecknology.net>
parents: 21
diff changeset
112 "Kemiönsaari": 500,
44
f6b73571a6b8 Lisätty Suovuori
Teemu Piippo <teemu@hecknology.net>
parents: 43
diff changeset
113 'Suovuori': 300,
45
ddf7c58091ef Ota se friskala pois kyltistä
Teemu Piippo <teemu@hecknology.net>
parents: 44
diff changeset
114 'Eerikvalla': 50,
ddf7c58091ef Ota se friskala pois kyltistä
Teemu Piippo <teemu@hecknology.net>
parents: 44
diff changeset
115 'Petäsmäki': 50,
ddf7c58091ef Ota se friskala pois kyltistä
Teemu Piippo <teemu@hecknology.net>
parents: 44
diff changeset
116 'Tortinmäki': 50,
ddf7c58091ef Ota se friskala pois kyltistä
Teemu Piippo <teemu@hecknology.net>
parents: 44
diff changeset
117 'Aura': 100,
ddf7c58091ef Ota se friskala pois kyltistä
Teemu Piippo <teemu@hecknology.net>
parents: 44
diff changeset
118 'Friskala': -1,
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
119 }
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
120
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
121 if 'Kauppatori' not in reitti:
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
122 priorities['Länsikeskus'] = priorities['Skanssi'] = priorities['Kauppatori']
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
123
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
124 from_place = reitti[0]
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
125 destination = reitti[-1]
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
126 reitti_arvot = {}
22
3d094a804af8 lisää muutoksia
Teemu Piippo <teemu@hecknology.net>
parents: 21
diff changeset
127 f = lambda i: i**-0.3
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
128 factor = 1 / max(f(i + 1) for i in range(len(reitti)))
45
ddf7c58091ef Ota se friskala pois kyltistä
Teemu Piippo <teemu@hecknology.net>
parents: 44
diff changeset
129 while priorities.get(reitti[-1], 0) < 0:
ddf7c58091ef Ota se friskala pois kyltistä
Teemu Piippo <teemu@hecknology.net>
parents: 44
diff changeset
130 del reitti[-1]
ddf7c58091ef Ota se friskala pois kyltistä
Teemu Piippo <teemu@hecknology.net>
parents: 44
diff changeset
131 destination = reitti[-1]
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
132 for i, stop in enumerate(reitti):
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
133 # muunna indeksi siten että myöhemmät alueet korostuvat
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
134 i = f(i + 1) * factor
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
135 # ota prioriteetti huomioon, jotkin alueet ovat tärkeämpiä kyltissä kuin toiset
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
136 i *= priorities.get(stop, 1)
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
137 reitti_arvot[stop] = i
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
138 # nollaa lähtöpaikan arvo ettei se mitenkään tule kylttiin
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
139 if from_place in reitti_arvot:
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
140 reitti_arvot[from_place] = 0
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
141 # varmista että destination tulee kylttiin
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
142 reitti_arvot[destination] = 1e10
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
143 # muodosta sign-tiedot järjestettynä reittiarvon mukaan
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
144 weights = sorted([
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
145 (stop, reitti_arvot[stop], i) \
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
146 for i, stop in enumerate(reitti) \
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
147 if reitti_arvot[stop] >= 1
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
148 ], key = lambda stop: -stop[1])
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
149 # enintään neljä tulee kylttiin
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
150 weights = weights[:3]
22
3d094a804af8 lisää muutoksia
Teemu Piippo <teemu@hecknology.net>
parents: 21
diff changeset
151 # jos kolmas kylttiarvo ei ole tarpeeksi merkittävä suhteessa reitin pituuteen niin otetaan se pois
3d094a804af8 lisää muutoksia
Teemu Piippo <teemu@hecknology.net>
parents: 21
diff changeset
152 try:
45
ddf7c58091ef Ota se friskala pois kyltistä
Teemu Piippo <teemu@hecknology.net>
parents: 44
diff changeset
153 if weights[2][0] != destination and weights[2][1] < (725 / length ** 0.8):
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
154 del weights[2]
22
3d094a804af8 lisää muutoksia
Teemu Piippo <teemu@hecknology.net>
parents: 21
diff changeset
155 except IndexError:
3d094a804af8 lisää muutoksia
Teemu Piippo <teemu@hecknology.net>
parents: 21
diff changeset
156 pass
3d094a804af8 lisää muutoksia
Teemu Piippo <teemu@hecknology.net>
parents: 21
diff changeset
157 try:
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
158 if weights[1][0] != destination and weights[1][1] < (500 / length ** 1.15):
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
159 del weights[1]
22
3d094a804af8 lisää muutoksia
Teemu Piippo <teemu@hecknology.net>
parents: 21
diff changeset
160 except IndexError:
3d094a804af8 lisää muutoksia
Teemu Piippo <teemu@hecknology.net>
parents: 21
diff changeset
161 pass
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
162 # lajitellaan painoarvot uudestaan reittijärjestykseen jotta sign tulee oikeinpäin
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
163 weights = sorted(weights, key = lambda paino: paino[2])
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
164 # muodostetaan sign..
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
165 sign = [paino[0] for paino in weights]
5
a65b680f1774 Paljon asioita
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
166 # supista nimet jos mahdollista
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
167 def finalise(sign, abbreviation_level = 0):
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
168 if abbreviation_level > 0:
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
169 sign = [abbreviations.get(paikka, paikka) for paikka in sign]
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
170 return sign
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
171 result = finalise(sign)
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
172 for i in range(len(sign) - 1):
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
173 if sign[i + 1].startswith(sign[i]):
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
174 del sign[i]
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
175 if len(' - '.join(sign)) > 20:
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
176 result = finalise(sign, abbreviation_level = 1)
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
177 if whole:
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
178 result = [from_place] + result
45
ddf7c58091ef Ota se friskala pois kyltistä
Teemu Piippo <teemu@hecknology.net>
parents: 44
diff changeset
179 if not result:
ddf7c58091ef Ota se friskala pois kyltistä
Teemu Piippo <teemu@hecknology.net>
parents: 44
diff changeset
180 result = [destination]
24
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
181 short_from_place = replacements.get(from_place, from_place)
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
182 if (
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
183 short_from_place != result[-1]
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
184 and abbreviations.get(short_from_place, short_from_place) in eksoalueet | {'Kauppatori'}
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
185 and result[-1] in eksoalueet | {'Kauppatori'}
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
186 ):
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
187 result = ['Turku' if k == 'Kauppatori' else k for k in result]
e6bdb9c54096 Yhtenäistetty ohjelmakoodin kieli englanniksi
Teemu Piippo <teemu@hecknology.net>
parents: 22
diff changeset
188 return result

mercurial