gpt4 book ai didi

ruby - 生成长度在给定范围内的数组的所有可能组合

转载 作者:数据小太阳 更新时间:2023-10-29 06:29:22 25 4
gpt4 key购买 nike

如何生成长度在给定范围内的数组元素的所有可能组合?例如:

('a'..'f').to_a.all_possibilities(3, 5)

应该产生一个像这样的数组:

['abc', 'abd', 'abe', 'abf', ..., 'abcde', 'abcdf', 'abcda', ...]

包括从 "abc"(三个字符)到 ('a'..'f').to_a 的最后可能组合,长度为五个字符。我不知道该怎么做。有帮助吗?

最佳答案

Array#combination是标准库:

[1] pry(main)> a = ('a'..'f').to_a
=> ["a", "b", "c", "d", "e", "f"]
[2] pry(main)> a.combination(3).to_a
=> [["a", "b", "c"],
["a", "b", "d"],
["a", "b", "e"],
["a", "b", "f"],
["a", "c", "d"],
["a", "c", "e"],
["a", "c", "f"],
["a", "d", "e"],
["a", "d", "f"],
["a", "e", "f"],
["b", "c", "d"],
["b", "c", "e"],
["b", "c", "f"],
["b", "d", "e"],
["b", "d", "f"],
["b", "e", "f"],
["c", "d", "e"],
["c", "d", "f"],
["c", "e", "f"],
["d", "e", "f"]]

如果您想要最小到最大尺寸的所有组合:

(min..max).flat_map{|size| a.combination(size).to_a }

如果要将它们转换为字符串,只需将 .to_a 替换为 .map(&:join)

关于ruby - 生成长度在给定范围内的数组的所有可能组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14431582/

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