El kata del diamante recibe como entrada una letra y la representa con forma de diamante. Dada una letra, imprime un diamante que empieza por la '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····
Tienes que implementar la función diamond, que imprime un rombo que empieza en A y tiene el carácter dado en sus puntos más anchos. Puedes usar la signatura que se proporciona si no estás seguro de 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], un array de caracteres. Para manejar datos textuales de forma más eficiente, se puede usar el tipo Text.
Como ampliación opcional de este ejercicio, puedes:
- text a tus 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.