gpt4 book ai didi

list - 在 Haskell 中输出列表列表?

转载 作者:行者123 更新时间:2023-12-01 06:40:10 25 4
gpt4 key购买 nike

我是 Haskell 的初学者,但有人要求我创建一个数独求解器。我一直在用它取得一些稳步进展,但它要求我做的一件事是打印一个数独谜题的有效表示。 Puzzle 数据类型被定义为列表的列表,因此 [[Maybe Int]] 由 Block 值组成([Maybe Int],代表一行) .

函数签名是这样的:

printPuzzle::Puzzle -> IO ()

我如何输出这个?我知道这可能是一个简单的问题,我没有捕获要点,但我还没有达到在语法方面取得领先的阶段。任何帮助将非常感激!

最佳答案

简单的 pretty-print 可以用类似下面的东西非常简洁地完成:

import Data.Char (intToDigit)

showRow :: [Maybe Int] -> String
showRow = map (maybe ' ' intToDigit)

showPuzzle :: [[Maybe Int]] -> [String]
showPuzzle = map showRow

printPuzzle :: [[Maybe Int]] -> IO ()
printPuzzle = mapM_ putStrLn . showPuzzle
  • showRow 从您的网格中获取一行并打印它 - 使用 maybe来自 Data.Maybe 的函数,我们可以将其编写为从每个 Maybe Int 值到默认“空格”值或表示数字的字符的快速映射(使用intToDigit ).

  • showPuzzle 只是将 showRow 映射到外部列表上。

  • printPuzzle 只是使用前面的纯定义来给出打印网格的不纯操作,通过 putStrLn 打印每一行。


快速演示:

> printPuzzle [[Just 1, Nothing, Just 3],
[Nothing, Just 3, Just 6],
[Just 2, Just 4, Just 5]]
1 3
36
245

虽然您可以轻松修改上面的代码以打印更明确的内容,例如:

1X3
X36
245

关于list - 在 Haskell 中输出列表列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48150890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com