import Data.List (intersperse) import Data.Char (chr) import Control.Applicative ((<$>)) import System.IO (readLn) triforce :: Int -> String triforce n | n > 0 = unlines rows where rows = row <$> [1..n] row i = let nbsp = chr 0x00A0 triangle = chr 0x25B2 offset = replicate (n - i) nbsp triangles = replicate i triangle in offset ++ intersperse nbsp triangles main :: IO () main = (readLn :: IO Int) >>= return . triforce >>= putStrLn