我试图把一个数字的各个数字的所有唯一组合放入一个数组中我传入一个整数,然后使用置换方法。但要做到这一点,我相信我需要把数字参数转换成一个字符串。但是,当我遍历数组时,它不会连接字符串,这样我就可以转换为整数我也意识到我应该使用each
来做循环,而不是for
,但不知道如何在块中做这件事。
def number_shuffle(number)
combo = []
combo = number.to_s.split("").permutation.to_a
for i in combo
i.join.to_i
end
return combo
end
我的线圈有问题吗当我使用
combo[0].join.to_i
测试数组中的一个项时,我得到一个整数作为输出但出于某种原因,我的循环将这些作为字符串留下。 最佳答案
在您的示例尝试中,未能修改数组的内容。我已经用对for
的调用替换了您的Array#map
循环,该调用有一个新数组的返回值,该数组按顺序包含每个迭代的结果。这里是您想要的方法的详细版本(为了清楚起见)。
def number_shuffle(number)
permutations = number.to_s.split('').permutation
numbers = permutations.map do |digits|
digits.join.to_i
end
return numbers
end
number_shuffle 123 # => [123, 132, 213, 231, 312, 321]
如果您喜欢一行(根据下面的@timbetimbe,将
split
替换为chars
):def number_shuffle(n)
n.to_s.chars.permutation.map {|x| x.join.to_i }
end