La kata del diamante recibe una letra y la muestra en forma de diamante. Dada una letra, imprime un diamante que empieza con 'A', con la letra proporcionada en el punto más ancho.
En los siguientes ejemplos, los espacios se indican con el carácter ·.
Diamante para la letra 'A':
A
Diamante para la letra 'C':
··A··
·B·B·
C···C
·B·B·
··A··
Diamante para la letra 'E':
····A····
···B·B···
··C···C··
·D·····D·
E·······E
·D·····D·
··C···C··
···B·B···
····A····
Necesitas implementar la función diamond, que dibuja un rombo que empieza en A y que tiene el carácter dado en sus puntos más anchos. Puedes usar la firma que te proporcionamos si tienes dudas sobre los tipos, pero no dejes que limite tu creatividad:
diamond :: Char -> Maybe [String]
Este ejercicio trabaja con datos textuales. Por razones históricas, el tipo String de Haskell es sinónimo de [Char], una lista de caracteres. Para un manejo más eficiente de datos textuales, se puede usar el tipo Text.
Como extensión opcional de este ejercicio, puedes
- text a tu lista de dependencias en package.yaml.Data.Text de la siguiente manera:import qualified Data.Text as T
import Data.Text (Text)
diamond :: Char -> Maybe [Text] y referirte a los combinadores de Data.Text como, por ejemplo, T.pack,Data.Text,String por Text en Diamond.hs:diamond :: Char -> Maybe [Text]
Esta parte es totalmente opcional.
Regístrate en Exercism para aprender y dominar Haskell con 107 ejercicios y mentoría humana real, todo gratis.