Guest User

Untitled

a guest
Aug 16th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- Segue abaixo uma das tabelas de jogos, qualquer outra tabela desse campeonato é variação dessa:
  2. -- Sendo assim, basta reoganizar a sequencia dos jogos na lista "jogo n".
  3.  
  4. --   jogo 1:    "Nacional" X "Sao Raimundo"
  5. --   jogo 2:    "Sao Raimundo" X "Gremio Coarience"
  6. --   jogo 3:    "Gremio Coarience" X "Rio Negro"
  7. --   jogo 4:    "Rio Negro" X "Fast"
  8. --   jogo 5:    "Fast" X "Libermorro"
  9. --   jogo 6:    "Libermorro" X "America"
  10. --   jogo 7:    "America" X "Sulamerica"
  11. --   jogo 8:    "Nacional" X "Gremio Coarience"
  12. --   jogo 9:    "Sao Raimundo" X "Rio Negro"
  13. --   jogo 10:   "Gremio Coarience" X "Fast"
  14. --   jogo 11:   "Rio Negro" X "Libermorro"
  15. --   jogo 12:   "Fast" X "America"
  16. --   jogo 13:   "Libermorro" X "Sulamerica"
  17. --   jogo 14:   "Nacional" X "Rio Negro"
  18. --   jogo 15:   "Sao Raimundo" X "Fast"
  19. --   jogo 16:   "Gremio Coarience" X "Libermorro"
  20. --   jogo 17:   "Rio Negro" X "America"
  21. --   jogo 18:   "Fast" X "Sulamerica"
  22. --   jogo 19:   "Nacional" X "Fast"
  23. --   jogo 20:   "Sao Raimundo" X "Libermorro"
  24. --   jogo 21:   "Gremio Coarience" X "America"
  25. --   jogo 22:   "Rio Negro" X "Sulamerica"
  26. --   jogo 23:   "Nacional" X "Libermorro"
  27. --   jogo 24:   "Sao Raimundo" X "America"
  28. --   jogo 25:   "Gremio Coarience" X "Sulamerica"
  29. --   jogo 26:   "Nacional" X "America"
  30. --   jogo 27:   "Sao Raimundo" X "Sulamerica"
  31. --   jogo 28:   "Nacional" X "Sulamerica"
  32.  
  33.  
  34. -- O problema exige que se faça as seguintes funções:
  35.  
  36. -- 1ª) "...para dar pontuações parciais em cada turno": para isso criei a função "resultado_parcial"
  37.  
  38. -- Exemplo de ENTRADA:
  39.  
  40. -- Main> resultado_parcial [(jogo 1,placar 1 2),(jogo 2,placar 3 4),(jogo 3,placar 5 2)]
  41.  
  42. -- SAIDA:
  43.  
  44. -- [("Nacional",-1),("Sao Raimundo",2),("Gremio Coarience",6),("Rio Negro",-1),("Fast",0),("Libermorro",0),("America",0),("Sulamerica",0)]
  45.  
  46. -- OBS: ONDE POR EXEMPLO: ("Gremio Coarience",6) QUER DIZER QUE GREMIO COARIENCE FEZ 6 PONTOS.
  47.  
  48. placar x y = [x,y]
  49.  
  50. jogo n = partida !! (n - 1)
  51.        
  52.         where
  53.        
  54.                 partida =  [["Nacional" , "Sao Raimundo"],
  55.                                 ["Sao Raimundo" , "Gremio Coarience"],
  56.                                 ["Gremio Coarience" , "Rio Negro"],
  57.                                 ["Rio Negro" , "Fast"],
  58.                                 ["Fast" , "Libermorro"],
  59.                                 ["Libermorro" , "America"],
  60.                                 ["America" , "Sulamerica"],
  61.                                 ["Nacional" , "Gremio Coarience"],
  62.                                 ["Sao Raimundo" , "Rio Negro"],
  63.                                 ["Gremio Coarience" , "Fast"],
  64.                                 ["Rio Negro" , "Libermorro"],
  65.                                 ["Fast" , "America"],
  66.                                 ["Libermorro" , "Sulamerica"],
  67.                                 ["Nacional" , "Rio Negro"],
  68.                                 ["Sao Raimundo" , "Fast"],
  69.                                 ["Gremio Coarience" , "Libermorro"],
  70.                                 ["Rio Negro" , "America"],
  71.                                 ["Fast" , "Sulamerica"],
  72.                                 ["Nacional" , "Fast"],
  73.                                 ["Sao Raimundo" , "Libermorro"],
  74.                                 ["Gremio Coarience" , "America"],
  75.                                 ["Rio Negro" , "Sulamerica"],
  76.                                 ["Nacional" , "Libermorro"],
  77.                                 ["Sao Raimundo" , "America"],
  78.                                 ["Gremio Coarience" , "Sulamerica"],
  79.                                 ["Nacional" , "America"],
  80.                                 ["Sao Raimundo" , "Sulamerica"],
  81.                                 ["Nacional" , "Sulamerica"]]
  82.  
  83. resultado_parcial partidas = [calcula_pontos (str,0) temp | str <- nomes]
  84.  
  85.     where
  86.        
  87.         nomes = ["Nacional", "Sao Raimundo", "Gremio Coarience", "Rio Negro", "Fast", "Libermorro", "America","Sulamerica"]
  88.        
  89.         calcula_pontos x xs =
  90.                
  91.             if null xs then x
  92.                                                
  93.             else
  94.                                                
  95.             if  time1 == time2 then
  96.                                                    
  97.                 calcula_pontos (time1, pnt1 + pnt2) (tail xs)
  98.                                                    
  99.             else
  100.                                                
  101.                 calcula_pontos x (tail xs)
  102.                
  103.             where
  104.                    
  105.                     (time1,pnt1) = x
  106.                     (time2,pnt2) = head xs
  107.                    
  108.         resultado xs partida =
  109.            
  110.             if gols1 == gols2 then
  111.                        
  112.                         xs ++ [(time1,1),(time2,1)]
  113.             else
  114.            
  115.             if gols1 > gols2 then  
  116.                        
  117.                         xs ++ [(time1,3),(time2,-1)]
  118.             else    
  119.                        
  120.                         xs ++ [(time1,-1),(time2,3)]
  121.             where
  122.                
  123.                     ([time1,time2],[gols1,gols2]) = partida
  124.        
  125.         temp = foldl resultado [] partidas
  126.        
  127.  
  128. -- 2ª) mostrar o total de pontos ganhos por cada time ao final do primeiro e segundo turno: para isso criei a função "pontos_apos_turnos"
  129.  
  130. -- Exemplo de ENTRADA:
  131.  
  132. -- Main> pontos_apos_turnos [(jogo 1,placar 1 2),(jogo 2,placar 3 4),(jogo 3,placar 5 2)] [(jogo 1,placar 2 2),(jogo 2,placar 3 4),(jogo 3,placar 1 2)]
  133.  
  134. -- SAIDA:
  135.  
  136. -- [("Nacional",0),("Sao Raimundo",2),("Gremio Coarience",8),("Rio Negro",2),("Fast",0),("Libermorro",0),("America",0),("Sulamerica",0)]
  137.  
  138. -- OBS: ONDE POR EXEMPLO: ("Gremio Coarience",8) QUER DIZER QUE GREMIO COARIENCE FEZ 8 PONTOS APOS OS DOIS TURNOS.
  139.  
  140. -- DEVE-SE NOTAR TAMBÉM QUE O USUÁRIO DEVE EM CADA TURNO ENTRAR COM OS 28 JOGOS.
  141.  
  142. pontos_apos_turnos turno1 turno2 = resultado_parcial (turno1 ++ turno2)
  143.  
  144.     where
  145.        
  146.         temp1 = resultado_parcial turno1
  147.         temp2 = resultado_parcial turno2
  148.  
  149.  
  150. -- 3º) mostrar o vencedor de cada turno: para isso criei a função "vencedor_turno"
  151.  
  152. -- Exemplo de ENTRADA:
  153.  
  154. -- Main> vencedor_turno [(jogo 1,placar 1 2),(jogo 2,placar 3 4),(jogo 3,placar 5 2)]
  155.  
  156. -- SAIDA:
  157.  
  158. -- ("Gremio Coarience",6)
  159.  
  160. -- OBS: ONDE POR EXEMPLO: ("Gremio Coarience",8) QUER DIZER QUE GREMIO COARIENCE VENCEU COM 6 NO TURNO QUE FOI DADO
  161.  
  162. -- DEVE-SE NOTAR TAMBÉM QUE O USUÁRIO DEVE NO TURNO ENTRAR COM OS 28 JOGOS.
  163.  
  164. maior xs ys = if pnt1 > pnt2 then xs else ys
  165.  
  166.     where
  167.    
  168.         (time1,pnt1) = xs
  169.         (time2,pnt2) = ys
  170.        
  171. vencedor_turno turno = foldl maior (head parcial) parcial
  172.  
  173.     where
  174.            
  175.         parcial = resultado_parcial turno
Add Comment
Please, Sign In to add comment