gpt4 book ai didi

arrays - 为什么我的 Ruby `for` 循环的效果没有持续存在?

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

我正在尝试将一个数字的各个数字的所有唯一组合放入一个数组中。我传入一个整数,然后使用置换方法。但要这样做,我相信我需要将数字参数转换为字符串。但是,当我遍历数组时,它并没有连接字符串,因此我可以将其转换为整数。我还意识到我应该使用 each 来执行循环而不是 for 但不确定如何在 block 中执行此操作。

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 测试数组中的一项时,我得到一个整数作为输出。但出于某种原因,我的循环将这些保留为字符串。

最佳答案

在您的示例尝试中,您未能修改数组的内容。我已经用对 Array#map 的调用替换了您的 for 循环,它有一个新数组的返回值,其中按顺序包含每次迭代的结果。这是您想要的方法的详细版本(为了清楚起见)。

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

关于arrays - 为什么我的 Ruby `for` 循环的效果没有持续存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34168277/

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