Haskell程式列印上三角星形圖案
本教程將幫助我們使用Haskell中的mapM函式、forM函式和unlines函式列印上三角星形圖案。
上三角星形圖案是用星號組成的三角形的圖形表示,如下所示。
* ** *** **** *****
它被稱為“上”三角星形圖案,因為三角形從頂部開始,每一行的星號數量隨著我們向下移動三角形而減少。
演算法
步驟1 − 我們將從定義一個使用者自定義函式printStars函式開始。
步驟2 − 程式執行將從main函式開始。main()函式控制整個程式。它被寫成main = do。在main函式中,傳遞一個數字,以此數字為上限列印上三角星形圖案。
步驟3 − 名為“rowCount”的變數被初始化。它將儲存列印上三角星形圖案的整數上限。
步驟4 − 函式呼叫後,使用‘putStrLn’語句將結果列印到控制檯。
示例1
在這個例子中,printStars函式接收一個整數n作為輸入,並在單行中列印n個星號。printUpperTriangle函式接收一個整數n作為輸入,並呼叫printStars函式n次,每次都增加星號的數量。main函式接收一個整數輸入,並使用該輸入呼叫printUpperTriangle函式。
module Main where printStars :: Int -> IO () printStars n = putStrLn (take n (cycle "*")) printUpperTriangle :: Int -> IO () printUpperTriangle n = mapM_ printStars [1..n] main :: IO () main = do let rowCount = 5 printUpperTriangle rowCount
輸出
* ** *** **** *****
示例2
在這個例子中,使用mapM_和replicate函式定義函式來列印上三角星形圖案。
module Main where printUpperTriangle :: Int -> IO () printUpperTriangle n = mapM_ putStrLn [replicate i '*' | i <- [1..n]] main :: IO () main = do let rowCount = 5 printUpperTriangle rowCount
輸出
* ** *** **** *****
示例3
在這個例子中,匯入了Control.Monad模組,該模組提供了printUpperTriangle函式中使用的forM_函式。printStars函式接收一個Int引數n,並使用putStrLn函式列印一行n個星號。printUpperTriangle函式接收一個Int引數n,並使用forM_函式呼叫printStars函式n次,每次都增加星號的數量。
import Control.Monad printStars :: Int -> IO () printStars n = putStrLn (take n (cycle "*")) printUpperTriangle :: Int -> IO () printUpperTriangle n = forM_ [1..n] (\i -> printStars i) main :: IO () main = do let rowCount = 5 printUpperTriangle rowCount
輸出
* ** *** **** *****
示例4
在這個方法中,generateRows函式用於生成一個字串列表,其中每個字串代表一行星號。unlines函式用於將字串連線成一個字串,並在每個字串之間插入換行符。
module Main where generateRows :: Int -> [String] generateRows n = [replicate i '*' | i <- [1..n]] printUpperTriangle :: Int -> IO () printUpperTriangle n = putStr (unlines (generateRows n)) main :: IO () main = do let rowCount = 5 printUpperTriangle rowCount
輸出
* ** *** **** *****
結論
在Haskell中,要列印上三角星形圖案,我們可以使用MapM_、forM_或unlines函式。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP