busroute.py

Tue, 11 Jul 2017 09:10:31 +0300

author
Teemu Piippo <teemu@hecknology.net>
date
Tue, 11 Jul 2017 09:10:31 +0300
changeset 45
ddf7c58091ef
parent 44
f6b73571a6b8
child 46
548b526ded3b
permissions
-rw-r--r--

Ota se friskala pois kyltistä

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

mercurial