【发布时间】:2013-10-11 01:27:10
【问题描述】:
我以为我在 Haskell 学习中一帆风顺,直到...
我有一个 [[Int]]
tiles = [[1,0,0]
,[0,1,0]
,[0,1,0]
]
和数据类型:
data Coord = Coord
{ x :: Int
, y :: Int
} deriving (Eq)
基于输入tiles,我一直在尝试输出[Coord],这样Coord 仅在tiles 的值为1 时生成,Coord 将存储它在二维列表中的位置:
blackBox :: [[Int]] -> [Coord]
blackBox tiles = <magic>
-- given the above example I would expect:
-- [(Coord 0 0),(Coord 1 1),(Coord 1 2)]
我尝试过诸如首先将 [[Int]] 转换为 [Int],通过:
foldTiles :: [[Int]] -> [Int]
foldTiles tiles = foldr (++) [] tiles
但在那之后我不确定如何传递索引。我想如果我可以映射“折叠瓷砖”,输出一个元组(值,索引),我可以很容易地找出其余的。
更新如果有人感兴趣,我可以让它工作,这里有一个演示(带有源代码和 GitHub 链接)!我将不得不花更多时间来理解每个答案,因为这是我第一次使用 FP 编程游戏。非常感谢!
http://kennycason.com/posts/2013-10-10-haskell-sdl-gameboy-boxxle.html
【问题讨论】:
标签: haskell