Safe Haskell | None |
---|---|
Language | GHC2021 |
Tarefa0_geral
Description
Módulo que define funções genéricas sobre listas e matrizes.
Synopsis
- type Matriz a = [[a]]
- type Posicao = (Int, Int)
- type Dimensao = (Int, Int)
- data Direcao
- eIndiceListaValido :: Int -> [a] -> Bool
- dimensaoMatriz :: Matriz a -> Dimensao
- ePosicaoMatrizValida :: Posicao -> Matriz a -> Bool
- movePosicao :: Direcao -> Posicao -> Posicao
- movePosicaoJanela :: Dimensao -> Direcao -> Posicao -> Posicao
- origemAoCentro :: Dimensao -> Posicao -> Posicao
- encontraIndiceLista :: Int -> [a] -> Maybe a
- atualizaIndiceLista :: Int -> a -> [a] -> [a]
- encontraPosicaoMatriz :: Posicao -> Matriz a -> Maybe a
- atualizaPosicaoMatriz :: Posicao -> a -> Matriz a -> Matriz a
- moveDirecoesPosicao :: [Direcao] -> Posicao -> Posicao
- moveDirecaoPosicoes :: Direcao -> [Posicao] -> [Posicao]
- eMatrizValida :: Matriz a -> Bool
Tipos de dados
type Matriz a = [[a]] Source #
Uma matriz é um conjunto de elementos a duas dimensões.
Em notação matemática, é geralmente representada por:
type Posicao = (Int, Int) Source #
Uma posição numa matriz é dada como um par (linha,colunha). As coordenadas são dois números naturais e começam com (0,0) no canto superior esquerdo, com as linhas incrementando para baixo e as colunas incrementando para a direita.
type Dimensao = (Int, Int) Source #
A dimensão de uma matrix dada como um par (número de linhas,número de colunhas).
Uma direção é dada pela rosa dos ventos. Ou seja, os 4 pontos cardeais e os 4 pontos colaterais.
Instances
Enum Direcao Source # | |
Read Direcao Source # | |
Show Direcao Source # | |
Eq Direcao Source # | |
Ord Direcao Source # | |
Funções não-recursivas.
eIndiceListaValido :: Int -> [a] -> Bool Source #
Verifica se o indice pertence à lista.
dimensaoMatriz :: Matriz a -> Dimensao Source #
Calcula a dimensão de uma matriz.
NB: Note que não existem matrizes de dimensão m * 0 ou 0 * n, e que qualquer matriz vazia deve ter dimensão 0 * 0.
ePosicaoMatrizValida :: Posicao -> Matriz a -> Bool Source #
Verifica se a posição pertence à matriz.
movePosicao :: Direcao -> Posicao -> Posicao Source #
Move uma posição uma unidade no sentido de uma direção.
origemAoCentro :: Dimensao -> Posicao -> Posicao Source #
Converte uma posição no referencial em que a origem é no canto superior esquerdo da janela numa posição em que a origem passa a estar no centro da janela.
| NB: Considere posições válidas.
Funções recursivas.
encontraIndiceLista :: Int -> [a] -> Maybe a Source #
Devolve o elemento num dado índice de uma lista.
NB: Retorna Nothing
se o índice não existir.
atualizaIndiceLista :: Int -> a -> [a] -> [a] Source #
Modifica um elemento num dado índice.
NB: Devolve a própria lista se o elemento não existir.
encontraPosicaoMatriz :: Posicao -> Matriz a -> Maybe a Source #
Devolve o elemento numa dada posição de uma matriz.
NB: Retorna Nothing
se a posição não existir.
atualizaPosicaoMatriz :: Posicao -> a -> Matriz a -> Matriz a Source #
Modifica um elemento numa dada posição de uma matriz.
NB: Devolve a própria matriz se o elemento não existir.
moveDirecoesPosicao :: [Direcao] -> Posicao -> Posicao Source #
Aplica uma sequência de movimentações a uma posição, pela ordem em que ocorrem na lista.
moveDirecaoPosicoes :: Direcao -> [Posicao] -> [Posicao] Source #
Aplica a mesma movimentação a uma lista de posições.
eMatrizValida :: Matriz a -> Bool Source #