このコードブロックの前に定義されています:
dataset
Vector
または_List
numberOfSlices
Int
データセットをスライスする「回数」を示します
numberOfSlices
データセットをスライスに分割し、可能な限り均等に分散させたいと思います。「分割」とは、集合論の用語を使用するための「パーティション」(すべての共通部分は空で、すべての和集合は元の値である必要があります)を意味すると思いますが、これは必ずしも集合ではなく、任意のコレクションです。
例えば
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
}