😇

TypeScriptで組み合わせの関数を自作する

2024/07/17に公開

前提

順列関数と同様に再帰を利用して実装する。
理由は下の記事と同様です。
https://zenn.dev/takahiro0404/articles/dd6c9814fc4904

ソースコード

combination.ts
function combination(elements: number[], depth: number): number[][] {
    let answer: number[][] = [];
    if (depth === 1) {
        for (let i = 0; i < elements.length; i++) {
            answer[i] = [elements[i]];
        }
    } else {
        let part = elements.slice(0);
        for (let i = 0; i < elements.length; i++) {
            let firstEl = part.splice(0, 1);
            let row = combination(part, depth - 1);
            for (let i = 0; i < row.length; i++) {
                answer.push([firstEl[0]].concat(row[i]));
            }
        }
    }
    return answer;
}

Discussion