【发布时间】:2014-07-05 20:06:19
【问题描述】:
我想将列表列表中的每个项目与其他元素进行比较,例如,
[[1,2,3], [0,2,2], [1,4,5], [3,1,1]]
比较 [1,2,3] 和 [0,2,2] 并应用一个运算(例如,距离公式“sqrt ((x2-x1)^2+(y2-y1)^2) " 并且该操作的结果使用警卫对其进行评估),然后将 [1,2,3] 与 [1,4,5] 进行比较,从而结束列表,然后将 [0 , 2.2] 与 [1,4] 进行比较,5] 等等...
本来想拿(head i)和tail(head i)比较,但是不知道怎么继续迭代比较
你们能给我一个关于如何做到这一点的想法吗?谢谢你
编辑
我需要的是这个,例如,对于第一个列表列表,我需要根据距离公式制作另一个列表列表并比较列表的第三个元素,例如
[[1,2,3], [0,2,2], [1,4,5], [3,1,1]]
[x1,y1,z1], [x2,y2,z2]
sqrt ((x2-x1)^2+(y2-y1)^2)) if result_of_sqrt < z1 then 1:[do the same thing with the other element]
else 0:[do the same thing with the other element]
sqrt ((0-1)^2+(2-2)^2) ) = 1, 1 < 3 => 1:(compare this two elements [1,2,3],[1,4,5]) and so...
【问题讨论】:
-
这个描述不清楚。你期待什么输出?
-
在操作和守卫之后,我将根据结果创建一个包含 0 和 1 的列表列表,例如 [1,0,1],[0,0,0],[1 ,1,0],[1,0,1]
-
问题陈述中的类型签名错误。应该是
[[Int]] -> [[Int]]。
标签: haskell