Haskell程式列印倒置星型圖案
在Haskell中,要列印倒置星型圖案,我們將使用`mapM_`、`reverse`、`unlines`和`replicate`函式。在第一個例子中,我們將使用`(invertedStarPattern n = mapM_ putStrLn (reverse [replicate i '*' | i <- [1..n]]))`函式,在第二個例子中,我們將使用`invertedTriangle n = unlines $ reverse [replicate i '*' | i <- [1..n]]`函式。在第三個例子中,我們將使用`(mapM_ putStrLn $ map (concat . flip replicate "*") rows)`函式。
方法一:使用`mapM_`、`reverse`和`replicate`函式列印倒置星型圖案。
在這種方法中,圖案是使用列表推導生成的,該推導建立一個字串列表,其中每個字串都是倒置星型圖案的一行。`replicate`函式用於為範圍n到1中的每個i建立一個長度為i的'*'字元的字串。
演算法
步驟1 − `invertedStarPattern`使用`mapM_`、`reverse`和`replicate`函式定義為:`invertedStarPattern n = mapM_ putStrLn (reverse [replicate i '*' | i <- [1..n]])`。
步驟2 − 程式執行將從`main`函式開始。`main()`函式控制整個程式。它被寫成`main = do`。
步驟3 − 初始化名為'n'的變數,它將儲存要列印倒置星型圖案的行數。
步驟4 − 呼叫函式後,將生成的倒置星型圖案列印到控制檯。
示例
在這個例子中,倒置星型圖案是使用`mapM_`、`reverse`和`replicate`函式列印的。
invertedStarPattern :: Int -> IO ()
invertedStarPattern n = mapM_ putStrLn (reverse [replicate i '*' | i <- [1..n]])
main :: IO ()
main = do
let n = 5
invertedStarPattern n
輸出
[1 of 1] Compiling Main ( main.hs, main.o ) Linking main ... ***** **** *** ** *
方法二:使用`unlines`函式列印倒置三角形星型圖案
在這種方法中,`invertedTriangle`函式接受一個整數n作為輸入,並返回一個表示倒置三角形星型圖案的字串。表示式`replicate i '*'`建立一個由i個星號組成的字串。列表推導`[replicate i '*' | i <- [1..n]]`生成一個字串列表,其中每個字串都是星號序列。每個字串的長度從1增加到n。`reverse`函式應用於步驟4中生成的列表,以反轉列表中元素的順序。然後,`unlines`函式應用於步驟5中生成的列表,以將列表中的元素連線成一個由換行符分隔的單個字串。
演算法
步驟1 − 程式執行將從`main`函式開始。`main()`函式控制整個程式。它被寫成`main = do`。
步驟2 − 初始化名為'n'的變數,它將儲存要列印倒置三角形星型圖案的行數。
步驟3 − `invertedTriangle`函式使用`unlines`和`reverse`函式定義為:`invertedTriangle n = unlines $ reverse [replicate i '*' | i <- [1..n]]`。
步驟4 − 呼叫函式後,將生成的倒置星型圖案列印到控制檯。
示例
在這個例子中,`invertedTriangle`以Int作為引數,並返回一個列印倒置三角形圖案的IO操作。該圖案使用列表推導生成,該推導建立一個字串列表,其中包含三角形每一行適當數量的星號。然後,`mapM_`函式在每一行列印每個字串。
main = do let n = 5 putStrLn $ invertedTriangle n invertedTriangle :: Int -> String invertedTriangle n = unlines $ reverse [replicate i '*' | i <- [1..n]]
輸出
[1 of 1] Compiling Main ( main.hs, main.o ) Linking main ... ***** **** *** ** *
方法三:使用`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 ... ***** **** *** ** *
結論
倒置星形三角形圖案是由星號(*)列印成倒三角形的圖案。三角形的每一行都比上一行多一個星號,頂行只有一個星號。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP