gpt4 book ai didi

scala - 使用 foldleft 或其他运算符来计算点距离?

转载 作者:行者123 更新时间:2023-12-02 07:39:01 26 4
gpt4 key购买 nike

好吧,我认为这很容易,尝试练习 Scala 的集合运算符,我的示例是一个点列表。

该类可以计算并返回到另一点的距离( double )。

但是,向左折叠似乎不是正确的解决方案 - 考虑元素 e1、e2、e3.. 我需要一个移动窗口来计算,我需要最后一个元素在函数中继续前进 - 不仅仅是总和

Sum {
e1.dist(e2)
e2.dist(e3)
etc
}

阅读 API 时,我注意到一个名为“滑动”的函数,也许这是与另一个运算符结合使用的正确解决方案。我当然知道如何使用循环来执行此操作,但我正在努力学习 Scala 方法。

谢谢

import scala.math._

case class Point(x:Int, y:Int) {
def dist(p:Point) = sqrt( (p.x-x)^2+(p.y-y)^2 )

}

object Point {

//Unsure how to define this?
def dist(l:Seq[Point]) =l.foldLeft(0.0)((sum:Double,p:Point)=>)

}

最佳答案

我不太确定你想做什么,但假设你想要距离的总和:

l.zip(l.tail).map { case (x,y) => x.dist(y) }.sum

或滑动:

l.sliding(2).map { 
case List(fst,snd) => fst.dist(snd)
case _ => 0
}.sum

关于scala - 使用 foldleft 或其他运算符来计算点距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13152644/

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