一つのリスト内のリストの要素にアクセスし、その要素が最小値より大きいかどうかをチェックしたい。 例:リスト[([1,2]、0.3)、([1.5,6]、0.35)、([4,10]、0.25)、([7,15]、0.1)]
値:1
リスト[([1,6]、0.65)、([4,10]、0.25)、([7,15]、0.1)]
1.5-1がそれほど小さい最小値1よりも大きければ、要素[1,2]、0.3)と([1.5,6]、0.35)を[1,6]、0.65としてマージします。つまり、内部リストの最初の要素をとり、外部リストの第2要素の要素と外部リストの第2要素が追加されます(0.3 + 0.35)。これは、外部リストのすべての要素に対して行われます。 私が試したコードは以下の通りです:リスト内のリスト内の要素にアクセスする方法
def reduce (d1:List[(Interval, Rational)]): List[(Interval, Rational)] =
{
var z = new ListBuffer[(Interval, Rational)]()
def recurse (list: List[(Interval, Rational)]): Unit = list match {
case List(x, y, _*) if ((y._1_1 - x._1_1) < min_val) =>
val i = x._1_1; y._1_2
val w = x._2 + y._2
z += (i,w)
else
z += x
recurse(list.tail)
case Nil =>
}
z.toList
}
これは機能しません。これを解決するために私を助けてください。
それはあなたがフィルタリングしようとしているものを実際に明確ではありません。あなたの望む結果で、 '([1,6]、0.65)'がどこから来たのですか?元のリストには含まれていません。 – maioman
[MCVを読む](http://stackoverflow.com/help/mcve)コード例をご覧ください。 – jwvh
質問を編集しました。 –