Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from functools import *
- viagem =[ ("aviao", "SaCarneiro",10,"Stansted",12),
- ("comboio" ,"Stansted" ,13 ," LiverpoolStreet",14) ,
- ("metro" ,"LiverpoolStreet" ,14 ,"WestBrompton" ,15) ,
- ("metro" ,"WestBrompton" ,16 ,"OxfordStreet" ,17) ,
- ("metro" ,"OxfordStreet" ,21 ,"WestBrompton" ,22) ,
- ("metro" ,"WestBrompton" ,9 ,"Victoria" ,10) ,
- ("autocarro","Victoria" ,11,"Bristol" ,14),
- ("autocarro","Bristol" ,10,"Victoria",13),
- ("metro" ,"Victoria" ,13 ,"Westminster" ,14) ,
- ("metro" ,"Westminster" ,19 ,"CoventGarden" ,20) ,
- ("metro" ,"CoventGarden" ,22 ,"WestBrompton" ,23) ,
- ("metro" ,"WestBrompton" ,9 ,"LiverpoolStreet" ,10) ,
- ("metro" ,"LiverpoolStreet" ,10 ,"Stansted" ,11) ,
- ("aviao" ,"Stansted" ,12 ,"SaCarneiro" ,14)]
- #ex1
- def locais(viagem):
- if viagem == []:
- return []+[]
- if len(viagem) == 1:
- return [viagem[0][1]] + [viagem[0][3]]
- loc = viagem[0][1]
- local = locais(viagem[1:])
- if loc not in local:
- return [loc] + local
- else:
- return local
- print(locais(viagem))
- #ex2
- def tempo_medio_em_loc(viagem, city):
- tempos = [(time[1], time[2], time[4], time[3]) for time in viagem if time[1]==city or time[3]]
- list_in = [time[2] for time in tempos if time[3] == city]
- list_end = [time[1] for time in tempos if time[0] == city]
- #time[0] -> cidade origem
- end_t = [t2-t1 for t1,t2 in zip(list_in, list_end)]
- end_t = [x if x>=0 else x+24 for x in end_t]
- if len(end_t)>1:
- return reduce(lambda r,h: h+r, end_t)/len(end_t)
- else:
- return reduce(lambda r,h: h+r, end_t)/2
- print(tempo_medio_em_loc(viagem, "Victoria"))
- #ex3
- def local_central(viagem):
- local = locais(viagem)
- lista = list(map(lambda x: reduce(lambda r,h: r+1 if h[1]==x else r, viagem,0), local))
- print(lista)
- r = reduce(lambda r,h: h if h[1]>r[1] else r, zip(local,lista))
- return r[0]
- print(local_central(viagem))
- #ex4
- def rec_get_length(viagens, central):
- if viagens==[]:
- return [(0,[])]
- r = rec_get_length(viagens[1:],central) #r contem o nº de horas na posição 0, a cidade na posição 1
- if viagens[0][3]==central:
- return [(viagens[0][4]-viagens[0][2],[viagens[0][1],viagens[0][3]])]+r
- print("r: ",r)
- return [(viagens[0][4]-viagens[0][2]+r[0][0],[viagens[0][1]]+r[0][1])]+r[1:]
- def etapas_principais(viagens):
- central = local_central(viagens)
- return rec_get_length(viagens, central)
- print(etapas_principais(viagem))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement