gpt4 book ai didi

Scala 方法来转换点数组

转载 作者:行者123 更新时间:2023-12-04 05:35:56 24 4
gpt4 key购买 nike

我有一个点数组。对于除第一个之外的每个点,我想减去前一个:

Array((1,1), (3,1), (4,3)) 变成 Array((1,1), (2,0), (1 ,2))

我提出了一种“某种”函数式风格:

val trans = for (i <- 0 until points.length - 1) 
yield {
(points(i + 1)._1 - points(i)._1, points(i + 1)._2 - points(i)._2)
}
val result = trans ++ points

但我觉得它可以做得更好。完成转换后,我将要在 result 中添加所有元组。

最佳答案

通常,您编写的 for-comprehension 是通过 zip 完成的:

(xs zip xs.drop(1)).map{ case ((x1,y1), (x2,y2)) => (x2-x1, y2-y1) }

其余的(添加第一个元素)是专门用于您自己的。 (您可以将 (0,0) 添加到 xs.drop(1) 的前面,或者将 xs.take(1) 添加到结果。)

另外,请注意,完全可以将整个算法与 sum 一起编写为单次折叠或递归。

(我假设您在这里没有性能限制。)

关于Scala 方法来转换点数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30716763/

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