понедельник, 26 мая 2008 г.

сортировка версий

есть множество строк: Есть несколько множеств типа: strs = ['1.10.1.0','1.1.13.0','1.2.3.4','1.20.3.1','1.24.1.1','1.3.6.7','1.1.6.7','1.3.3.7', '0.0.0.1', '0.1.0.0'] В разных множествах колличество чиселок, разделенных точками может различаться (2-5). В одном множестве все строки с одинаковым колвом чиселок все чиселки: 0 <= чиселко <= 9999
strs = ['1.10.1.0','1.1.13.0','1.2.3.4','1.20.3.1','1.24.1.1','1.3.6.7','1.1.6.7','1.3.3.7', '0.0.0.1', '0.1.0.0']
puts strs.sort.join("\n")
puts " - "
String.class_eval(%Q{
  def ver_to_i
    total = 0
    self.split('.').reverse.each_with_index{|d,i|
      total += d.to_i * 1000 ** (i+1)
    }
    total
  end
})
puts strs.sort{|a,b| a.ver_to_i <=> b.ver_to_i}.join("\n")
п.с. ruby 1.9

Комментариев нет: