实现一种红宝石方法,以查找具有相同数字的下一个最大数字。例如:38276将返回38627。
它不会是最快的,但要做!
number = 38276
options = number.to_s.chars.permutation.map{|s| s.join.to_i}.uniq.sort
options[options.index(number) + 1] #=> 38627
获得具有相同数字的下一个数字的另一种方法:
def next_number_with_same_digits(number)
number.to_s.chars.permutation.map { |e| e.join.to_i }.select { |n| n > number }.min
end
如果您想获得具有相同数字的最后一个数字:
def last_number_with_same_digits(number)
number.to_s.chars.permutation.map { |e| e.join.to_i }.select { |n| n < number }.max
end