gpt4 book ai didi

haskell - 检查点是否在半径内的函数

转载 作者:行者123 更新时间:2023-12-05 09:10:28 25 4
gpt4 key购买 nike

我需要有关此功能的帮助。它必须返回 2 个列表。第一个半径内的所有点,第二个半径内的所有其他点。这是我写的,但它给了我很多错误。

type Point = (Double, Double)
splitPoints :: Point -> Double -> [Point] -> ([Point], [Point])
splitPoints (x, y) r (z:zs)
|(_, _) _ [] = ([][])
|x * x + y * y <= r * r = (x,y) : (splitPoints (x, y) r zs) []
|otherwise = [] (x,y) : (splitPoints (x, y) r zs)

最佳答案

首先,您必须将空列表的模式匹配移出守卫并作为单独的函数子句。

其次,我建议将递归调用放在where 子句中,以分隔圆内和圆外的点。然后你可以检查你的守卫,你必须在哪个列表中插入点。

type Point = (Double, Double)

splitPoints :: Point -> Double -> [Point] -> ([Point], [Point])
splitPoints _ _ [] = ([], [])
splitPoints center@(centerx, centery) r ((x,y):zs)
| (x-centerx)**2 + (y-centery)**2 <= r**2 = ((x,y) : inside, outside)
| otherwise = (inside, (x,y) : outside)
where (inside, outside) = splitPoints center r zs

关于haskell - 检查点是否在半径内的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61406713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com