O kata do diamante recebe uma letra como entrada e apresenta-a sob a forma de um diamante. Dada uma letra, imprime um diamante que começa com 'A' e tem a letra fornecida no ponto mais largo.
Nos exemplos seguintes, os espaços são representados por carateres ·.
Diamante para a letra 'A':
A
Diamante para a letra 'C':
··A··
·B·B·
C···C
·B·B·
··A··
Diamante para a letra 'E':
····A····
···B·B···
··C···C··
·D·····D·
E·······E
·D·····D·
··C···C··
···B·B···
····A····
Tens de implementar a função diamond, que imprime um losango que começa em A e tem o caráter dado nos seus pontos mais largos. Podes usar a assinatura fornecida se tiveres dúvidas sobre os tipos, mas não deixes que ela limite a tua criatividade:
diamond :: Char -> Maybe [String]
Este exercício trabalha com dados textuais. Por razões históricas, o tipo String do Haskell é sinónimo de [Char], uma lista de carateres. Para um tratamento mais eficiente de dados textuais, pode usar-se o tipo Text.
Como extensão opcional deste exercício, podes
- text à tua lista de dependências no package.yaml.Data.Text da seguinte forma:import qualified Data.Text as T
import Data.Text (Text)
diamond :: Char -> Maybe [Text] e referir-te aos combinadores de Data.Text como, por exemplo, T.pack,Data.Text,String por Text no Diamond.hs:diamond :: Char -> Maybe [Text]
Esta parte é totalmente opcional.
Inscreve-te no Exercism para aprenderes e dominares Haskell com 107 exercícios, e mentoria humana real, tudo grátis.