Комбинации с различной длиной и без повторения

Может ли кто-нибудь предложить простой способ получить все комбинации без повторений и с переменной длиной?

[0,1,2,3,4]

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

(3's): [0,1,2], [0,1,3]... [2,3,4]

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

Ответ 1

взял меня, но я думаю, что у меня есть это здесь...

у этого есть все комбинации без повторений

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);
        }
    }
}