Primeira Prova de LP2 - 98/1 ============================ 1 - (1.0) Defina os conceitos de polimorfismo (funcoes polimorficas) e funcoes de alta ordem. De exemplos. 2 - (2.0) Prove que, para qualquer lista de pares xs, map fst xs = map snd (map swap xs) onde swap (x,y) = (y,x) ----- Um tabuleiro de jogo da velha pode ser representado por uma lista de listas: type Peca = Char type Tabuleiro = [[Peca]] type Linha = Int type Coluna = Int type Posicao = (Linha,Coluna) exemplo1 :: Tabuleiro exemplo1 = ["x o", "xxo", "o x"] Faca funcoes para: 3 - (1.0) indicar a peca que esta' em uma determinada Posicao ('x', 'o' ou ' ' caso a posicao esteja vazia). pecaEmPosicao :: Tabuleiro -> Posicao -> Char 4 - (2.0) Indicar se existe alguma jogada possivel (algum espaco vazio): espacoVazio :: Tabuleiro -> Bool 5 - (2.0) Informar se em um determinado tabuleiro alguem ganhou o jogo: alguemGanhou :: Tabuleiro -> Bool 6 - (2.0) Assumindo que houve um ganhador, qual dos jogadores ganhou, o 'x' ou o 'o': quemGanhou :: Tabuleiro -> Char 7 - (2.0) Faca uma funcao que retorne o Tabuleiro apos uma jogada de uma peca em uma determinada posicao, assumindo que a jogada e' valida: joga :: Peca -> Posicao -> Tabuleiro -> Tabuleiro