Haskell の勉強は順風満帆だと思っていたのですが...
私は[[Int]]を持っています
tiles = [[1,0,0]
,[0,1,0]
,[0,1,0]
]
およびデータ型:
data Coord = Coord
{ x :: Int
, y :: Int
} deriving (Eq)
input に基づいて、 aの値が 1の場合にのみaが生成され、がその位置を 2d リストに格納するように、 atiles
を出力しようとしました。[Coord]
Coord
tiles
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