// 杀手数独计算器
//
// 规则
// 1. 杀手框内的数字不能重复
// 2. 杀手框内的数字之和等于杀手框的和

/**
 * 计算杀手框 中可能的组合
 * @param sum 总和
 * @param itemNum 元素数量
 */
function cal(sum, itemNum){
    let result = [];
    let arr = [];
    let temp = [];
    for(let i = 1; i <= 9; i++){
        arr.push(i);
    }
    // console.log(arr);
    function dfs(arr, temp, sum, itemNum){
        if(temp.length === itemNum){
            if(temp.reduce((a, b) => a + b, 0) === sum){
                result.push(temp.slice());
            }
            return;
        }
        for(let i = 0; i < arr.length; i++){
            temp.push(arr[i]);
            dfs(arr.slice(i + 1), temp, sum, itemNum);
            temp.pop();
        }
    }
    dfs(arr, temp, sum, itemNum);
    return result;
}

console.log(cal(6, 3));// 1, 2, 3
console.log(cal(7, 2));//1,6 | 2,5 | 3,4
console.log(cal(8, 2));// 1,7 | 2,6 | 3,5

console.log(cal(12, 2));// 3, 9  | 4, 8  | 5, 7

console.log(cal(13, 2));//4,9 | 5,8 | 6,7
console.log(cal(16, 4));
console.log(cal(24, 3));// 7,8,9
console.log(cal(24, 4))//1689,25892679