如何打印交替的锯齿状数字图案

how to print an alternating zigzag-ish number pattern

本文关键字:锯齿状 数字 何打印 打印      更新时间:2023-09-26

我已经尝试了一个小时的伪代码,并尝试了多种方法,但我根本无法理解。当用户输入一个数字,比如10时,我该如何打印这个形状?

   1
2     3
   4  
5     6 
   7     
8     9
   10

使用真正类型的字体可能会更好,但以下是模式。。。

var theDiv = document.getElementById('theDiv');
var oneNotTwo = true;
theDiv.innerHTML = '';
for (var i = 1; i <= 10; i++) {
  if (oneNotTwo) {
    theDiv.innerHTML += '&nbsp;&nbsp;' + i + '&nbsp;&nbsp;<br/>';
  } else {
    theDiv.innerHTML += i + '&nbsp;&nbsp;&nbsp;' + (i + 1) + '<br/>';
    i++;
  }
  oneNotTwo = !oneNotTwo;
}
<div id="theDiv"></div>

类似的东西可能会起作用:

<script>
    var num = 10; 
    var flag = 0; 
    for(var i = 1; i<=num; i++)
    {
        if(flag == 0)
        {
            document.write("&nbsp;" + i + "&nbsp;<br>"); 
            flag = 1; 
        }
        else 
        {
            document.write(i + "&nbsp;" + ++i + "<br>");        
            flag = 0; 
        }
    }
</script>

该标志用于确定是在当前行上打印一个还是两个数字。不过,当打印两个数字时,你必须确保不要超过限制。我没有包括那张支票。

var str="";
var one=true;
for(var i=1;i<=10;i=i+1){
  if(one){
    str +="&emsp;"+i+"&emsp;"+"<br>";
  
    }else{
      str +=i+"&emsp;&emsp;"+(i+1)+"<br>";
        i=i+1;//extra increment when two numbers are added
      }
  one=!one;
  }
document.getElementById("data").innerHTML=str;
<div id="data"></div>

简单版本:

var num     = 10;
var zigzag  = [];
var odd     = true; // odd row, even row
for (var i = 1; i <= num; i++) {
    if (odd) {
        zigzag.push(i);
    } else {
        zigzag.push([i, i+1]);
        i++;
    }
    odd = !odd;
}
/* loop through the zigzag array and print it however you like
zigzag = [
    [1],
    [2, 3],
    [4],
    [5, 6],
    [7],
    [8, 9],
    [10],
];
*/

因为我喜欢你的问题,因为它很有挑战性,所以我更进一步。您可以设置列的最小值和最大值:

var num     = 25;
var zigzag  = [];
var odd     = true;
var min     = 3;
var max     = 5;
for (var i = 1; i <= num; i++) {
    if (odd) {
        var row = [];
        for (var j = 0; j < min; j++) {
            var val = i + j;
            if (val <= num) {
                row.push(val);
            }
        }
        if (row.length > 0) {
            zigzag.push(row);
        }
        i += min - 1;
    } else {
        var row = [];
        for (var j = 0; j < max; j++) {
            var val = i + j;
            if (val <= num) {
                row.push(val);
            }
        }
        if (row.length > 0) {
            zigzag.push(row);
        }
        i += max - 1;
    }
    odd = !odd;
}
/*
zigzag = [
    [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]
]
*/

如果还有一个剩余的数字,比如上面例子中的25,就会有一个新行