Haskell程序打印镜像下三角星形图案
在Haskell中,我们可以使用unlines和replicate函数来打印镜像下三角星形图案。在第一个示例中,我们将使用( mirrorLowerTriangle n = unlines [replicate i '*' | i <- [1..n]] ++ unlines (reverse [replicate i '*' | i <- [2..n]]))函数,在第二个示例中,我们将使用(lowerMirrorTriangle n = unlines $ [replicate i '*' | i <- [1..n]] ++ [replicate i '*' | i <- [n-1,n-2..1]])函数。
算法
步骤1 − 程序执行将从main函数开始。main()函数控制整个程序。它被写成main = do。
步骤2 − 初始化名为“n”的变量,它将保存要打印的镜像下三角星形图案的行数。
步骤3 − lowerMirrorTriangle函数用于打印最终的镜像下三角星形图案,并结合使用unlines和replicate函数。
示例1
在这个示例中,使用reverse、unlines和replicate函数打印镜像下三角星形图案。
main = do let n = 5 putStrLn $ mirrorLowerTriangle n mirrorLowerTriangle :: Int -> String mirrorLowerTriangle n = unlines [replicate i '*' | i <- [1..n]] ++ unlines (reverse [replicate i '*' | i <- [2..n]])
输出
[1 of 1] Compiling Main ( main.hs, main.o ) Linking main ... * ** *** **** ***** ***** **** *** **
示例2
在这个示例中,使用在main函数中定义的reverse、unlines和replicate函数打印镜像下三角星形图案。
main = do let n = 5 putStrLn $ unlines [replicate i '*' | i <- [1..n]] ++ unlines (reverse [replicate i '*' | i <- [2..n]])
输出
[1 of 1] Compiling Main ( main.hs, main.o ) Linking main ... * ** *** **** ***** ***** **** *** **
示例3
在这个示例中,使用unlines和replicate函数打印镜像下三角星形图案。
main = do let n = 5 putStrLn $ lowerMirrorTriangle n lowerMirrorTriangle :: Int -> String lowerMirrorTriangle n = unlines $ [replicate i '*' | i <- [1..n]] ++ [replicate i '*' | i <- [n-1,n-2..1]]
输出
[1 of 1] Compiling Main ( main.hs, main.o ) Linking main ... * ** *** **** ***** **** *** ** *
示例4
在这个示例中,使用在main函数中定义的unlines和replicate函数打印镜像下三角星形图案。
main = do let n = 5 putStrLn $ unlines $ [replicate i '*' | i <- [1..n]] ++ [replicate i '*' | i <- [n-1,n-2..1]]
输出
[1 of 1] Compiling Main ( main.hs, main.o ) Linking main ... * ** *** **** ***** **** *** ** *
结论
镜像下三角星形图案是一种星号(*)以三角形形状排列的图案,其中三角形沿水平轴镜像,三角形的顶点位于底部。换句话说,该图案由一系列星号行组成,其中每一行比上一行多一个星号,并且这些行沿水平轴镜像,因此最长的一行星号位于图案的中间,最短的行位于图案的顶部和底部。