module Tarefa0_geral where
type Matriz a = [[a]]
type Posicao = (Int,Int)
type Dimensao = (Int,Int)
data Direcao = Norte | Nordeste | Este | Sudeste | Sul | Sudoeste | Oeste | Noroeste
deriving (Direcao -> Direcao -> Bool
(Direcao -> Direcao -> Bool)
-> (Direcao -> Direcao -> Bool) -> Eq Direcao
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Direcao -> Direcao -> Bool
== :: Direcao -> Direcao -> Bool
$c/= :: Direcao -> Direcao -> Bool
/= :: Direcao -> Direcao -> Bool
Eq,Eq Direcao
Eq Direcao =>
(Direcao -> Direcao -> Ordering)
-> (Direcao -> Direcao -> Bool)
-> (Direcao -> Direcao -> Bool)
-> (Direcao -> Direcao -> Bool)
-> (Direcao -> Direcao -> Bool)
-> (Direcao -> Direcao -> Direcao)
-> (Direcao -> Direcao -> Direcao)
-> Ord Direcao
Direcao -> Direcao -> Bool
Direcao -> Direcao -> Ordering
Direcao -> Direcao -> Direcao
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: Direcao -> Direcao -> Ordering
compare :: Direcao -> Direcao -> Ordering
$c< :: Direcao -> Direcao -> Bool
< :: Direcao -> Direcao -> Bool
$c<= :: Direcao -> Direcao -> Bool
<= :: Direcao -> Direcao -> Bool
$c> :: Direcao -> Direcao -> Bool
> :: Direcao -> Direcao -> Bool
$c>= :: Direcao -> Direcao -> Bool
>= :: Direcao -> Direcao -> Bool
$cmax :: Direcao -> Direcao -> Direcao
max :: Direcao -> Direcao -> Direcao
$cmin :: Direcao -> Direcao -> Direcao
min :: Direcao -> Direcao -> Direcao
Ord,Int -> Direcao -> ShowS
[Direcao] -> ShowS
Direcao -> String
(Int -> Direcao -> ShowS)
-> (Direcao -> String) -> ([Direcao] -> ShowS) -> Show Direcao
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Direcao -> ShowS
showsPrec :: Int -> Direcao -> ShowS
$cshow :: Direcao -> String
show :: Direcao -> String
$cshowList :: [Direcao] -> ShowS
showList :: [Direcao] -> ShowS
Show,ReadPrec [Direcao]
ReadPrec Direcao
Int -> ReadS Direcao
ReadS [Direcao]
(Int -> ReadS Direcao)
-> ReadS [Direcao]
-> ReadPrec Direcao
-> ReadPrec [Direcao]
-> Read Direcao
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS Direcao
readsPrec :: Int -> ReadS Direcao
$creadList :: ReadS [Direcao]
readList :: ReadS [Direcao]
$creadPrec :: ReadPrec Direcao
readPrec :: ReadPrec Direcao
$creadListPrec :: ReadPrec [Direcao]
readListPrec :: ReadPrec [Direcao]
Read,Int -> Direcao
Direcao -> Int
Direcao -> [Direcao]
Direcao -> Direcao
Direcao -> Direcao -> [Direcao]
Direcao -> Direcao -> Direcao -> [Direcao]
(Direcao -> Direcao)
-> (Direcao -> Direcao)
-> (Int -> Direcao)
-> (Direcao -> Int)
-> (Direcao -> [Direcao])
-> (Direcao -> Direcao -> [Direcao])
-> (Direcao -> Direcao -> [Direcao])
-> (Direcao -> Direcao -> Direcao -> [Direcao])
-> Enum Direcao
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: Direcao -> Direcao
succ :: Direcao -> Direcao
$cpred :: Direcao -> Direcao
pred :: Direcao -> Direcao
$ctoEnum :: Int -> Direcao
toEnum :: Int -> Direcao
$cfromEnum :: Direcao -> Int
fromEnum :: Direcao -> Int
$cenumFrom :: Direcao -> [Direcao]
enumFrom :: Direcao -> [Direcao]
$cenumFromThen :: Direcao -> Direcao -> [Direcao]
enumFromThen :: Direcao -> Direcao -> [Direcao]
$cenumFromTo :: Direcao -> Direcao -> [Direcao]
enumFromTo :: Direcao -> Direcao -> [Direcao]
$cenumFromThenTo :: Direcao -> Direcao -> Direcao -> [Direcao]
enumFromThenTo :: Direcao -> Direcao -> Direcao -> [Direcao]
Enum)
eIndiceListaValido :: Int -> [a] -> Bool
eIndiceListaValido :: forall a. Int -> [a] -> Bool
eIndiceListaValido = Int -> [a] -> Bool
forall a. HasCallStack => a
undefined
dimensaoMatriz :: Matriz a -> Dimensao
dimensaoMatriz :: forall a. Matriz a -> Dimensao
dimensaoMatriz = Matriz a -> Dimensao
forall a. HasCallStack => a
undefined
ePosicaoMatrizValida :: Posicao -> Matriz a -> Bool
ePosicaoMatrizValida :: forall a. Dimensao -> Matriz a -> Bool
ePosicaoMatrizValida = Dimensao -> Matriz a -> Bool
forall a. HasCallStack => a
undefined
movePosicao :: Direcao -> Posicao -> Posicao
movePosicao :: Direcao -> Dimensao -> Dimensao
movePosicao = Direcao -> Dimensao -> Dimensao
forall a. HasCallStack => a
undefined
movePosicaoJanela :: Dimensao -> Direcao -> Posicao -> Posicao
movePosicaoJanela :: Dimensao -> Direcao -> Dimensao -> Dimensao
movePosicaoJanela = Dimensao -> Direcao -> Dimensao -> Dimensao
forall a. HasCallStack => a
undefined
origemAoCentro :: Dimensao -> Posicao -> Posicao
origemAoCentro :: Dimensao -> Dimensao -> Dimensao
origemAoCentro = Dimensao -> Dimensao -> Dimensao
forall a. HasCallStack => a
undefined
encontraIndiceLista :: Int -> [a] -> Maybe a
encontraIndiceLista :: forall a. Int -> [a] -> Maybe a
encontraIndiceLista = Int -> [a] -> Maybe a
forall a. HasCallStack => a
undefined
atualizaIndiceLista :: Int -> a -> [a] -> [a]
atualizaIndiceLista :: forall a. Int -> a -> [a] -> [a]
atualizaIndiceLista = Int -> a -> [a] -> [a]
forall a. HasCallStack => a
undefined
encontraPosicaoMatriz :: Posicao -> Matriz a -> Maybe a
encontraPosicaoMatriz :: forall a. Dimensao -> Matriz a -> Maybe a
encontraPosicaoMatriz = Dimensao -> Matriz a -> Maybe a
forall a. HasCallStack => a
undefined
atualizaPosicaoMatriz :: Posicao -> a -> Matriz a -> Matriz a
atualizaPosicaoMatriz :: forall a. Dimensao -> a -> Matriz a -> Matriz a
atualizaPosicaoMatriz = Dimensao -> a -> Matriz a -> Matriz a
forall a. HasCallStack => a
undefined
moveDirecoesPosicao :: [Direcao] -> Posicao -> Posicao
moveDirecoesPosicao :: [Direcao] -> Dimensao -> Dimensao
moveDirecoesPosicao = [Direcao] -> Dimensao -> Dimensao
forall a. HasCallStack => a
undefined
moveDirecaoPosicoes :: Direcao -> [Posicao] -> [Posicao]
moveDirecaoPosicoes :: Direcao -> [Dimensao] -> [Dimensao]
moveDirecaoPosicoes = Direcao -> [Dimensao] -> [Dimensao]
forall a. HasCallStack => a
undefined
eMatrizValida :: Matriz a -> Bool
eMatrizValida :: forall a. Matriz a -> Bool
eMatrizValida = Matriz a -> Bool
forall a. HasCallStack => a
undefined