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.