如何搜索重复的位置?

时间:2013-12-30 19:13:14

标签: haskell map filtering

我正在Haskell开发一个简单的游戏。这是一款棋盘游戏,其中Pieces通过坐标组织在“棋盘”上。

type Piece = (PType, Orientation,Coordinates)
type PType = Char
type Orientation = String
type Coordinates = (Int,Int)

好的,所以我从XML文件中读到了电路板的现状,我得到了一个新的部分。我想知道那块棋盘上那件作品可能会扮演什么角色。

我看第一块,我看看周围是否有碎片。例如,想象一个坐标为(0,0)的Piece。如果在坐标(1,0),( - 1,0),(0,1)和(0,-1)中的其他棋子中它不会产生任何可能的游戏,我想放入的那个新作品董事会,因为它周围没有空的空间。因此,我的功能可以围绕棋盘中的所有部分进行所有可能的游戏。

但我有一个问题。因此,例如,我可以在坐标(0,0)中有一个A片段,在坐标(2,0)中有一个片段B,并且在我运行所有可能的播放之后,它将给出一个忽略每个剧本的可能播放列表其他。由于(1,0)为空,因此该位置会有不同的游戏。

想象一下这个列表在我输出的上面例子的可能游戏中,对于一个新作品C.所有可能的游戏将是

[
(C,North,(3,0)),
(C,North,(-1,0)),

(C,North,(1,0)),
(C,South,(1,0)),
(C,North,(1,0)),
(C,East,(1,0))
]

因此,您可以看到坐标(1,0)有多个游戏。我只想要那些重复它们的人。我想制作某种过滤器,首先,只查看重复此可能播放列表的相同坐标的片段,然后仅获取具有相同PT类型和方向的片段。所以上面列表的输出将是

[
(C,North,(3,0)),
(C,North,(-1,0)),

(C,North,(1,0)),
]

有人可以帮我解决问题吗?我总是试图这样做让我得到同样的戏剧lol

0 个答案:

没有答案