【问题标题】:Splitting an interger into an array将整数拆分为数组
【发布时间】:2016-11-28 07:54:39
【问题描述】:

我需要将整数拆分成一个数组。

例如,

整数变量a 等于48

a = 48

我需要根据 10 的计数将 48 拆分成一个数组。

我需要得到如下数组,

arr = [ 10, 20, 30, 40, 48]

编辑:-

我尝试了以下代码,它工作正常。

max = 48
arr = []
j = 0
for i in 1..max
  if i % 10 == 0
    arr[j] = i
    j = j + 1
  end
end

if max % 10 != 0
  arr[j] = max
end

p arr
# => [10, 20, 30, 40, 48]

但如果我有一个 bignum 整数,则需要更多时间。是否有任何内置方法,例如字符串拆分。

我知道拆分方法,也知道如何根据字符串中可用的字符将字符串拆分为一个数组。但是我不知道如何使用split方法根据计数将整数拆分为数组。

谁能解释一下怎么做?

提前致谢!

【问题讨论】:

  • 我投票结束(并否决)这个问题,因为不清楚想要什么,并且在发布答案后问题发生了变化。
  • @CarySwoveland 我需要删除这个问题并重新发布这个问题。如何删除问题?
  • 如果有多个答案(当您尝试删除时有)或者如果有一个被赞成的答案(当您尝试删除时没有任何答案,但现在有一个),您将无法删除)。请参阅this 了解更多信息。

标签: ruby-on-rails arrays ruby split integer


【解决方案1】:

a = 48开始,然后尝试:

(10..a).step(10).to_a.push(a) #=> [10, 20, 30, 40, 48] 

使用Range#step 将范围增加十,然后再转换为数组,最后附加a 的值。或者你也可以写:

10.step(a,10).to_a << a #=> [10, 20, 30, 40, 48]

【讨论】:

  • 与所有其他答案相比,它以最短的时间执行 bignum。
【解决方案2】:

在这种情况下,您可以使用maplambda

a = 48
arr = ((1..a/10).map(&->(x){x*10}) << a).uniq

p arr
# => [10, 20, 30, 40, 48]

对于 Range (1..a/10)(本例为 1..4)中的所有元素,map 方法调用 lambda 函数。此 lambda 有一个参数并返回 x*10(对于第一个元素 1*10 # =&gt; 10)并将所有结果添加到数组中。

我希望这会有所帮助。

【讨论】:

    【解决方案3】:

    你可以试试这个

    a = 48
    array = []
    
    (1..a/10).each{|x| array.push(x*10)}
    a%10 != 0 ? array.push(a) : array
    
    #=> [10, 20, 30, 40, 48]
    

    【讨论】:

    • 我更新了我的问题。我尝试过像循环这样的概念。但是如果我有一个 bignum 整数类值,那么像这样的循环需要太多时间。有没有什么内置的方法或者其他方法可以减少分割的时间。
    • 你需要的是一个非常特殊的操作。很难想象很多人会需要这样的东西,这就是为什么没有 Ruby 核心方法可以做到这一点的原因。
    【解决方案4】:

    我建议这个解决方案随意更改一些代码错误,因为我不熟悉 ruby​​:

    $a = 48
    $num = 10
    array = Array.new
    
    while $num < $a do
       array << $num
       $num +=10
    end
    array << $a
    

    【讨论】:

    • 您的代码可以正常工作,就像 PHP 一样,但在 ruby​​ 中,我们不会以这种方式使用 global 变量。
    • 是的,这是一个错误,我说我不熟悉 ruby​​ 从未尝试过。谢谢你的澄清。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    • 2016-12-19
    相关资源
    最近更新 更多