Handle the case when two split arrays have different size in

`compare_alphanumerically`
This commit is contained in:
Alex Ling 2020-03-12 23:51:09 +00:00
parent 50ce0e2b54
commit c4ffb5cd59

View File

@ -47,16 +47,21 @@ end
def compare_alphanumerically(c, d)
is_c_bigger = c.size <=> d.size
begin
c.zip(d) do |a, b|
if is_numeric(a) && is_numeric(b)
compare = a.to_i <=> b.to_i
return compare if compare != 0
else
compare = a <=> b
return compare if compare != 0
end
end
is_c_bigger
if c.size > d.size
d += [nil] * (c.size - d.size)
elsif c.size < d.size
c += [nil] * (d.size - c.size)
end
c.zip(d) do |a, b|
return -1 if a.nil?
return 1 if b.nil?
if is_numeric(a) && is_numeric(b)
compare = a.to_i <=> b.to_i
return compare if compare != 0
else
compare = a <=> b
return compare if compare != 0
end
end
is_c_bigger
end