Haskell 程序打印向下三角形星号图案
在 Haskell 中,要打印向下三角形星号图案,我们将使用 mapM_、replicate 和 unlines 函数。在第一个示例中,我们将使用在 main 函数下定义的 ( mapM_ putStrLn $ map (concat . flip replicate "*") rows) 函数,在第二个示例中,我们将使用用户定义的 (printDownwardTriangle n = mapM_ putStrLn [replicate i '*' | i <- [n,n-1..1]]) 函数。在第三个示例中,我们将使用 (downwardTriangle n = unlines $ reverse [replicate i '*' | i <- [1..n]]) 函数。
方法 1:使用 flip replicate 函数打印向下三角形星号图案
在这种方法中,定义了一个整数列表“rows”,从 n 倒数到 1,然后使用“map”和“putStrLn”的组合来打印列表中每个整数的星号字符串。
算法
步骤 1 − 程序执行将从 main 函数开始。main() 函数控制整个程序。它写成 main = do。
步骤 2 − 命名为“n”的变量被初始化,它将保存要打印向下三角形星号图案的行数的值。
步骤 3 − mapM_ 函数用于打印生成的向下三角形星号图案以及 flip replicate 函数,如 mapM_ putStrLn $ map (concat . flip replicate "*") rows。
示例
在这个例子中,使用在 main 函数下定义的 mapM_ 和 flip replicate 函数打印向下三角形星号图案。
main :: IO () main = do let n = 5 let rows = reverse [1..n] mapM_ putStrLn $ map (concat . flip replicate "*") rows
输出
[1 of 1] Compiling Main ( main.hs, main.o ) Linking main ... ***** **** *** ** *
方法 2:使用 mapM_ 和 replicate 函数打印向下三角形星号图案
在这种方法中,printDownwardTriangle 函数以整数 n 作为输入,并使用列表推导式打印向下三角形星号图案。列表推导式生成一个字符串列表,其中每个字符串都是三角形的一行,由“*”字符组成。每行中“*”字符的数量由整数列表 [n,n-1..1] 确定,该列表从 n 倒数到 1。replicate 函数用于为每一行创建适当长度的“*”字符字符串。最后,mapM_ putStrLn 用于在单独的行上打印每一行。
算法
步骤 1 − 程序执行将从 main 函数开始。main() 函数控制整个程序。它写成 main = do。
步骤 2 − 命名为“n”的变量被初始化,它将保存要打印向下三角形星号图案的行数的值。
步骤 3 − 使用 mapM_ 和 replicate 定义用户定义函数
步骤 4 − 一旦函数被调用,生成的向下星号图案就会打印到控制台。
示例 1
在这个例子中,printDownwardTriangle 以 Int 作为其参数,并返回一个打印向下三角形图案的 IO 操作。该图案使用列表推导式生成,该列表推导式创建了一个字符串列表,每个字符串包含三角形每一行所需的星号数量。然后,mapM_ 函数在新的行上打印列表中的每个字符串。
main = do let n = 5 printDownwardTriangle n printDownwardTriangle :: Int -> IO () printDownwardTriangle n = mapM_ putStrLn [replicate i '*' | i <- [n,n-1..1]]
输出
[1 of 1] Compiling Main ( main.hs, main.o ) Linking main ... ***** **** *** ** *
示例 2
在这个例子中,printDownwardTriangle 以 Int 作为其参数,并返回一个打印向下三角形图案的 IO 操作。该图案使用列表推导式生成,该列表推导式创建了一个字符串列表,每个字符串包含三角形每一行所需的星号数量。然后,mapM_ 函数在新的行上打印列表中的每个字符串。
main = do let n = 5 putStrLn $ downwardTriangle n downwardTriangle :: Int -> String downwardTriangle n = unlines $ reverse [replicate i '*' | i <- [1..n]]
输出
[1 of 1] Compiling Main ( main.hs, main.o ) Linking main ... ***** **** *** ** *
结论
向下三角形星号图案是一系列星号行,每一行比前一行少一个星号。这些行排列成一个向下指的三角形形状,第一行星号最多,最后一行只有一个星号。
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP