• 矩阵打印


    在群里看到一道题目, 按一定的方式打印矩阵中相应位置的值

    看到题目直接写的代码草稿:

    function getNum(n, type, arr) {
        var exp = ["i", "i * (n-1) +1", "(n-1)*n+i", "n*(n-i-1) + (n-i)"];
    
        var temp = [];
        for(var i = 1; i<=n; i++) {
            if(type === 1){
                arr.push(eval(exp[type]));
            }
            if(type === 0 && i !== n) {
                arr.push(eval(exp[type]));
            }
            if(type === 2 && i !== 1) {
                arr.push(eval(exp[type]));
            }
            if(type === 3 && i !== n) {
                arr.push(eval(exp[type]));
            }
    
        }
    
    }
    (function(n) {
        var arr = [];
        for(var i = 0; i < 4; i++) {
            getNum(n, i, arr);
        }
        console.log(arr.join(','));
    })(5);

    代码解耦:

    function getNum(n, type) {
        var exp = ["i", "i * (n-1) +1", "(n-1)*n+i", "n*(n-i-1) + (n-i)"];
    
        var temp = [];
        for(var i = 1; i<=n; i++) {
            if(type === 1){
                temp.push(eval(exp[type]));
            }
            if(type === 0 && i !== n) {
                temp.push(eval(exp[type]));
            }
            if(type === 2 && i !== 1) {
                temp.push(eval(exp[type]));
            }
            if(type === 3 && i !== n) {
                temp.push(eval(exp[type]));
            }
    
        }
        return temp;
    }
    (function(n) {
        var arr = [];
        var temp = null;
        for(var i = 0; i < 4; i++) {
            temp = getNum(n, i);
            arr = arr.concat(temp);
        }
    
        console.log(arr.join(','));
    })(5);
     
    代码最终优化后:
    function getNum(n, type) {
        var exp = ["i", "i * (n-1) +1", "(n-1)*n+i", "n*(n-i-1) + (n-i)"];
    
        var temp = [];
        for(var i = 1; i<=n; i++) {
            if(type === 1 || ((type === 0 || type === 3) && i !== n) ||
            (type === 2 && i !== 0)) {
                temp.push(eval(exp[type]));
            }
        }
        return temp;
    }
    (function(n) {
        var arr = [];
        for(var i = 0; i < 4; i++) {
            arr = arr.concat(getNum(n, i));
        }
        console.log(arr.join(','));
    })(5);
     
    当然目前这个code只能满足从1开始递增的数据, 当然如果是随意的矩阵, 只需要将n维矩阵转换为一维数组,同时结果作为数组下标即可得到输出;
     
     
    end!
  • 相关阅读:
    python高级 之(三) --- 高阶函数
    python高级 之(二) --- 类装饰器
    python高级 之(一) --- 函数类型
    jQuery
    css
    html
    px2rem
    keep-alive标签
    rem适配方案2(flexible.js)
    媒体查询
  • 原文地址:https://www.cnblogs.com/mininice/p/3876306.html
Copyright © 2020-2023  润新知