我试图把一个数字的各个数字的所有唯一组合放入一个数组中我传入一个整数,然后使用置换方法。但要做到这一点,我相信我需要把数字参数转换成一个字符串。但是,当我遍历数组时,它不会连接字符串,这样我就可以转换为整数我也意识到我应该使用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

09-11 17:56