From 9e16541e36564097bbb87861e6c3cdff4927fa58 Mon Sep 17 00:00:00 2001 From: Nick Chambers Date: Sun, 25 Jul 2021 20:27:29 -0500 Subject: [PATCH] ruby/vers.rb: sort version numbers in ascending order --- ruby/vers.rb | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 ruby/vers.rb diff --git a/ruby/vers.rb b/ruby/vers.rb new file mode 100644 index 0000000..d26d448 --- /dev/null +++ b/ruby/vers.rb @@ -0,0 +1,30 @@ +#!/usr/bin/env ruby + +def sort_ver(vers) + vers.sort do |v1, v2| + v1_info = v1.split(?.).map &:to_i + v2_info = v2.split(?.).map &:to_i + ord_found = 0 + + while ord_found.zero? and not v1_info.empty? and not v2_info.empty? + ord_found = v2_info.first <=> v1_info.first + v1_info.shift + v2_info.shift + end + + if ord_found.zero? + v2_info.size <=> v1_info.size + else + ord_found + end + end +end + +vers = [ + "0.1.0", "3.2.1", "2.2.3", + "3.2", "5.0", "5.0.1", + "0.1.1", "0.1", "4.2.0", + "17.9.2", "4.20", "18.7.3" +] + +p vers, sort_ver(vers)