Dire que j'ai un tableau qui représente un ensemble de points:Comment générer un tableau de distances par paires dans Ruby?
x = [2, 5, 8, 33, 58]
Comment générer un tableau de toutes les distances par paires?
Merci!
Dire que j'ai un tableau qui représente un ensemble de points:Comment générer un tableau de distances par paires dans Ruby?
x = [2, 5, 8, 33, 58]
Comment générer un tableau de toutes les distances par paires?
Merci!
x = [2, 5, 8, 33, 58]
print x.collect {|n| x.collect {|i| (n-i).abs}}.flatten
Je pense que cela le ferait.
Si vous voulez vraiment un tableau au lieu d'une matrice, c'est O (n^2/2) au lieu de O (n^2).
result=[]
x.each_index{|i| (i+1).upto(x.size-1){|j| result<<(x[i]-x[j]).abs}}
x.map{|i| x.map{|j| (i-j).abs } }
donne
[[0, 3, 6, 31, 56], [3, 0, 3, 28, 53], [6, 3, 0, 25, 50], [31, 28, 25, 0, 25], [56, 53, 50, 25, 0]]
(le format comme en imprimant avec 'pp' au lieu de puts)
et
x.map{|i| x.map{|j| (i-j).abs } }.flatten
donne
[0, 3, 6, 31, 56, 3, 0, 3, 28, 53, 6, 3, 0, 25, 50, 31, 28, 25, 0, 25, 56, 53, 50, 25, 0]
si vous voulez vraiment un tableau
cela est encore O (n^2), mais avec la moitié des comparaisons numériques. O (n!) N'est pas ce que tu veux dire quand même. –
Oops - Si 4! est 4 * 3 * 2 * 1, qu'est-ce que 4 + 3 + 2 + 1 appelé? – AShelly
1 + 2 + ... + n = n * (n-1)/2 – grifaton