service.py

changeset 101
70d16b5e14ca
parent 100
9b5e6b5e5e0b
child 105
5bb61c2b037d
equal deleted inserted replaced
100:9b5e6b5e5e0b 101:70d16b5e14ca
368 else: 368 else:
369 break 369 break
370 return length or len(route) 370 return length or len(route)
371 from math import inf 371 from math import inf
372 def route_limit(route): 372 def route_limit(route):
373 return (route in night_routes) and 20 or 6 373 return (route in night_routes) and 6 or 20
374 def route_key(route): 374 def route_key(route):
375 from math import log 375 from math import log
376 return ( 376 return (
377 route in night_routes, 377 route in night_routes,
378 counts_per_variant.get(route, 0) < route_limit(route), 378 counts_per_variant.get(route, 0) < route_limit(route),
380 str(route) 380 str(route)
381 ) 381 )
382 def routes_key(routes): 382 def routes_key(routes):
383 return min(route_key(route) for route in routes) 383 return min(route_key(route) for route in routes)
384 result = [] 384 result = []
385 rare_variants = {variant['name'] for variant in all_variants if variant['count'] < route_limit(route)} 385 rare_variants = {variant['name'] for variant in all_variants if variant['count'] < route_limit(variant['name'])}
386 rare_variant_groups = set() 386 rare_variant_groups = set()
387 for regions, routes in sorted( 387 for regions, routes in sorted(
388 routes_per_destination.items(), 388 routes_per_destination.items(),
389 key = lambda pair: routes_key(pair[1]) 389 key = lambda pair: routes_key(pair[1])
390 ): 390 ):

mercurial