Árbol de Navidad
Definir el procedimiento
1 |
arbol :: Int -> IO () |
tal que (arbol n) dibuja el árbol de Navidad con una copa de altura n y un tronco de altura la mitad de n. Por ejemplo,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
λ> arbol 5 X XXX XXXXX XXXXXXX XXXXXXXXX X X λ> arbol 6 X XXX XXXXX XXXXXXX XXXXXXXXX XXXXXXXXXXX X X X λ> arbol 7 X XXX XXXXX XXXXXXX XXXXXXXXX XXXXXXXXXXX XXXXXXXXXXXXX X X X |
Soluciones
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
arbol :: Int -> IO () arbol n = do putStrLn "" sequence_ [putStrLn c | c <- triangulo n] sequence_ [putStrLn c | c <- rectangulo n] putStrLn "" triangulo :: Int -> [String] triangulo n = [replicate (n-k) ' ' ++ replicate (1+2*k) 'X' | k <- [0..n-1]] rectangulo :: Int -> [String] rectangulo n = [replicate n ' ' ++ "X" | _ <- [1..n `div` 2]] |
Con un poco de espacio entre árbol n y el dibujo del árbol: