:パーティションのコードブロックの前に定義された「K」近いツー等分(スカラ、しかし依存しない言語)に収集
dataset
がVector
又はList
numberOfSlices
することができるInt
ありますスライスデータセットのスライス数を指定します。
データセットをできるだけ均等に分割して分割したいと考えています。 「分割」とは、必ずしも任意の集合ではないが、集合理論の用語を使用するためには、「分割」(すべての交差が空でなければならず、すべての結合が元のものでなければならない)を意味すると思う。
dataset = List(1, 2, 3, 4, 5, 6, 7)
numberOfSlices = 3
slices == ListBuffer(Vector(1, 2), Vector(3, 4), Vector(5, 6, 7))
以下のような方法がありますか? (私は最適ではないと確信しています...) これはアルゴリズム的に実現可能な試みではないでしょうか?
val slices = new ListBuffer[Vector[Int]]
val stepSize = dataset.length/numberOfSlices
var currentStep = 0
var looper = 0
while (looper != numberOfSlices) {
if (looper != numberOfSlices - 1) {
slices += dataset.slice(currentStep, currentStep + stepSize)
currentStep += stepSize
} else {
slices += dataset.slice(currentStep, dataset.length)
}
looper += 1
}
「できるだけ均等に配分する」と解釈する方法がわかりません。あなたのコードを見れば、 'Seq:grouped(Int)'は既にスライスサイズを上回っていないことを除いて、あなたが望むものを実行します。 – Kaito
'' grouped'は "x"のグループに分けられますが、私はコレクションを "x"グループに分けたいと思います。リスト(1,2,3,4,5).grouped(2).toList'は 'List(1,2)、List(3,4)、List(5) ) '私は' List(List(1,2)、List(3、4、5)) 'のようなものを求めています。 – adelbertc