は、私は開始時刻と終了時刻をタプルのリストを持っていると言う:Funtional方法の開始時刻と終了時刻との
List((1,10), (2,11), (3,11), (13,14))
だけ緩和はその開始時間が
を昇順されています私は次の出力を期待:
List((0,1), (11,13))
手続きの実装が機能して非常に簡単です、しかし、私は(慣用的に)これを行うための手掛かりを持っていないでしょう。
スケーラ・フォー・イールド・ループは、結果が入力と同じサイズになるため、不適切なフィットに見えます。縮小/折りたたみでは、答えとしてタプルが1つしかないという制限があります。
list
.foldLeft((List[(Int,Int)](), 0)) {
case ((res, se), (s, e)) =>
if(s>se) ((se, s)::res,e)
else (res, e)
}
._1
.reverse
説明:
整数で作業していますか?または、少なくとも離散的な値のセットで? – meucaa
実際の問題はyesです。これらはUNIXタイムスタンプです。 – hbogert
ライブラリやアルゴリズムの説明をお探しですか?関連性があります:https://github.com/rklaehn/intervalset –