Advertisement
Guest User

Untitled

a guest
Sep 28th, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.54 KB | None | 0 0
  1. from functools import *
  2.  
  3. viagem =[ ("aviao", "SaCarneiro",10,"Stansted",12),
  4. ("comboio" ,"Stansted" ,13 ," LiverpoolStreet",14) ,
  5. ("metro" ,"LiverpoolStreet" ,14 ,"WestBrompton" ,15) ,
  6. ("metro" ,"WestBrompton" ,16 ,"OxfordStreet" ,17) ,
  7. ("metro" ,"OxfordStreet" ,21 ,"WestBrompton" ,22) ,
  8. ("metro" ,"WestBrompton" ,9 ,"Victoria" ,10) ,
  9. ("autocarro","Victoria" ,11,"Bristol" ,14),
  10. ("autocarro","Bristol" ,10,"Victoria",13),
  11. ("metro" ,"Victoria" ,13 ,"Westminster" ,14) ,
  12. ("metro" ,"Westminster" ,19 ,"CoventGarden" ,20) ,
  13. ("metro" ,"CoventGarden" ,22 ,"WestBrompton" ,23) ,
  14. ("metro" ,"WestBrompton" ,9 ,"LiverpoolStreet" ,10) ,
  15. ("metro" ,"LiverpoolStreet" ,10 ,"Stansted" ,11) ,
  16. ("aviao" ,"Stansted" ,12 ,"SaCarneiro" ,14)]
  17.  
  18. #ex1
  19. def locais(viagem):
  20. if viagem == []:
  21. return []+[]
  22. if len(viagem) == 1:
  23. return [viagem[0][1]] + [viagem[0][3]]
  24. loc = viagem[0][1]
  25. local = locais(viagem[1:])
  26. if loc not in local:
  27. return [loc] + local
  28. else:
  29. return local
  30.  
  31. print(locais(viagem))
  32.  
  33. #ex2
  34. def tempo_medio_em_loc(viagem, city):
  35. tempos = [(time[1], time[2], time[4], time[3]) for time in viagem if time[1]==city or time[3]]
  36. list_in = [time[2] for time in tempos if time[3] == city]
  37. list_end = [time[1] for time in tempos if time[0] == city]
  38. #time[0] -> cidade origem
  39.  
  40. end_t = [t2-t1 for t1,t2 in zip(list_in, list_end)]
  41.  
  42. end_t = [x if x>=0 else x+24 for x in end_t]
  43.  
  44. if len(end_t)>1:
  45. return reduce(lambda r,h: h+r, end_t)/len(end_t)
  46. else:
  47. return reduce(lambda r,h: h+r, end_t)/2
  48.  
  49. print(tempo_medio_em_loc(viagem, "Victoria"))
  50.  
  51. #ex3
  52. def local_central(viagem):
  53. local = locais(viagem)
  54.  
  55. lista = list(map(lambda x: reduce(lambda r,h: r+1 if h[1]==x else r, viagem,0), local))
  56. print(lista)
  57. r = reduce(lambda r,h: h if h[1]>r[1] else r, zip(local,lista))
  58. return r[0]
  59.  
  60. print(local_central(viagem))
  61.  
  62.  
  63. #ex4
  64. def rec_get_length(viagens, central):
  65.  
  66. if viagens==[]:
  67. return [(0,[])]
  68.  
  69. r = rec_get_length(viagens[1:],central) #r contem o nº de horas na posição 0, a cidade na posição 1
  70. if viagens[0][3]==central:
  71. return [(viagens[0][4]-viagens[0][2],[viagens[0][1],viagens[0][3]])]+r
  72.  
  73. print("r: ",r)
  74.  
  75. return [(viagens[0][4]-viagens[0][2]+r[0][0],[viagens[0][1]]+r[0][1])]+r[1:]
  76.  
  77.  
  78. def etapas_principais(viagens):
  79.  
  80. central = local_central(viagens)
  81.  
  82. return rec_get_length(viagens, central)
  83.  
  84. print(etapas_principais(viagem))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement