gpt4 book ai didi

arrays - 在 Ruby 中从整数除法生成数组的正确方法

转载 作者:太空宇宙 更新时间:2023-11-03 17:42:49 25 4
gpt4 key购买 nike

tl;dr 我想从除以 5 个结果的结果中创建一个数组:

20 => [5,5,5,5]
16 => [5,5,5,1]
7 => [5,2]

我目前的实现很简单,但太大了。我怎样才能让它更简单和更短?

  max_count = 5
total_count = input_value

count_array = []
div = total_count / max_count
mod = total_count % max_count
div.times { count_array << max_count }
count_array << mod unless mod == 0

最佳答案

  1. 你不需要total_count .
  2. div.times { count_array << max_count }[max_count] * count_array
  3. 使用 splat,我们可以进一步简化它

max_count = 5

[*[max_count] * (input_value / max_count), input_value % max_count] - [0]

或者,使用 divmod

max_count = 5

n, mod = input_value.divmod(max_count)
[*[max_count] * n, mod] - [0]

最后一行也可以写成:

(Array.new(n) { max_count } << mod) - [0]

或者按照 Stefan 在评论中的建议,使用 Numeric#nonzero? :

Array.new(n, max_count).push(*mod.nonzero?)

关于arrays - 在 Ruby 中从整数除法生成数组的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53437796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com