कोड के इस ब्लॉक से पहले निर्धारित:विभाजन में एक संग्रह "K" पास करने के लिए बराबर टुकड़ों (स्काला, लेकिन नास्तिक भाषा)
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
}
मुझे यकीन नहीं है कि "जितना संभव हो उतना वितरित" की व्याख्या कैसे करें। आपके कोड पर जाकर, 'सेक: समूहीकृत (Int)' पहले से ही जो भी आप चाहते हैं वह करता है, सिवाय इसके कि यह टुकड़ा आकार से ऊपर कभी नहीं जाता है। – Kaito
ऐसा लगता है कि 'समूहित' इसे "x" के समूहों में विभाजित करेगा जबकि मैं संग्रह को "x" समूहों में विभाजित करना चाहता हूं। मैंने जवाब में यह कोशिश की, 'सूची (1, 2, 3, 4, 5)। समूहित (2)। टोस्ट' सूची देता है (सूची (1, 2), सूची (3, 4), सूची (5)) 'जबकि मुझे कुछ सूची चाहिए (सूची (1, 2), सूची (3, 4, 5)) '। – adelbertc