Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Segue abaixo uma das tabelas de jogos, qualquer outra tabela desse campeonato é variação dessa:
- -- Sendo assim, basta reoganizar a sequencia dos jogos na lista "jogo n".
- -- jogo 1: "Nacional" X "Sao Raimundo"
- -- jogo 2: "Sao Raimundo" X "Gremio Coarience"
- -- jogo 3: "Gremio Coarience" X "Rio Negro"
- -- jogo 4: "Rio Negro" X "Fast"
- -- jogo 5: "Fast" X "Libermorro"
- -- jogo 6: "Libermorro" X "America"
- -- jogo 7: "America" X "Sulamerica"
- -- jogo 8: "Nacional" X "Gremio Coarience"
- -- jogo 9: "Sao Raimundo" X "Rio Negro"
- -- jogo 10: "Gremio Coarience" X "Fast"
- -- jogo 11: "Rio Negro" X "Libermorro"
- -- jogo 12: "Fast" X "America"
- -- jogo 13: "Libermorro" X "Sulamerica"
- -- jogo 14: "Nacional" X "Rio Negro"
- -- jogo 15: "Sao Raimundo" X "Fast"
- -- jogo 16: "Gremio Coarience" X "Libermorro"
- -- jogo 17: "Rio Negro" X "America"
- -- jogo 18: "Fast" X "Sulamerica"
- -- jogo 19: "Nacional" X "Fast"
- -- jogo 20: "Sao Raimundo" X "Libermorro"
- -- jogo 21: "Gremio Coarience" X "America"
- -- jogo 22: "Rio Negro" X "Sulamerica"
- -- jogo 23: "Nacional" X "Libermorro"
- -- jogo 24: "Sao Raimundo" X "America"
- -- jogo 25: "Gremio Coarience" X "Sulamerica"
- -- jogo 26: "Nacional" X "America"
- -- jogo 27: "Sao Raimundo" X "Sulamerica"
- -- jogo 28: "Nacional" X "Sulamerica"
- -- O problema exige que se faça as seguintes funções:
- -- 1ª) "...para dar pontuações parciais em cada turno": para isso criei a função "resultado_parcial"
- -- Exemplo de ENTRADA:
- -- Main> resultado_parcial [(jogo 1,placar 1 2),(jogo 2,placar 3 4),(jogo 3,placar 5 2)]
- -- SAIDA:
- -- [("Nacional",-1),("Sao Raimundo",2),("Gremio Coarience",6),("Rio Negro",-1),("Fast",0),("Libermorro",0),("America",0),("Sulamerica",0)]
- -- OBS: ONDE POR EXEMPLO: ("Gremio Coarience",6) QUER DIZER QUE GREMIO COARIENCE FEZ 6 PONTOS.
- placar x y = [x,y]
- jogo n = partida !! (n - 1)
- where
- partida = [["Nacional" , "Sao Raimundo"],
- ["Sao Raimundo" , "Gremio Coarience"],
- ["Gremio Coarience" , "Rio Negro"],
- ["Rio Negro" , "Fast"],
- ["Fast" , "Libermorro"],
- ["Libermorro" , "America"],
- ["America" , "Sulamerica"],
- ["Nacional" , "Gremio Coarience"],
- ["Sao Raimundo" , "Rio Negro"],
- ["Gremio Coarience" , "Fast"],
- ["Rio Negro" , "Libermorro"],
- ["Fast" , "America"],
- ["Libermorro" , "Sulamerica"],
- ["Nacional" , "Rio Negro"],
- ["Sao Raimundo" , "Fast"],
- ["Gremio Coarience" , "Libermorro"],
- ["Rio Negro" , "America"],
- ["Fast" , "Sulamerica"],
- ["Nacional" , "Fast"],
- ["Sao Raimundo" , "Libermorro"],
- ["Gremio Coarience" , "America"],
- ["Rio Negro" , "Sulamerica"],
- ["Nacional" , "Libermorro"],
- ["Sao Raimundo" , "America"],
- ["Gremio Coarience" , "Sulamerica"],
- ["Nacional" , "America"],
- ["Sao Raimundo" , "Sulamerica"],
- ["Nacional" , "Sulamerica"]]
- resultado_parcial partidas = [calcula_pontos (str,0) temp | str <- nomes]
- where
- nomes = ["Nacional", "Sao Raimundo", "Gremio Coarience", "Rio Negro", "Fast", "Libermorro", "America","Sulamerica"]
- calcula_pontos x xs =
- if null xs then x
- else
- if time1 == time2 then
- calcula_pontos (time1, pnt1 + pnt2) (tail xs)
- else
- calcula_pontos x (tail xs)
- where
- (time1,pnt1) = x
- (time2,pnt2) = head xs
- resultado xs partida =
- if gols1 == gols2 then
- xs ++ [(time1,1),(time2,1)]
- else
- if gols1 > gols2 then
- xs ++ [(time1,3),(time2,-1)]
- else
- xs ++ [(time1,-1),(time2,3)]
- where
- ([time1,time2],[gols1,gols2]) = partida
- temp = foldl resultado [] partidas
- -- 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"
- -- Exemplo de ENTRADA:
- -- 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)]
- -- SAIDA:
- -- [("Nacional",0),("Sao Raimundo",2),("Gremio Coarience",8),("Rio Negro",2),("Fast",0),("Libermorro",0),("America",0),("Sulamerica",0)]
- -- OBS: ONDE POR EXEMPLO: ("Gremio Coarience",8) QUER DIZER QUE GREMIO COARIENCE FEZ 8 PONTOS APOS OS DOIS TURNOS.
- -- DEVE-SE NOTAR TAMBÉM QUE O USUÁRIO DEVE EM CADA TURNO ENTRAR COM OS 28 JOGOS.
- pontos_apos_turnos turno1 turno2 = resultado_parcial (turno1 ++ turno2)
- where
- temp1 = resultado_parcial turno1
- temp2 = resultado_parcial turno2
- -- 3º) mostrar o vencedor de cada turno: para isso criei a função "vencedor_turno"
- -- Exemplo de ENTRADA:
- -- Main> vencedor_turno [(jogo 1,placar 1 2),(jogo 2,placar 3 4),(jogo 3,placar 5 2)]
- -- SAIDA:
- -- ("Gremio Coarience",6)
- -- OBS: ONDE POR EXEMPLO: ("Gremio Coarience",8) QUER DIZER QUE GREMIO COARIENCE VENCEU COM 6 NO TURNO QUE FOI DADO
- -- DEVE-SE NOTAR TAMBÉM QUE O USUÁRIO DEVE NO TURNO ENTRAR COM OS 28 JOGOS.
- maior xs ys = if pnt1 > pnt2 then xs else ys
- where
- (time1,pnt1) = xs
- (time2,pnt2) = ys
- vencedor_turno turno = foldl maior (head parcial) parcial
- where
- parcial = resultado_parcial turno
Add Comment
Please, Sign In to add comment