0
val SumABC = 1000
val Max = 468
val Min = 32

val p9 = for {
  a <- Max to 250 by -1
  b <- Min+(Max-a) to 249
  if a*a+b*b == (SumABC-a-b)*(SumABC-a-b)
} yield a*b*(SumABC-a-b)

我可以在这里 .take(1) 吗?(我试图将它翻译成平面图、过滤器等,但由于我失败了,我想它无论如何都不会那么可读......)

4

1 回答 1

2

如果我理解你的神秘问题,你想做的是以下

val p9 = (for {
  a <- Max to 250 by -1
  b <- Min+(Max-a) to 249
  if a*a+b*b == (SumABC-a-b)*(SumABC-a-b)
} yield a*b*(SumABC-a-b)).take(1)

只需在 for 之前和之后添加括号,以确保在 for 块的结果上调用 take 方法

于 2012-11-14T09:53:53.607 回答