This page is READ-ONLY. It is generated from the old site.
All timestamps are relative to 2013 (when this page is generated).
If you are looking for TeX support, please go to VietTUG.org

so sánh hai phiên bản

không dễ tí nào
Added by over 2 years ago  »  Votes: 2/2

Không biết có thư viện nào cho việc này không. Thôi đành viết cái hàm đơn giản sau. Hàm sẽ trả về true nếu phiên bản thứ nhất bằng hoặc mới hơn phiên bản thứ hai. Ví dụ,

1  __v1_ge_v2 1.2.0-1 1.1.9-9

sẽ trả về true. Ta bỏ qua việc kiểm tra sự hợp lệ của phiên bản, mà giả định rằng hai phiên bản đều có dạng a.b.c.x hoặc a.b.c-x. Về cách kiểm tra thì hai dòng cuối cùng của định nghĩa hàm gần như là một mẹo :)

 1   # Return true if v1 >= v2
 2   def __v1_ge_v2(v1,v2)
 3     av1 = v1.split(/[\.\-]/).map(&:to_i)
 4     av2 = v2.split(/[\.\-]/).map(&:to_i)
 5     ret = av1.size.times.map {|i| av1[i] > av2[i] ? 2 : (av1[i] == av2[i] ? 1 : 0)}.join()
 6     ii = ret.index("2")
 7     zero = ret.index("0")
 8     zero.nil? or (ii && ii < zero)
 9   end

Comments