You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby实现数组任意长度元素全排列的方法咨询

解决方案

你需要生成数组中所有长度1到原数组长度的元素排列,再将每个排列转为数字。直接调用permutation时如果不传参数,默认生成和原数组长度相同的排列,所以只得到了6个结果。

用Ruby可以这样简洁实现:

arr = [3, 4, 8]
result = (1..arr.size).flat_map do |len|
  arr.permutation(len).map { |p| p.join.to_i }
end

p result
# 输出:[3, 4, 8, 34, 38, 48, 43, 83, 84, 348, 384, 843, 438, 483, 834]

说明

  • (1..arr.size):遍历从1到数组长度的所有目标排列长度
  • flat_map:把每个长度对应的排列结果数组直接合并成一个大数组,避免嵌套结构
  • permutation(len):生成当前长度下的所有元素排列
  • join.to_i:将排列数组(比如[3,4])拼接成字符串再转为数字(34)

这个方式不需要先生成子集,直接按长度生成对应排列并转换,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Vessel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 16:03:13