欢迎访问宙启技术站
智能推送

使用Haskell编写一个简单的金字塔游戏

发布时间:2023-12-09 15:24:05

下面是一个使用Haskell编写的简单金字塔游戏的代码示例:

import Data.List

-- 生成金字塔层数为n的列表
generatePyramid :: Int -> [Int]
generatePyramid n = [1..n] ++ [n-1,n-2..1]

-- 打印金字塔
printPyramid :: Int -> IO ()
printPyramid n = mapM_ putStrLn $ map (center n) $ map (concatMap show) $ map (flip take [1..]) $ generatePyramid n
  where
    center n xs = replicate ((maxWidth - length xs) div 2) ' ' ++ xs
    maxWidth = length $ concatMap show $ generatePyramid n

-- 检查用户输入的答案是否正确
checkAnswer :: Int -> Int -> Bool
checkAnswer n guess = guess == sum (generatePyramid n)

-- 主函数,用于交互
main :: IO ()
main = do
  putStrLn "欢迎来到金字塔游戏!请输入金字塔的层数:"
  n <- readLn
  putStrLn "金字塔已生成,请输入您的答案:"
  guess <- readLn
  if checkAnswer n guess
    then putStrLn "恭喜您,答案正确!"
    else putStrLn "很遗憾,答案错误!"

以上代码实现了一个简单的金字塔游戏,游戏的规则如下:

- 用户需要输入一个整数n作为金字塔的层数。

- 程序将根据输入的层数生成一个金字塔,金字塔的每一层都是连续的整数,从1到n。

- 用户需要输入一个整数作为他们猜测的金字塔的所有数字的和。

- 程序将检查用户的答案是否正确,如果正确则输出"恭喜您,答案正确!",否则输出"很遗憾,答案错误!"。

以下是一个使用该程序的示例交互:

欢迎来到金字塔游戏!请输入金字塔的层数:
5
金字塔已生成,请输入您的答案:
35
恭喜您,答案正确!

欢迎来到金字塔游戏!请输入金字塔的层数:
3
金字塔已生成,请输入您的答案:
10
很遗憾,答案错误!

在以上示例中,用户依次输入了金字塔的层数和他们猜测的金字塔的所有数字的和。程序根据用户的答案进行校验,并输出相应的结果。