每日一练---codewars5

蛇形 emmm 就当是贪吃蛇吧
看到的时候想到了贪吃蛇 沿边边开始吃
难度:4kyu

1、思路  贪吃蛇吃一个 那就少一个    从左上到右上  从右上到右下  
2、吃完边上一圈的时候  我把整个数组翻转  然后再把数组内的元素(数组) 翻转  再继续吃  从左上到右上  从右上到右下
var snail = function (array) {
    // 最后的结果数组
    var result = [];
    // while 循环,当 array 长度为0,说明被吃完了
    while (array.length) {
        // 直接拿第一排  因为一开始肯定吃第一横排
        result.push(...array.shift())
        // 吃完第一排之后
        // [4, 5, 6],
        // [7, 8, 9]

        // 然后吃第二横排的最后一个
        // 依次往下吃下一横排的最后一个
        for (var i = 0; i < array.length; i++) {
            result.push(array[i].pop())
        };
        // 这是吃完最右边边上的 都吃完了  这时候整个数组瘦了边上一圈 从左上到右上  从右上到右下
        // [4, 5],
        // [7, 8]

        // 然后反转整个数组 ,数组内的数组也翻转
        array.reverse();
        for (var i = 0; i < array.length; i++) {
            array[i].reverse();
        };
        // [8, 7],
        // [5, 4]

        // 然后继续开始吃, while 循环
    }
    return result
}
// snail([[]])
// []

// snail([[1]])
// [1]

// snail([
//     [1, 2, 3],
//     [4, 5, 6],
//     [7, 8, 9]
// ])
// [1, 2, 3, 6, 9, 8, 7, 4, 5]

// snail([
//     [ 1,  2,  3,  4,  5],
//     [ 6,  7,  8,  9, 10],
//     [11, 12, 13, 14, 15],
//     [16, 17, 18, 19, 20],
//     [21, 22, 23, 24, 25]
// ])
// // [1, 2, 3, 4, 5, 10, 15, 20, 25, 24, 23, 22, 21, 16, 11, 6, 7, 8, 9, 14, 19, 18, 17, 12, 13]

// snail([
//     [ 1,  2,  3,  4,  5, 6],
//     [20, 21, 22, 23, 24, 7],
//     [19, 32, 33, 34, 25, 8],
//     [18, 31, 36, 35, 26, 9],
//     [17, 30, 29, 28, 27, 10],
//     [16, 15, 14, 13, 12, 11]])
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]

各位看官,留下你的小心心,好嘛

你可能感兴趣的:(每日一练---codewars5)