Haskell程式列印8星圖案


在本教程中,我們將學習如何開發一個Haskell程式,使用內部的`replicate`和`concat`函式來列印8星圖案。

“8”星圖案是用星號(*)表示的數字8的ASCII藝術表示,如下所示:

********
*      *
*      *
********
*      *
*      *
********

星號的排列方式使其形成數字8的形狀。

演算法

  • 步驟1 - 使用`replicate`函式定義`printLine`函式,如下所示:

  • 步驟2 - 程式執行將從`main`函式開始。`main()`函式控制整個程式。它寫成`main = do`。在`main`函式中,傳遞一個數字,程式將列印到該數字的8星圖案。

  • 步驟3 - 變數“n”被初始化。它將儲存要列印的8星圖案的整數。

  • 步驟4 - 函式呼叫後,使用`putStrLn`語句將結果列印到控制檯。

在這個方法中,列印了數字8的ASCII藝術表示。`printEight`函式以整數n作為引數,並返回表示數字8的字串。`printLine`函式以整數n作為引數,並返回n個星號後跟換行符的字串。

示例1

在這個示例中,使用`replicate`函式定義函式來列印8星圖案。

module Main where

printLine :: Int -> String
printLine n = replicate n '*' ++ "
" printEight :: Int -> String printEight n = concat [ printLine n , "*" ++ replicate (n-2) ' ' ++ "*
" , printLine n , "*" ++ replicate (n-2) ' ' ++ "*
" , printLine n ] main :: IO () main = putStr (printEight 8)

輸出

********
*      *
********
*      *
********

示例2

在這個示例中,使用`replicate`函式定義函式來列印8星圖案。

module Main where

printRow :: Int -> String
printRow n = replicate n '*' ++ "
" printEight :: Int -> String printEight n = concat [ printRow n , "*" ++ replicate (n-2) ' ' ++ "*
" , "*" ++ replicate (n-2) ' ' ++ "*
" , printRow n , "*" ++ replicate (n-2) ' ' ++ "*
" , "*" ++ replicate (n-2) ' ' ++ "*
" , printRow n ] main :: IO () main = putStr (printEight 8)

輸出

********
*      *
*      *
********
*      *
*      *
********

結論

在本文中,我們學習瞭如何建立一個Haskell程式,使用`replicate`和`concat`等內部函式列印8星圖案。

更新於:2023年4月6日

118 次檢視

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.