List 如何通过应用于其各自的第一个和第二个值的谓词过滤具有(Int,Int)值的元组列表?
假设我有一个元组列表,通过x和y值表示网格上的位置 元组定义为Pos类型,即一对整数值 董事会被进一步定义为一个Pos列表List 如何通过应用于其各自的第一个和第二个值的谓词过滤具有(Int,Int)值的元组列表?,list,haskell,filter,tuples,List,Haskell,Filter,Tuples,假设我有一个元组列表,通过x和y值表示网格上的位置 元组定义为Pos类型,即一对整数值 董事会被进一步定义为一个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),
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)]
板是一个x*x网格,在这里你总是可以考虑已知变量的高度和宽度具有相同的值。高度=宽度=尺寸
如果x或y值不在特定范围内(0要测试元组(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)]
毫不奇怪,您需要一个名为“filter”的函数。