如何通过对具有(Int,Int)值的元组的第一个值和第二个值应用谓词来过滤它们的列表



假设我有一个元组列表,用它们的x和y值表示网格上的位置。

元组被定义为类型Pos,一对整数值。

董事会进一步定义为职位列表

type Pos = (Int, Int)
type Board = [Pos]
exampleBoard :: Board
exampleBoard = [(1, 1), (1, 2), (2, 2), (2, 3), (1, 3),
(5, 1), (5, 2), (4, 2), (4, 1), (5, 3),
(9, 10), (9, 11), (9, 12), (9, 13),
(10, 10), (10, 11), (10, 12), (10, 13),
(10, 20), (11, 20), (12, 20), (13, 20)]

Board是一个x*x网格,在这里您可以始终考虑具有相同值的已知变量高度和宽度。高度=宽度=尺寸

如果x或y值不在某个范围内(0<x<size|0<y<size(,我希望删除元组。

有没有一种简单的方法可以像我描述的那样过滤列表?通过搜索类似的问题,我尝试使用库函数;中断";以及";span";到目前为止还没有成功。

要测试元组(Int,Int)是否在给定范围内,可以使用inRange函数:

import Data.Ix (inRange)
inRange ((1,1),(10,10)) (5,5)                    -- True
inRange ((1,1),(10,10)) (11,6)                   -- False
filter (inRange ((1,1),(10,10))) [(5,5),(11,6)]  -- [(5,5)]

相关内容

最新更新