Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Programação Funcional - Exercícios Resolvidos - trab1, Exercícios de Informática

Coleção completa de exercícios resolvidos em haskell

Tipologia: Exercícios

2013

Compartilhado em 13/09/2013

bruno-franco-oliveira-9
bruno-franco-oliveira-9 🇧🇷

4

(10)

63 documentos

1 / 2

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Bacharelado em Sistemas de Informação
Programação Funcional – 1° Período
Trabalho em Equipe: O Problema das N Rainhas
1) Objetivo do Trabalho:
Estimular o aluno a trabalhar em equipe para projetar e desenvolver soluções para problemas
que envolvam o estudo e conhecimento de programação funcional.
2) Descrição do trabalho:
O trabalho consiste no estudo do problema das N Rainhas e na proposição de um programa, em
linguagem Haskell, que forneça as soluções do problema para uma entrada N.
O trabalho deverá ser documentado num relatório contendo: (i) a definição o problema, (ii) a
especificação de uma estratégia para a resolução do problema e (iii) o código da implementação
em Haskell das funções propostas.
3) Equipes de Trabalho
O trabalho pode ser feito em equipes de até três (3) alunos.
4) Prazo de Entrega do Trabalho
Todos os grupos deverão entregar uma cópia do relatório até o dia 30/06/2009.
5) Avaliação
O trabalho tem o valor de 10 pontos. Na avaliação serão considerados os seguintes aspectos:
forma e conteúdo do material escrito; qualidade da solução adotada; corretude e eficiência do
programa implementado.
6) Tema: O Problema das N Rainhas
Este problema consiste em distribuir N rainhas, mutuamente antagônicas, num tabuleiro N x N
de forma que nenhuma rainha possa capturar outra rainha em um único movimento. Num
tabuleiro 4 x 4, teremos o quadro abaixo como um exemplo de distribuição:
Q
Q
Q
Q
Note que em cada linha e em cada coluna deve haver uma, e uma, rainha. Para definir o
problema pode-se utilizar uma lista que determine qual a coluna em que é colocada a rainha de
cada uma das linhas (por exemplo, a solução do quadro acima seria [3,1,4,2], querendo dizer
pf2

Pré-visualização parcial do texto

Baixe Programação Funcional - Exercícios Resolvidos - trab1 e outras Exercícios em PDF para Informática, somente na Docsity!

Bacharelado em Sistemas de Informação Programação Funcional – 1° Período **Trabalho em Equipe: O Problema das N Rainhas

  1. Objetivo do Trabalho:** Estimular o aluno a trabalhar em equipe para projetar e desenvolver soluções para problemas que envolvam o estudo e conhecimento de programação funcional. 2) Descrição do trabalho: O trabalho consiste no estudo do problema das N Rainhas e na proposição de um programa, em linguagem Haskell, que forneça as soluções do problema para uma entrada N. O trabalho deverá ser documentado num relatório contendo: (i) a definição o problema, (ii) a especificação de uma estratégia para a resolução do problema e (iii) o código da implementação em Haskell das funções propostas. 3) Equipes de Trabalho O trabalho pode ser feito em equipes de até três (3) alunos. 4) Prazo de Entrega do Trabalho Todos os grupos deverão entregar uma cópia do relatório até o dia 30/06/2009. 5) Avaliação O trabalho tem o valor de 10 pontos. Na avaliação serão considerados os seguintes aspectos: forma e conteúdo do material escrito; qualidade da solução adotada; corretude e eficiência do programa implementado. 6) Tema: O Problema das N Rainhas Este problema consiste em distribuir N rainhas, mutuamente antagônicas, num tabuleiro N x N de forma que nenhuma rainha possa capturar outra rainha em um único movimento. Num tabuleiro 4 x 4, teremos o quadro abaixo como um exemplo de distribuição:

Q

Q

Q

Q

Note que em cada linha e em cada coluna deve haver uma, e só uma, rainha. Para definir o problema pode-se utilizar uma lista que determine qual a coluna em que é colocada a rainha de cada uma das linhas (por exemplo, a solução do quadro acima seria [3,1,4,2], querendo dizer

que a rainha da primeira linha aparece na terceira coluna, a da segunda linha na primeira coluna, e assim sucessivamente). Como uma única rainha deve aparecer por coluna, a lista deve ser uma permutação de [1,2,3,4], e todas as permutações [1..N] geram uma lista de soluções candidatas. Para o testar uma permutação, deve-se garantir que nenhuma rainha está ao alcance diagonal de uma outra. Para isso notamos que:

  • Duas rainhas estão numa diagonal sudoeste (/) se e somente se a soma da linha e coluna da posição de cada uma delas for igual;

• Duas rainhas estão numa diagonal sudeste () se e somente se a diferença da linha e

coluna da posição de cada uma delas for igual. Exemplo: Q Q Q Q A permutação [2,1,4,3] não é uma solução, visto que a rainha colocada na posição (2,1) coincide em diagonal sudoeste com a rainha da posição (1,2), e coincide em diagonal sudeste com a posição (4,3). Faça um programa em linguagem Haskell que computa todas as soluções para um dado N. A execução deste programa para vários valores de N inclui:

rainhas 1 [[1]] rainhas 2 [] rainhas 3 [] rainhas 4 [[3,1,4,2],[2,4,1,3]]