Pascal's triangle: Difference between revisions

Content added Content deleted
No edit summary
Line 806: Line 806:
}
}
}</lang>
}</lang>

=={{header|JavaScript}}==
{{works with|SpiderMonkey}}
{{works with|V8}}
<lang javascript>// Pascal's triangle object
function pascalTriangle (rows) {

// Number of rows the triangle contains
this.rows = rows;

// The 2D array holding the rows of the triangle
this.triangle = new Array();
for (var r = 0; r < rows; r++) {
this.triangle[r] = new Array();
for (var i = 0; i <= r; i++) {
if (i == 0 || i == r)
this.triangle[r][i] = 1;
else
this.triangle[r][i] = this.triangle[r-1][i-1]+this.triangle[r-1][i];
}
}

// Method to print the triangle formatted into a triangle
this.print = function(base) {
if (!base)
base = 10;

// Private method to calculate digits in number
var digits = function(n,b) {
var d = 0;
while (n >= 1) {
d++;
n /= b;
}
return d;
}

// Calculate max spaces needed
var spacing = digits(this.triangle[this.rows-1][Math.round(this.rows/2)],base);

// Private method to add spacing between numbers
var insertSpaces = function(s) {
var buf = "";
while (s > 0) {
s--;
buf += " ";
}
return buf;
}

for (var r = 0; r < this.triangle.length; r++) {
var l = "";
for (var s = 0; s < Math.round(this.rows-1-r); s++) {
l += insertSpaces(spacing);
}
for (var i = 0; i < this.triangle[r].length; i++) {
if (i != 0)
l += insertSpaces(spacing-Math.ceil(digits(this.triangle[r][i],base)/2));
l += this.triangle[r][i].toString(base);
if (i < this.triangle[r].length-1)
l += insertSpaces(spacing-Math.floor(digits(this.triangle[r][i],base)/2));
}
print(l);
}
}

}

// Display 4 row triangle in base 10
var tri = new pascalTriangle(4);
tri.print();
// Display 8 row triangle in base 16
tri = new pascalTriangle(8);
tri.print(16);</lang>
Output:
<pre>$ d8 pascal.js
1
1 1
1 2 1
1 3 3 1
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 a a 5 1
1 6 f 14 f 6 1
1 7 15 23 23 15 7 1
</pre>


=={{header|Liberty BASIC}}==
=={{header|Liberty BASIC}}==