ruby-on-rails - Ruby 将整数拆分为整数数组
问题描述
假设我有一个大整数293649214912
,我想得到下一个结果:
[2936, 9364, 3649, 6492, 4921, 9214, 2149, 1491, 4912]
解决方案
这可以很容易地使用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
推荐阅读
- c# - 我怎样才能制作像0000-0000这样的电话号码格式
- elasticsearch - ElasticSearch starts with query for autocomplete feature
- ffmpeg - 快速剪辑长视频片段
- php - 如何处理具有 3 个段的 url 路由?
- php - 使用 Jquery 响应多个 Keypress
- java - 使用递归方法在java中返回一个中序字符串?
- javascript - 更新 Flash 内容 src 标签以换出动画
- css - React Fontawesome CSS 伪元素不在 div 内呈现,但在 Codepen 中工作
- python - 如何在python中加入或合并
- python - 有更好的方法来编写列表理解吗?