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 - trab2012, 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
Trabalho: Usando a solução do problema das N rainhas listado abaixo como modelo, escreva
um
programa Haskell para resolver (facilmente) um quebra-cabeça Sudoku (www.sudoku.com)
Observações:
- Deve ser entregue um relatório contendo o código comentado e diversos exemplos de
execução do código.
- Data de Entrega: 01/11/2012
- Grupos de 2
==================================================================
========================================
Problema das N rainhas
O problema das N rainhas consiste em colocar N rainhas mutuamente antagônicas num
tabuleiro N x N
de forma que nenhuma rainha possa capturar outra rainha em um único movimento. O
resultado deve conter uma
lista de todas as soluções possíveis em que cada solução lista a posição da fila de cada rainha
em ordem
de coluna.
queens n = solve n
where
solve 0 = [[]]
solve (k+1) = [q:b | b <- solve k, q <- [0..(n-1)], safe q b]
safe q b = and [not (checks q b i) | i <- [0..(length b-1)]]
checks q b i = q == (b!!i) || abs (q - (b!!i)) == i+1
Main> queens 1
[[0]]
Main> queens 2
[]
Main> queens 3
[]
Main> queens 4
[[2,0,3,1],[1,3,0,2]]
Main> queens 5
[[3,1,4,2,0],[2,4,1,3,0],[4,2,0,3,1],[3,0,2,4,1],[4,1,3,0,2],[0,3,1,4,2],[1,4,2,0,3],[0,2,4,1,3],
[2,0,3,1,4],[1,3,0,2,4]]
Main> queens 8
....
pf2

Pré-visualização parcial do texto

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

Trabalho: Usando a solução do problema das N rainhas listado abaixo como modelo, escreva um programa Haskell para resolver (facilmente) um quebra-cabeça Sudoku (www.sudoku.com)

Observações:

  • Deve ser entregue um relatório contendo o código comentado e diversos exemplos de execução do código.
  • Data de Entrega: 01/11/
  • Grupos de 2

Problema das N rainhas

O problema das N rainhas consiste em colocar N rainhas mutuamente antagônicas num tabuleiro N x N de forma que nenhuma rainha possa capturar outra rainha em um único movimento. O resultado deve conter uma lista de todas as soluções possíveis em que cada solução lista a posição da fila de cada rainha em ordem de coluna.

queens n = solve n

where solve 0 = [[]] solve (k+1) = [q:b | b <- solve k, q <- [0..(n-1)], safe q b] safe q b = and [not (checks q b i) | i <- [0..(length b-1)]] checks q b i = q == (b!!i) || abs (q - (b!!i)) == i+

Main> queens 1 [[0]] Main> queens 2 [] Main> queens 3 [] Main> queens 4 [[2,0,3,1],[1,3,0,2]] Main> queens 5 [[3,1,4,2,0],[2,4,1,3,0],[4,2,0,3,1],[3,0,2,4,1],[4,1,3,0,2],[0,3,1,4,2],[1,4,2,0,3],[0,2,4,1,3], [2,0,3,1,4],[1,3,0,2,4]] Main> queens 8 ....