busroute.py

changeset 27
f89504285945
parent 24
e6bdb9c54096
child 31
60045b362d71
--- a/busroute.py	Tue Jun 20 10:32:50 2017 +0300
+++ b/busroute.py	Wed Jun 21 18:24:34 2017 +0300
@@ -1,53 +1,42 @@
 #!/usr/bin/env python3
+
+replacements = {
+	"Ylioppilaskylä-Itä": "Ylioppilaskylä",
+	"Ylioppilaskylä-Länsi": "Ylioppilaskylä",
+	"Caribia": "Ylioppilaskylä",
+	"Jokila": "Lieto",
+	"Piispala": "Lieto",
+	'Saaro': 'Ruissalo',
+	'Silvola': 'Vahto',
+	'Hemmola': 'Vahto',
+	'Paasniittu': 'Ruskon keskusta',
+	'Kahari': 'Ruskon keskusta',
+	'Kemiö': 'Kemiönsaari',
+	'Kasnäs': 'Kemiönsaari',
+}
+
+# nimiä joista voidaan joustaa tarvittaessa
+abbreviations = {
+	'Raision keskusta': 'Raisio',
+	'Ruskon keskusta': 'Rusko',
+	'Naantalin keskusta': 'Naantali',
+	'Kaarinan keskusta': 'Kaarina',
+	'Kauppakeskus Mylly': 'Mylly',
+}
+
+def simplify_name(name):
+	name = replacements.get(name, name)
+	name = abbreviations.get(name, name)
+	return name
+
 def reduce_schedule(reitti, trip_length, whole = False):
 	length = ((trip_length / 600) + len(reitti)) / 2
-	def abstract_sign(sign):
-		abstractions = {
-			'Moikoinen': 'Hirvensalo',
-			'Maanpää': 'Hirvensalo',
-			'Papinsaari': 'Hirvensalo',
-			'Häppilä': 'Hirvensalo',
-			'Friskala': 'Hirvensalo',
-			'Kukola': 'Hirvensalo',
-			'Oriniemi': 'Hirvensalo',
-			'Haarla': 'Hirvensalo',
-			'Lauttasaari': 'Hirvensalo',
-			'Pikisaari': 'Hirvensalo',
-			'Pernon telakka': 'Perno',
-		}
-		try:
-			start = sign.index('Kauppatori')
-		except ValueError:
-			return sign
-		result = []
-		for i, place in enumerate(sign):
-			if i >= start:
-				abstract_place = abstractions.get(place, place)
-				if abstract_place not in result:
-					result.append(abstract_place)
-			else:
-				result.append(place)
-		return result
 	if not reitti:
 		return ''
 	eksoalueet = {
 		'Turku', 'Naantali', 'Lieto', 'Aura', 'Kaarina', 'Pargas', 'Marttila', 'Somero', 'Koski Tl', 'Tarvasjoki',
 		'Kaivopuisto',
 	}
-	replacements = {
-		"Ylioppilaskylä-Itä": "Ylioppilaskylä",
-		"Ylioppilaskylä-Länsi": "Ylioppilaskylä",
-		"Caribia": "Ylioppilaskylä",
-		"Jokila": "Lieto",
-		"Piispala": "Lieto",
-		'Saaro': 'Ruissalo',
-		'Silvola': 'Vahto',
-		'Hemmola': 'Vahto',
-		'Paasniittu': 'Ruskon keskusta',
-		'Kahari': 'Ruskon keskusta',
-		'Kemiö': 'Kemiönsaari',
-		'Kasnäs': 'Kemiönsaari',
-	}
 	have_already = set()
 	i = 0
 	while i < len(reitti):
@@ -91,7 +80,7 @@
 		'Ilmarinen': 50,
 		'Vahto': 50,
 		'Ruskon keskusta': 200,
-		'Oriketo': 30,
+		'Oriketo': 50,
 		'Harittu': 40,
 		'Jäkärlä': 50,
 		'Paattinen': 100,
@@ -101,7 +90,7 @@
 		'Piikkiö': 100,
 		'Paimio': 100,
 		'Pargas': 50,
-		'Yli-Maaria': 50,
+		'Yli-Maaria': 70,
 		'Saramäki': 50,
 		'Tarvasjoki': 100,
 		'Marttila': 100,
@@ -124,15 +113,6 @@
 	if 'Kauppatori' not in reitti:
 		priorities['Länsikeskus'] = priorities['Skanssi'] = priorities['Kauppatori']
 
-	# nimiä joista voidaan joustaa tarvittaessa
-	abbreviations = {
-		'Raision keskusta': 'Raisio',
-		'Ruskon keskusta': 'Rusko',
-		'Naantalin keskusta': 'Naantali',
-		'Kaarinan keskusta': 'Kaarina',
-		'Kauppakeskus Mylly': 'Mylly',
-	}
-
 	from_place = reitti[0]
 	destination = reitti[-1]
 	reitti_arvot = {}
@@ -159,7 +139,7 @@
 	weights = weights[:3]
 	# jos kolmas kylttiarvo ei ole tarpeeksi merkittävä suhteessa reitin pituuteen niin otetaan se pois
 	try:
-		if weights[2][0] != destination and weights[2][1] < (1000 / length ** 1.15):
+		if weights[2][0] != destination and weights[2][1] < (1200 / length ** 0.9):
 			del weights[2]
 	except IndexError:
 		pass
@@ -172,7 +152,6 @@
 	weights = sorted(weights, key = lambda paino: paino[2])
 	# muodostetaan sign..
 	sign = [paino[0] for paino in weights]
-	#sign = abstract_sign(sign)
 	# supista nimet jos mahdollista
 	def finalise(sign, abbreviation_level = 0):
 		if abbreviation_level > 0:

mercurial