Haskell 程式列印正方形星號圖案
在 Haskell 中,我們可以使用諸如 mapM、forM 或遞迴函式之類的內部函式來列印正方形星號圖案。
正方形星號圖案是由星號(或星號,用“*”符號表示)組成的二維圖案,排列成正方形形狀,如下所示。
**** **** **** ****
正方形圖案是透過列印指定數量的行形成的,每行包含指定數量的星號。圖案可以是任何大小,每行中的行數和星號數決定了正方形圖案的整體大小。
演算法
步驟 1 - 定義一個名為 generateLine 的使用者定義函式
步驟 2 - 程式執行將從 main 函式開始。main() 函式控制整個程式。它寫成 main = do。在 main 函式中,傳遞了一個數字,該數字將列印正方形星號圖案。
步驟 3 - 變數“lines”正在初始化。它將儲存要列印正方形星號圖案的整數。
步驟 4 - 函式呼叫後,使用 'putStrLn' 語句將結果列印到控制檯。
示例 1
在這個示例中,generateLine 函式透過重複 n 次“*”字元來生成正方形圖案的一行。printSquare 函式透過重複 n 次行並使用 mapM_ putStrLn 列印每一行來列印圖案。
module Main where generateLine :: Int -> String generateLine n = replicate n '*' printSquare :: Int -> IO () printSquare n = mapM_ putStrLn (replicate n (generateLine n)) main :: IO () main = do let lines = 4 printSquare lines
輸出
**** **** **** ****
示例 2
在這個示例中,使用 mapM_ 和 replicate 函式定義了該函式以列印正方形星號圖案。
module Main where printSquare :: Int -> IO () printSquare n = mapM_ putStrLn [replicate n '*' | _ <- [1..n]] main :: IO () main = do let lines = 4 printSquare lines
輸出
**** **** **** ****
示例 3
在這個示例中,generateLine 函式透過重複 n 次“*”字元來生成正方形圖案的一行。printSquare 函式透過重複 n 次行並使用 forM_ putStrLn 列印每一行來列印圖案。
module Main where import Control.Monad (forM_) printSquare :: Int -> IO () printSquare n = forM_ [1..n] $ \i -> putStrLn (replicate n '*') main :: IO () main = do let lines = 4 printSquare lines
輸出
**** **** **** ****
示例 4
在這個示例中,printLine 函式用於列印一行包含 n 個“*”字元,printSquare 函式用於列印整個正方形圖案,其中包含 n 行和每行 m 個星號。該函式使用條件語句在列印完所有 n 行後停止遞迴。
module Main where
printLine :: Int -> IO ()
printLine 0 = return ()
printLine n = do
putChar '*'
printLine (n - 1)
printSquare :: Int -> Int -> IO ()
printSquare n m
| n == 0 = return ()
| otherwise = do
printLine m
putStrLn ""
printSquare (n - 1) m
main :: IO ()
main = do
let lines = 4
printSquare lines lines
輸出
**** **** **** ****
結論
在 Haskell 中,要列印正方形星號圖案,我們可以使用 MapM_、forM_ 或遞迴函式。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP