La kata del diamante prende in input una lettera e la dispone in output a forma di diamante. Data una lettera, stampa un diamante che inizia con 'A', con la lettera fornita nel punto più largo.
Nei seguenti esempi, gli spazi sono indicati con il carattere ·.
Diamante per la lettera 'A':
A
Diamante per la lettera 'C':
··A··
·B·B·
C···C
·B·B·
··A··
Diamante per la lettera 'E':
····A····
···B·B···
··C···C··
·D·····D·
E·······E
·D·····D·
··C···C··
···B·B···
····A····
Devi implementare la funzione diamond, che stampa un rombo che parte da A e ha il carattere dato nei suoi punti più larghi. Puoi usare la firma fornita se hai dubbi sui tipi, ma non lasciare che limiti la tua creatività:
diamond :: Char -> Maybe [String]
Questo esercizio lavora con dati testuali. Per ragioni storiche, il tipo String di Haskell è sinonimo di [Char], una lista di caratteri. Per gestire i dati testuali in modo più efficiente, si può usare il tipo Text.
Come estensione facoltativa di questo esercizio, puoi
- text all'elenco delle dipendenze in package.yaml.Data.Text in questo modo:import qualified Data.Text as T
import Data.Text (Text)
diamond :: Char -> Maybe [Text] e riferirti ai combinatori di Data.Text come ad esempio T.pack,Data.Text,String con Text in Diamond.hs:diamond :: Char -> Maybe [Text]
Questa parte è del tutto facoltativa.
Iscriviti a Exercism per imparare e padroneggiare Haskell con 107 esercizi e il mentoring di persone reali, tutto gratis.