SOURCE

console 命令行工具 X clear

                    
>
console
const house = [1, 2, 3, 4];
const map = [[0, 0, 0, 0, 0, 0, 0],
             [0, 0, 0, 0, 0, 0, 0],
             [0, 0, 0, 0, 0, 0, 0],
             [0, 0, 0, 0, 0, 0, 0],
             [0, 0, 0, 0, 0, 0, 0],
             [0, 0, 0, 0, 0, 0, 0],
             [0, 0, 0, 0, 0, 0, 0]];
const N = 5;

let count = 0;

let total = 0;

const check = function (num, x, y) {
    if (map[x][y] >= num) return false;

    const dirs = [[-1, -1], [1, -1], [1, 1], [-1, 1]];
    switch (num) {
        case 1:
            return true;
        case 2:
            return dirs.some(dir => map[x + dir[0]][y + dir[1]] === 1);
        case 3:
            return dirs.some(dir => map[x + dir[0]][y + dir[1]] === 1) &&
                   dirs.some(dir => map[x + dir[0]][y + dir[1]] === 2)
        case 4:
            return dirs.some(dir => map[x + dir[0]][y + dir[1]] === 1) &&
                   dirs.some(dir => map[x + dir[0]][y + dir[1]] === 2) &&
                   dirs.some(dir => map[x + dir[0]][y + dir[1]] === 3)
    }
}

const run = function () {
    let i = 1;
    while (true) {
        if (i <= 0) return;

        let x = (i - 1) % 5 + 1, y = Math.ceil(i / 5);
        let flag = false;

        for (let j = 0; j < house.length; j++) {
            let h = house[j];
            console.log(h, x, y, check(h, x, y))
            if (check(h, x, y)) {
                map[x][y] = h;
                flag = true;
                break;
            }
        }

        if (!flag) {
            map[x][y] = 0;
            i--;
            continue;
        }

        if (i >= N * N) {
            calc();
            map[x][y] = 0;
            i--;
            // continue;
            break;
        }

        i++;
    }
}

const calc = function () {
    let num = 0;
    for (let x = 1; x <= N; x++) {
        for (let y = 1; y < N; y++) {
            num += map[x][y];
        }
    }

    if (num > total) {
        total = num;
        console.log(`new total(${count++}): ${total}`);
    }
}
<button onclick="run()" style="width: 100px; height: 40px;"></button>