Flash 长度可变且不重复的组合

Flash 长度可变且不重复的组合,flash,actionscript-3,combinations,Flash,Actionscript 3,Combinations,有谁能建议一种简单的方法,不重复地获得所有长度不同的组合 [0,1,2,3,4] (二) [0,1],[0,2],[0,3] ... [3,4] (三) [0,1,2],[0,1,3] ... [2,3,4] (四) [0,1,2,3],[0,1,2,4] ... [1,2,3,4]花了我一段时间,但我想我已经找到了 这是所有没有重复的组合 var arr:Array = [0, 1, 2, 3, 4]; var $allcombos:Array = []; findCombos($allcom

有谁能建议一种简单的方法,不重复地获得所有长度不同的组合

[0,1,2,3,4]

(二) [0,1],[0,2],[0,3] ... [3,4]

(三) [0,1,2],[0,1,3] ... [2,3,4]

(四)
[0,1,2,3],[0,1,2,4] ... [1,2,3,4]

花了我一段时间,但我想我已经找到了

这是所有没有重复的组合

var arr:Array = [0, 1, 2, 3, 4];
var $allcombos:Array = [];
findCombos($allcombos,[],arr);

function findCombos($root:Array, $base:Array, $rem:Array):void {
    for (var i:int = 0; i < $rem.length; i++) {
        var a:Array = $base.concat();
        a.push($rem[i]);
        findCombos($root, a, $rem.slice(i + 1));
        if (a.length > 1) {
            $root.push(a);
        }
    }
}
var-arr:Array=[0,1,2,3,4];
var$allcombos:Array=[];
findCombos($allcombos,[],arr);
函数findCombos($root:Array,$base:Array,$rem:Array):void{
对于(变量i:int=0;i<$rem.length;i++){
var a:Array=$base.concat();
a、 推送($rem[i]);
findCombos($root,a,$rem.slice(i+1));
如果(a.长度>1){
$root.push(a);
}
}
}

听起来与我刚找到的解决问题的函数/例程非常相似,问题也很相似,看起来Adam Hughes的解决方案非常相似。为了解决这个问题,
if(a.length>1)
应该更改为==3(或任何所需的长度)。