The diamond kata takes as its input a letter, and outputs it in a diamond shape. Given a letter, it prints a diamond starting with 'A', with the supplied letter at the widest point.
In the following examples, spaces are indicated by · characters.
Diamond for letter 'A':
A
Diamond for letter 'C':
··A··
·B·B·
C···C
·B·B·
··A··
Diamond for letter 'E':
····A····
···B·B···
··C···C··
·D·····D·
E·······E
·D·····D·
··C···C··
···B·B···
····A····
You need to implement the diamond function which prints a diamond starting at
A with the given character at its widest points. You can use the provided
signature if you are unsure about the types, but don't let it restrict your
creativity:
diamond :: Char -> Maybe [String]
This exercise works with textual data. For historical reasons, Haskell's
String type is synonymous with [Char], a list of characters. For more
efficient handling of textual data, the Text type can be used.
As an optional extension to this exercise, you can
- text to your list of dependencies in package.yaml.Data.Text in the following
way:import qualified Data.Text as T
import Data.Text (Text)
diamond :: Char -> Maybe [Text] and refer to
Data.Text combinators as e.g. T.pack,Data.Text,String with Text in Diamond.hs:diamond :: Char -> Maybe [Text]
This part is entirely optional.
Sign up to Exercism to learn and master Haskell with 107 exercises, and real human mentoring, all for free.