Safe HaskellSafe

Tarefa3

Synopsis

Documentation

compactcorridor1 :: Corridor -> Instruction #

O objetivo da função compactcorridor1 é transformar um corredor, igual ao visualizado na Tarefa 1, em um tipo Instruction fazendo já padrões horizontais, isto é, se tiver peças iguais consecutivas então a função junta-as num único Tuplo, vendo isso através da sua função auxiliar com acumulador.

compactMaze1 :: Maze -> Instructions #

A função compactMaze1 realiza um processo muito semelhante à compactcorridor1 mas faz isso para Labirintos completos utilizando a função compactcorridor como base

poselem :: Instructions -> Int -> Instruction #

A função poselem funciona como função auxiliar da função padroesverticais

padroesverticais :: Int -> Instructions -> Instructions #

Esta função é a base da 3ª parte desta tarefa, ou seja, a parte dos padrões verticais. Assim, a função padroesverticais tem como objetivo verificar se, para uma lista restringida a começar por um elemento numa certa posição, tem corredores iguais a esse, se sim, então faz a respetiva substituição da Instruction.

padroesverticais2 :: Int -> Instructions -> Instructions #

A função padroesveticais2 é uma função auxiliar da função padroesverticais1, que tem como finalidade a mesma da função acima definida.

acumulador :: Int -> Instructions -> Instructions #

A função acumulador é a função responsável por simplificar todo o labirinto utilizando diretamente as funções padroesverticais e poselem.

geral :: Instructions -> Instructions #

A função geral é a que organiza e comanda a parte dos padrões verticais visto que utiliza a função acumulador para fazer as simplificações necessárias até chegar à forma mais compacta do Labirinto.

principal :: Maze -> Instructions #

Esta é a função principal da Tarefa 3, que utilizando todas as anteriores, umas de forma mais notável que outras, concede ao utilizador a forma mais simplificada possivel de um Labirinto.