根据用户输入的数字,打印出菱形图案

  这原是同创蓝宇的一道js机试题,同事的同学想去同创蓝宇面试,让我帮忙看看他们面试题的难度等级,刚看到这道题时以为是考智力,给出一个数让在纸上画方块和三角,原谅我从业这么多年从来没做过什么面试题。。。

  demo演示地址:https://521lbx.github.io/simExample/diamondCV.html

  原题如下:

  输入整数(3-16),输出满足条件的图形:

    例如:输入3输出如下图形

    □□▲□□

    □▲□▲□

    ▲□□□▲

    □▲□▲□

    □□▲□□

    输入4输出如下图形:

    □□□▲□□□

    □□▲□▲□□

    □▲□□□▲□

    ▲□□□□□▲

    □▲□□□▲□

    □□▲□▲□□

    □□□▲□□□

    输入5输出如下图形

    □□□□▲□□□□

    □□□▲□▲□□□

    □□▲□□□▲□□

    □▲□□□□□▲□

    ▲□□□□□□□▲

    □▲□□□□□▲□

    □□▲□□□▲□□

    □□□▲□▲□□□

    □□□□▲□□□□

  知道是让写个页面实现功能,一切都变得那么简单了!

  首先,实心三角输出的是个菱形,那就对称;以输入4为例,先看前4行(前四行的倒序排列就是后四行);实心三角在每行所处的位置依次是(4),(3,5),(2,6),(1,7);行号依次是0,1,2,3;所以实心三角所处位置为:输入数值减行数或输入数值加行数;
总行数 = 每行的位数=(4-1)*2+1=(输入数值-1)*2+1;
ok,分析完毕,可以写代码了:

  

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <input type="text"  id="userinput" placeholder="请输入" />
        <button οnclick="cal()" style="width:100px;height:30px;">确定</button>
        <div id="showData" style="width:500px;height:500px;"></div>
        <script>
            function cal(a){
                a = parseInt(document.getElementById("userinput").value)||a;
                var x = '□';
                var y = '▲';
                var t_arr = [];
                var tlen = (a-1)*2+1;
                var reduce = a;
                var t_arr = []
                for(var i=0;i<a;i++){
                    var str1 = '';
                    for(var j=1;j<tlen+1;j++){
                        if(j == a-i||j == a+i){
                            str1 += '▲';
                        }else{
                            str1 += '□';
                        }
                    }
                    t_arr.push(str1);
                }
                var t_arr2 = JSON.parse(JSON.stringify(t_arr)).reverse();
                t_arr2.shift();
                var t_arr3 = t_arr.concat(t_arr2);
                var divhtml = "";
                t_arr3.forEach(cols=>{
                    console.log(cols)
                    divhtml = divhtml + cols +'<br/>' ;
                })
                document.getElementById("showData").innerHTML = divhtml;
            }
            //cal(4);
        </script>
    </body>
</html>

 

转载于:https://www.cnblogs.com/growupup/p/9875975.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值