Advertisement
miftahunajat

Untitled

Oct 22nd, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.71 KB | None | 0 0
  1. def hitung_jarak_kluster cluster1, cluster2
  2.   #p cluster1, cluster2
  3.     jarak = 0;
  4.     cluster1.each do |a|
  5.         cluster2.each do |b|
  6.             jarak +=Math.sqrt ( a.zip(b).map{ |n| n.reduce(:-)}.map{|n| n**2}.reduce(:+) )
  7.         end
  8.     end
  9.     jarak
  10. end
  11. data = [ [1,1] ,[2,1], [2,2], [1,2], [7,7], [9,9]]
  12. cluster = Hash.new
  13. data.each {|arr| cluster[arr] = [arr] }
  14. k = gets.chomp.to_i
  15. n = data.length
  16. while n != k
  17.     min = 999999
  18.     join = []
  19.     cluster.each do|k,v|
  20.         cluster.each do|i,p|
  21.             if (p != v)
  22.                 temp = hitung_jarak_kluster v,p
  23.         join = [k,i] if (temp < min)
  24.                 min = temp if (temp < min)
  25.             end
  26.         end
  27.     end
  28.     cluster[join[0]] = cluster[join[0]] + cluster[join[1]]
  29.     cluster.delete( join[1] )
  30.     n-=1
  31. end
  32. p cluster
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement