Pascal's Triangle

by martinschaer

HTML

<pre></pre>

JavaScript

var w = 4;

var espacios = function (n) {
	var resultado = "";
	for (var i = 0; i < n; i++) {
  	resultado += " ";
  }
  return resultado;
};

var numero = function (x) {
	var resultado = "";
	var digitos = x.toString().length;
  if (digitos <= w) {
  	resultado += espacios(w - digitos);
    resultado += x;
  } else {
  	resultado = x.toString().substr(0, w - 1) + "…";
  }
  return resultado;
};

var generarTriangulo = function (niveles) {
  var w_total = niveles * w;
	var nivel = 1;
  var columnas_x_nivel = 1;
  var matriz = [[1]];
  var resultado = espacios(niveles * w/2) + numero(1) + "\n";
  var columna;
  var x;
  for (; nivel < niveles; nivel++) {
  	columna = 1;
    columnas_x_nivel = nivel + 1;
    matriz.push([1]);
    resultado += espacios((niveles - nivel) * w/2);
    resultado += numero(1);
  	for (; columna < columnas_x_nivel; columna++) {
    	if (columna < columnas_x_nivel - 1) {
      	x = matriz[nivel-1][columna-1] + matriz[nivel-1][columna];
      } else {
      	x = 1;
      }
      matriz[nivel].push(x);
      resultado += numero(x);
    }
    resultado += "\n";
  }
  return resultado;
};

document.getElementsByTagName('pre')[0].innerHTML = generarTriangulo(40);