http://rosettacode.org/wiki/Pascal%27s_triangle#JavaScriptZakladka javascript.
<input type="text" id="rows"/>
<input type="submit" id="submit" onclick="createPascalTriangle(document.getElementById('rows').value)"/>
<script type="text/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
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;
}
// Print the triangle line by line
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
)); }
}
}
}
function createPascalTriangle(rows){
rows = parseInt(rows)+1;
var tri = new pascalTriangle(rows);
for(i=0;i<tri.triangle.length;i++){
document.write('<br>'+tri.triangle[i]+'<br/>');
}
}
</script>
Jezeli chcesz aby to byl trójkat to zmien:
document.write('<br>'+tri.triangle[i]+'<br/>');
na
document.write('<div style="text-align:center;">'+tri.triangle[i]+'</div>');
Ten post edytował rad11 3.02.2015, 20:11:25