用于打印 8 星图案的 Haskell 程序

haskellserver side programmingprogramming

在本教程中,我们将学习如何开发一个 Haskell 程序,使用内部复制和连接函数打印 8 个起始图案。

"8"星图案是使用星号对数字 8 的 ASCII 艺术表示。如下所示 −

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

星号的排列方式使其形成数字 8 的形状。

算法

  • 步骤 1 - 使用 replicate 函数定义 printLine 函数为,

  • 步骤 2 - 程序执行将从 main 函数开始。main() 函数完全控制程序。它写为 main = do。在主函数中,传递一个数字,将打印 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

在此示例中,使用复制函数定义函数来打印 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 个起始模式


相关文章