簡體   English   中英

如何使用JavaScript顯示金字塔?

[英]How to display pyramid using JavaScript?

這是顯示金字塔的代碼,但它並沒有完全生成所需的 output。

 function generatePyramid() { var totalNumberofRows = 5; var arr = new Array(); for (var i = 1; i <= totalNumberofRows; i++) { for (var j = 1; j <= i; j++) { arr.push(j); console.log(j); } console.log("\n"); } }

所需輸出

試試下面的代碼

 function generatePyramid() { var totalNumberofRows = 5; var output = ''; for (var i = 1; i <= totalNumberofRows; i++) { for (var j = 1; j <= i; j++) { output += j + ' '; } console.log(output); output = ''; } } generatePyramid();

最簡單的解決方案是:-

 function pyramid(n) { for(let i=1; i<= n; i++){ let str = ' '.repeat(ni); let str2 = '*'. repeat(i*2 -1) console.log(str + str2 + str); } } pyramid(5);

這將在控制台中創建一個適當的金字塔:

 function createPyramid(rows) { for (let i = 0; i < rows; i++) { var output = ''; for (let j =0; j < rows - i; j++) output += ' '; for (let k = 0; k <= i; k++) output += '* '; console.log(output); } } createPyramid(5) // pass number as row of pyramid you want.

這可以使用單個 for 循環來完成。

 var num = ""; var size = prompt("Enter the size of the pyramid"); for(var i=1; i<=size; i++) { num = num + i console.log(num); }

您應該在每次行迭代時生成一個數組並在最后輸出它:

function generatePyramid() {
    var totalNumberofRows = 5,
        arr;
    for (var i = 1; i <= totalNumberofRows; i++) {
        arr = [];
        for (var j = 1; j <= i; j++) {
            arr.push(j);            
        }
        console.log(arr.join(" ") + "\n");
    }
}

**您可以為任何模式的循環條件設置框架,給定它可能是三角形、直角三角形、倒三角形等。有關更多信息,請參閱下面的代碼和工作簿圖像。 PS:在步驟 6 的工作簿圖像中,它是 2 + i 而不是 3+i 因此 j >= 4 - i && j <= 2 + i 對於任意數量的行 n 公式是: j >= n+1 - i && j <= n - 1 + i **

編輯:在第 6 步的工作簿圖像中,它是 2+i 而不是 3+i,因此 j >=4 - i && j <=2 +i 表示任何編號。 行數 'n' 公式為 j > = n + 1 - i && j < = n - 1 + i

1, 3, 5, 7, 9 =>奇數系列(星星)以金字塔圖案出現
1, 2, 3, 4, 5 =>計數器(行數)

對於每個計數器存在(2 * n) - 1

    function pyramid(n) {  // Input or number of rows
        for (var i = 1; i <= n; i++) {
            var s = "";
            // For every each counter there exist 2*n-1 value
            for (var j = 1; j <= (2 * n - 1); j++) {
              // Hint: Check the workbook image
                (j >= n + 1 - i && j <= n - 1 + i) ? s += "*" : s += " ";   
            }
            console.log(s);
        }
    }
    pyramid(5);

在此處輸入圖像描述

根據您的要求,以下代碼應該沒問題:

    function generateNumberTriangle(v) {
    for (var i = 1; i <= v; i++) {
        var chars = " ";
        for (var j = 1; j <= v; j++) {
            if (j <= i) { chars += j + "  "; }
        }
        console.log(chars);
    }
}
generateNumberTriangle(7);

一個有趣的小解決方案:)

 //set the value of n here var n = 5; generateNumberTriangle(n); function generateNumberTriangle(n) { var width = (2 * n) -1; // Always the case. var midpoint = Math.floor(width / 2); // Middle of pyramid. let level = ''; // will be reset each level loop for(var i = 0; i < n; i++) { // Looping through levels level = ''; for(var j = 0; j < width; j++) { if(j < midpoint-i || j > midpoint+i) { level += '.'; } else { level += '#'; } } console.log(level); } }

最簡單的解決方案之一是使用.repeat函數

 let count = 1; let x = "# "; for (a = 0; a<=5; a +=1){ console.log(x.repeat(count)); count +=1; }

為什么不是這個?

let printPyramid = (n) => {
    if (n===0) {
        return false;
    } else {
        let arr = [];
        for(let i=0; i<n; i++) {
           arr.push(i);
           console.log(arr.toString());
        }
    }
}

這是一個使用 ES6 語法的簡單解決方案

function generatePyramid(num) {
  let number = '';

  for (let i = 1; i <= num; i++) {
    console.log(number += i);
  }
}
generatePyramid(5);

另外的選擇

一行代碼:

function generatePyramid(n) {
    return [...Array(n)]
        .forEach((_, i) => console.log([...Array(++i)].map((_, j) => ++j).join(' ')));
}
function generatePyramid(num) {
  for (var i = 1; i <= num; i++) {
    var arr = [];
    for (var j = 1; j <= i; j++) {
      arr.push(j);
    }
    console.log(arr);
  }
}
  const pyramid = (n)=>{
  const mid = Math.floor((2*n-1)/2);
  for(let row=0; row<n; ++row)
  {
    //for each row, make empty steps
    let level = ''
    for(let col=0; col<2*n-1; col++)
    {
      if(mid-row <=col && mid+row >= col)
        level+='#';
      else level +=' ';
    }
    console.log(level);
  }
}
pyramid(3);

數字金字塔的簡單代碼

for(var i=1; i<=5; i++){
 var Num='';
 for(var j=0; j<i; j++){
     Num += i;
 }
 print(Num) }

使用 JavaScript 在控制台上繪制金字塔

  1. 使每行具有奇數個填充字符。
  2. 在每行之前添加空格(或“間隔字符”),不包括最后一個.
    去做這個:
    • 使用repeat()確定每行的間隔字符數。 您可以通過傳遞行數 - 1作為參數來做到這一點。

這是我的解決方案

 function drawPyramid(lines, fillChar, spacerChar) { let fillChars = ''; let spacer = spacerChar || ' '; // Default spacer is ' ' let spacerCount = lines; for (let i = 1; i <= lines; i++) { fillChars += fillChar; // Makes lines always have an odd number of fill characters if (i >= 2) fillChars = fillChar + fillChars; console.log(spacer.repeat(spacerCount - 1) + fillChars); spacerCount--; } } drawPyramid(4, '*');

function pyramid() {
    var n = 5;
    var output="";
    for (var i = 0; i <n; i++) {
    var myspace = "";   
    for(let s = 0; s <(n-i-1); s++) {
        myspace += " ";
    }
        for (var j = 1; j <= 2*i + 1; j++) {
            output+="*";

        }
        console.log(myspace+output);
        output="";
    }
}

輸出

            *
VM74:11    ***
VM74:11   *****
VM74:11  *******
VM74:11 ********* 

在這種情況下,我會堅持遞歸方法

 function generatePyramid (n, row = 0, line = '', number = 1) { if(row === n){ return; } if (line.length === n) { console.log(line ) return generatePyramid (n, row + 1) } if (line.length <= row) { line += number; } else { line += ' '; } generatePyramid (n, row, line, number + 1) }

假設您要返回數字而不是其他答案所示的星號,這是該解決方案:

請注意,此解決方案以線性 (O(n)) 時間復雜度運行,並且不會通過將每一行記錄到控制台來犧牲性能,而是一次將整個金字塔記錄下來。

function generatePyramid(n) {
  let pyramid = '';
  let prev;

  for (let i = 1; i <= n; i++) {
    if (prev) {
      pyramid += '\n';
      prev =  prev + ' ' + i;
    } else {
      prev = i;
    }
    pyramid += ' '.repeat(n - i) + prev;
  }

  return pyramid;
}

像這樣登錄到控制台: console.log(generatePyramid(n));

如果您只想按照問題中的圖片所示繪制一個三角形,則此函數將執行此操作(同樣,以線性時間復雜度):

function drawTriangle(n) {
  let triangle = '';
  let prev;
  for (let i = 1; i <= n; i++) {
    if (prev) {
      triangle += '\n';
      prev = prev + ' ' + i;
    } else {
      prev = i;
    }
    triangle += prev;
  }
  return triangle;
}

更短的方式

 function generatePyramid(n) {
        var output="";
        for (var i = 1; i <= n; i++) {
            output += i + " ";
            console.log(output);
        }
    }  

    generatePyramid(5);

如果我們談論的是“金字塔”問題,那么這將是一個合適的解決方案。

 function pyramid(n) { // If (eg) n=3; const columnLength = (n * 2) - 1; // 5 let middle = Math.floor(columnLength / 2) // middle would be 2 for(let row=0; row<n; row++) { // let's create the rows (row = horizontal) let res = ''; // init our output inside of the 1st for loop for(let col=0; col<columnLength; col++) { // creating the columns (column = vertical) // The following formula would yield the result we need: // (n * 2) - 1 => row=2;col=3; row=3;col=5; row=5;col=9 // We got 2 sides, right? // So, before we insert '#' we need to make sure the following logic is met: // Look at: (middle - row) as being the left side and (middle + row) as the right one. // Only if both conditions are met, we want to insert the "#" sign if(middle - row <= col && middle + row >= col ) { res += '#'; } else { // If '#' is NOT inserted then we want to insert something else, right?! // In our case that would be an empty string res += ' '; } } console.log(res); } } pyramid(3);


如果我們想要更加“花哨”,我們可以實現遞歸:

 function recursiveP(n, row=0, res='') { // IMPORTANT: Pass some default values const columnLength = (n * 2) - 1; let middle = Math.floor(columnLength / 2); // This is our EXIT condition, meaning, if have the n number of rows, our work is done!! if(n === row) { return; } // *** Moving on *** // Initially, this will be skipped, and we'll go to the next check and add the appropriate character, // however, after we're finished w/ creating the 1st row we'll hit this check, we'll print the previously generated result, // and call the function again, but this time incrementing the ROW value. This will continue until the 1st check is met if(res.length === columnLength) { console.log(res); return recursiveP(n, row + 1); } // Here we're creating the columns and in each, we're inserting the appropriate char if(middle - row <= res.length && middle + row >= res.length ) { res += '#'; } else { res += ' '; } //Initial [recursive] function call recursiveP(n, row, res); } recursiveP(6);

如果要使用符號或單個數字打印出直角三角形。 您可以使用以下代碼。

let pyramid = '';
for(pyramid.length=0; pyramid.length<=7 ; pyramid+='#'){
  console.log(pyramid);
}

function pyramid(n){ const midpoint = Math.floor((2 * n-1)/2);

for(let row = 0 ; row < n ; row ++){ let level = '';

 for(let column = 0 ; column < 2*n-1 ; column++)
    {
     if(midpoint-row <= column && midpoint + row >= 
        column){
        level += '#';
       }
       else{
           level += ' ';
           }

    }
   console.log(level);
  }

}

金字塔(5);

這么多鼓舞人心的答案; 我喜歡添加我的:)

    let m, o, r, c, pr = (n, x = (n << 1) - 1) => {
        m = (x >> 1) << 0;
        o = '';
        for (r = 0; r < n; r++) {
            for (c = 0; c < x; c++)
                o += (m - r <= c && m + r >= c) ? "#" : " ";
            o += '\n';
        }
        console.log(o);
    }

    pr(5);
    pr(20);
    pr(2);

我的解決方案。

function pyramid(n) {
// generate base of pyramid, aka longest possible string
let limit = n+n-1;

let hashesToPrint = 1; // number of hashes to print
for (let i=0; i<n; i++) {
    
    // get length of spaces we need on each side
    let difference = (limit - hashesToPrint) / 2;
    
    // generate spaces string
    let spaces = ' '.repeat(difference);

    // create pounds string
    let pounds = '#'.repeat(hashesToPrint);

    // append spaces on either side of our pound string
    let newString = spaces + pounds + spaces

    console.log(newString)

    // increment our counter by two
    hashesToPrint += 2
}

}

金字塔(3)

 function pyramid(row){ for(var i = 0; i <=row; i++){ var space=""; for(let s = 0; s<=(row-i-1); s++){ space= space+" "; } var result=""; for (var j = 1; j <=2*i+1; j++ ){ result= result+"*"; //result=result+* } console.log(space+result); result=""; } return result; } console.log(pyramid(5));

<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Pyramid triangle star pattern - javascript</title>
</head>
<body>
  <h2>Pyramid triangle star pattern in javascript</h2>
  <script>
    let n = 5;

    // External loop
    for (let i = 1; i <= n; i++) {
      // printing spaces
      for (let j = n; j > i; j--) {
        document.write('&nbsp;')
      }
      // printing star
      for (let k = 0; k < i * 2 - 1; k++) {
       document.write("*")
      }
    document.write("<br/>")
    }

  </script>
</body>
</html>```

 function pyramid(n) { for (let i = 2; i < n + 2; i++) { console.log(" ".repeat(n + 2 - i) + "*".repeat((i - 2) + (i - 1))); } }; pyramid(10);

這是另一種解決方案,利用斐波那契數列:1、3、5、8、13 等。

function printNumbers(rows){
  for(let i=1;i<=rows; i++){
   let str='';
   for(let j=1;j<=i; j++){
    str = str + j+' ';
   }
   console.log(str);
  } 
}
printNumbers(5);
  function pyramid(){
        var lines = 5;
        var triangle = "";
        for(var i = 0; i < lines; i++){
            for(var j = i; j < lines; j++) {
                triangle += " "
            }
            for(var j = 0; j <= i; j++) {
                triangle += "X "
            }
            triangle += "<br>"
        }
        console.log(triangle)
    }

最簡單的方法是:

 let ans = [], temp="", n=4; for (let i=0; i<n; i++) { temp += "* "; ans.push(temp); console.log(temp) }

function strPattern(num) {

    for (var i = 0; i < num; i++) {

        let str = '';

        for (var j = 0; j <= i; j++) {

            str = str + '* ';
        }
        console.log(str);
    }

    for (var i = num - 1; i > 0; i--) {

        let str = '';

        for (var j = 0; j < i; j++) {

            str = str + '* ';
        }
        console.log(str);
    }
}

strPattern(11);

這是另一種方式,通過這種方式,我們可以在三角形的一側有重復的值

 let i,j,rows = 5; var output = `\n`; for(i=1;i<=rows;i++) { output+= ' '.repeat(rows-i); for(j=i;j>=1;j--){ output+= `${j} `; } for(j=2;j<=i;j++){ output+= `${j} `; } output += '\n'; } console.log(output);

在此處輸入圖像描述

如果你想創建一個對稱的金字塔,一個很好的方法是這樣的:

function pyramid(n) {
  let line = "";
  for (let i = 0; i < n; i++) {
    line += " ".repeat(n - i) + "*".repeat(i + (i + 1)) + "\n";
  }
  console.log(line);
}

pyramid(5);
for(star = "*"; star.length < 8; star += "*"){
     console.log(star);}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM