14-10 空を飛べたなら

解説動画

解答コード

let head = [[[0]]];

function inspectStracture1410() {
    head=[];
    for (let k = 0; k < 6; k++) {
        let headLine01 = [];
        for (let x = 0; x < 4; x++) {
            let headLine02 = [];
            for (let y = 0; y < 3; y++) {
                const blockType = agent.inspect(AgentInspection.Block, DOWN);
                headLine02.push(blockType); // ブロックタイプをpatternLine02に追加
                agent.move(RIGHT, 1);
            }
            headLine01.push(headLine02);
            agent.move(LEFT, 3);
            if (x != 3) agent.move(FORWARD, 1);
        }
        head.push(headLine01);
        agent.move(BACK, 3);
        if (k < 2) {
            agent.move(RIGHT, 5);
        }
        if (k == 2) {
            agent.turn(RIGHT_TURN);
            agent.turn(RIGHT_TURN);
            agent.move(FORWARD, 10);
            agent.move(RIGHT, 8);
        }
        if (k > 2 && k < 5) {
            agent.move(LEFT, 5);
        }
    }
}

function cloneStracture1410() {
    head.forEach(function (element) {
        element.forEach(function (block) {
            block.forEach(function (item) {
                if (item !== AIR) {  // ブロックが空気でないかチェック
                    agent.setItem(item, 1, 1);
                    agent.place(DOWN);
                }
                agent.move(LEFT, 1);
            });
            agent.move(RIGHT, block.length);
            agent.move(FORWARD, 1);
        });
        agent.move(BACK, element.length);
        agent.move(UP, 1);
    });
}

player.onChat("14-10", function () {
    agent.move(UP, 1);
    agent.move(FORWARD, 1);

    inspectStracture1410();

    agent.move(BACK, 4);
    agent.turn(LEFT_TURN);
    agent.move(FORWARD, 10);
    agent.move(UP, 13);
    agent.move(FORWARD, 2);
    cloneStracture1410();
});