zoukankan      html  css  js  c++  java
  • 矩阵打印

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

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

    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!
  • 相关阅读:
    云架构师进阶攻略(1)
    针对云主机卡死问题的定位分析方法
    让App飞久一点
    OC静态代码检查实战
    PAT 1010. 一元多项式求导
    PAT 1009. 说反话
    PAT 1008 数组元素循环右移问题
    PAT 1007. 素数对猜想
    PAT 1006 换个格式输出整数
    PAT 1005 继续(3n+1)猜想
  • 原文地址:https://www.cnblogs.com/mininice/p/3876306.html
Copyright © 2011-2022 走看看