gpt4 book ai didi

ruby - 生成数字数字的所有排列

转载 作者:数据小太阳 更新时间:2023-10-29 07:52:53 24 4
gpt4 key购买 nike

我最近解决了一个问题,它需要一个 3-4 位数字,例如 1234(以及一些更大的数字),并返回所有可能的 permutations 的排序数组。数字 [1234、1432、4213、2431、3412、3214 等]

我不喜欢我的解决方案,因为它使用 .times 将数字添加到数组中,因此仍然容易出错,而且很难看。有没有一种方法可以将数字添加到数组中的完美次数,以便一旦达到所有可能的数字混洗,程序就会停止并返回数组?

def number_shuffle(number)
array = []
number = number.to_s.split(//)
1000.times{ array << number.shuffle.join.to_i}
array.uniq.sort
end

最佳答案

使用 Array#permutation 执行以下操作:

>> a = 1234.to_s.chars
=> ["1", "2", "3", "4"]
>> a.permutation(4).to_a
=> [["1", "2", "3", "4"],
["1", "2", "4", "3"],
["1", "3", "2", "4"],
["1", "3", "4", "2"],
["1", "4", "2", "3"],
["1", "4", "3", "2"],
["2", "1", "3", "4"],
["2", "1", "4", "3"],...]

您修改后的方法将是:

def number_shuffle(number,size)
number.to_s.chars.permutation(size).to_a
end

关于ruby - 生成数字数字的所有排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21539067/

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