、またはn
を使用せずにリストを取得して分割する関数を定義しようとしています。take
drop
grouped
def mySplit[X](n: Int, xs: List[X]): (List[X], List[X]) = {
if (n <= 0) (Nil, xs)
else
if (n >= xs.size) (xs, Nil)
else
if (n < xs.tail.size) (xs.head :: mySplit(n, xs.tail), Nil)
else (Nil, xs.head :: mySplit(n, xs.tail))
}
これが私が考えていることです。n < xs.tail.size
タプル1(パート1を表す)を構築できる場合は、タプル2(リストの2番目の部分)で作業できます。
上記は機能しません。::
タプルの一部を作成しているときは気に入らないようです。
私はこれに正しい方法でアプローチしていますか?
例:mySplit(3, (1 to 5).toList)
戻る必要があります(List(1,2,3), List(4,5))