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 ブロックの結果に対して take メソッドが確実に呼び出されるように、for の前後に括弧を追加するだけです。

于 2012-11-14T09:53:53.607 に答える