gpt4 book ai didi

arrays - 在haskell中打印二维数组

转载 作者:行者123 更新时间:2023-12-02 07:14:13 26 4
gpt4 key购买 nike

我正在以这种简单的图像格式(PPM)打印随机的二维整数数组

0 1 0 0 1
1 0 0 1 0
0 1 1 0 0
0 1 1 1 0
0 0 0 1 0

下面是我的代码,它可以工作,但对于这样一个简单的操作来说,代码似乎太多了。有更好的方法吗?

import System.Random
import Data.Array.IArray

main = do
g <- newStdGen
let img = listArray ((0,0),(5,5)) ( myRands g ) :: Array (Int,Int) Int
putStrLn $ printArray img

myRands :: RandomGen g => g -> [Int]
myRands g = randomRs (0,1) g

make2dRange :: Int -> Int -> Int -> Int -> [(Int,Int)]
make2dRange x1 y1 x2 y2 = range ((x1,y1),(x2,y2))

printArray :: ( Array (Int,Int) Int ) -> String
printArray arr = unlines rows
where rows = map (unwords . map (show . (!) arr)) rowIndices
rowIndices = map ( \y -> make2dRange 0 y 5 y ) [0..5]

当然,除了显而易见的事情(例如,数组维度是硬编码的)

最佳答案

我会使用列表推导式来操作索引。

printArray arr =
unlines [unwords [show (arr ! (x, y)) | x <- [0..5]] | y <- [0..5]]

关于arrays - 在haskell中打印二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18691321/

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