私はルビーに新たなんだと私はクラスカル法で少しプレーしてきたが、現時点では、私はバンプをヒットしていると私は私が何をする必要があるか理解できませんこの段階では。ルビー:クラスカル法 - ResultArray操作
私が取り組んできたコードはこれです:私は最後の部分を除いてすべてを行うために管理
def partition(arr, clusters)
edgeValues = []
index1 = 0
index2 = 1
arr = arr.sort # [3, 4, 5, 5, 6, 10, 15, 20, 75, 80, 85]
arr.length.times{
val = (arr[index1]-arr[index2]).abs
edgeValues << [ val, index1, index2]
index1 += 1
index2 += 1
break if (arr.length == index2)
}
edgeValues = edgeValues.sort
#p edgeValues[0][0] # value cost
#p edgeValues[0][1] # index 1
#p edgeValues[0][2] # index 2
end
array = [5, 4, 3, 5, 15, 20, 10, 80, 75, 6, 85]
clusters = 3
partition(array, clusters) #end result: [ [3, 4, 5, 5, 6], [10, 15, 20], [75, 80, 85] ]
。
私はどのようにソートされた配列操作することは考えていない:私はすべての扱わ計算とedgeValues
に保存されているこれらの値を持っている
[ [3, 4, 5, 5, 6], [10, 15, 20], [75, 80, 85] ]
:最終的な結果を達成するために
[3, 4, 5, 5, 6, 10, 15, 20, 75, 80, 85]
をアレイ。
ご協力いただければ幸いです。
「edgeValues = edgeValues.sort」は必要ありません。 –
https://stackoverflow.com/questions/20818882/partition-an-([この]を見てみ ''おそらくedgeValues.sort.each_slice(クラスター)edgeValues.sort' 'またはあなたのケースで終了するのに十分です近接数による配列の数列)答えはSO –