首页 > 解决方案 > Ruby 将整数拆分为整数数组

问题描述

假设我有一个大整数293649214912 ,我想得到下一个结果:

[2936, 9364, 3649, 6492, 4921, 9214, 2149, 1491, 4912]

标签: ruby-on-railsruby

解决方案


这可以很容易地使用Integer#digits和一些基本的迭代方法来完成Enumerable

def split_integer_into_sliding_groups_of_4_digits(n)
  n.
    digits.
    each_cons(4).
    map do |arr|
      arr.each_with_index.reduce(0) {|acc, (d, i)| acc + d * 10 ** i }
    end
end

作为替代方案,它也可以通过字符串操作来完成:

def split_integer_into_sliding_groups_of_4_digits(n)
  n.to_s.each_char.each_cons(4).map(&:join).map(&:to_i)
end

或两者的混合:

def split_integer_into_sliding_groups_of_4_digits(n)
  n.digits.reverse.each_cons(4).map(&:join).map(&:to_i)
end

推荐阅读