--Prova final de LP2 --1.5 - prove que (sum (map (+1) xs)) == sum xs + length xs --Dado os tipo de dados Voto (com seus codigos) e Urna, defina funcoes para --(1.0) dar o total de votos de um candidato e --(1.5) dar o total de votos de cada candidato e --(1.5) indicar o ganhador de cada cargo. type Codigo = Int data Voto = Governador Codigo | Prefeito Codigo | Senador Codigo | Branco deriving (Show) type Urna = [Voto] type Apuracao = [(Voto, Int)] --totalVotos :: Urna -> Voto {-Candidato-} -> Int --apurar :: Urna -> Apuracao --ganhador :: Apuracao -> (Codigo , Codigo, Codigo) --Dados os tipos de dados Disciplina (com as disciplinas que sao pre-requisitos --diretos), e Aluno (com a lista de disciplinas cursadas) faca funcoes para: type Nome = String data Disciplina = Disciplina Nome [Disciplina] data Aluno = Aluno Nome [Disciplina] --(1.5) listar os nomes de todos os pre-requisitos de uma disciplina --prereq :: Disciplina -> [Nome] --(1.5) indicar os nomes das disciplinas que faltam para um aluno --cursar uma determinada disciplina --falta :: Aluno -> Disciplina -> [Nome] --(1.5) indicar o periodo minimo para cursar uma disciplina --periodomin :: Disciplina -> Int urna1 = [Governador 1, Prefeito 5, Senador 4, Governador 7, Prefeito 5, Senador 3, Governador 1, Prefeito 5, Senador 3, Prefeito 3, Governador 1, Senador 4, Governador 1, Prefeito 2, Branco, Governador 1, Prefeito 5, Branco, Governador 7, Prefeito 2, Senador 3 ] aluno1 = Aluno "jose" [d1,d2,d3,d4,d5] d1 = Disciplina "d1" [d4,d5,d3] d2 = Disciplina "d1" [d1] d3 = Disciplina "d1" [d5] d4 = Disciplina "d1" [d5] d5 = Disciplina "d1" [] d6 = Disciplina "d1" [d7,d3,d4] d7 = Disciplina "d1" [d3,d4]