Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将整数拆分为数组_Ruby On Rails_Arrays_Ruby_Split_Integer - Fatal编程技术网

Ruby on rails 将整数拆分为数组

Ruby on rails 将整数拆分为数组,ruby-on-rails,arrays,ruby,split,integer,Ruby On Rails,Arrays,Ruby,Split,Integer,我需要将整数拆分成一个数组 比如说, 整数变量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

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

比如说,

整数变量
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方法,也知道如何根据字符串中可用的字符将字符串拆分为数组。但是我不知道如何使用split方法根据计数将整数拆分成数组

谁能告诉我怎么做

提前谢谢

你可以试试这个

a = 48
array = []

(1..a/10).each{|x| array.push(x*10)}
a%10 != 0 ? array.push(a) : array

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

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

$a = 48
$num = 10
array = Array.new

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

数组从
a=48开始,然后尝试:

(10..a).step(10).to_a.push(a) #=> [10, 20, 30, 40, 48] 
在转换为数组并最终附加
a
值之前,使用将范围递增十步。或者,你也可以写:

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

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

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

p arr
# => [10, 20, 30, 40, 48]
a=48
arr=((1..a/10).map(&->(x){x*10})[10,20,30,40,48]
对于范围
(1..a/10)
(在本例中为
1..4
)中的所有元素,map方法调用lambda函数。此lambda有一个参数并返回
x*10
(对于第一个元素
1*10#=>10
),并将所有结果添加到数组中


我希望这能有所帮助。

我的问题得到了更新。我尝试过像循环这样的概念。但是如果我有一个bignum integer类值,那么像这样的循环需要太多的时间。是否有任何内置方法或任何其他方法来减少拆分时间。你需要的是一个非常特殊的操作。很难想象很多人会这样做我需要这样的东西,这就是为什么没有Ruby core方法来做到这一点的原因此问题是因为不清楚需要什么,并且在发布答案后问题已更改。@CarySwoveland我需要删除此问题并重新发布该问题。如何删除该问题?如果有多个答案(您尝试删除时有多个答案)或有一个经过投票的答案,则无法删除(您尝试删除时没有,但现在有一个)。有关更多信息,请参阅。您的代码与PHP一样工作,但在ruby中,我们不会以这种方式使用
全局
变量。是的,这是一个错误,我说我不熟悉ruby,从未尝试过。感谢您的澄清。与所有其他答案相比,它以最短的时间执行bignum。谢谢您的回答。