假设我有一个元组列表,用它们的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)]