worms
Safe HaskellNone
LanguageGHC2021

Tarefa0_geral

Description

Módulo que define funções genéricas sobre listas e matrizes.

Synopsis

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).

data Direcao Source #

Uma direção é dada pela rosa dos ventos. Ou seja, os 4 pontos cardeais e os 4 pontos colaterais.

Instances

Instances details
Enum Direcao Source # 
Instance details

Defined in Tarefa0_geral

Read Direcao Source # 
Instance details

Defined in Tarefa0_geral

Show Direcao Source # 
Instance details

Defined in Tarefa0_geral

Eq Direcao Source # 
Instance details

Defined in Tarefa0_geral

Methods

(==) :: Direcao -> Direcao -> Bool #

(/=) :: Direcao -> Direcao -> Bool #

Ord Direcao Source # 
Instance details

Defined in Tarefa0_geral

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.