[英]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) }
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(' ')
}
// 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);
如果你想創建一個對稱的金字塔,一個很好的方法是這樣的:
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.