Produtos Notáveis
(a+b) ^ n
by ravan
HTML
Calcula o produto notável de (a+b)<sup>N</sup><br />
<input id="num" type="text" placeholder="Digite o N" /> <input id="btn" type="button" value="Gerar!" /><br /><br />
<span id="result"></span>
JavaScript
function linhaTriangulo(n) {
var s = [[1]];
for (i = 1; i <= n; i++) {
s[i] = [];
s[i][0] = s[i][i] = 1;
for (j = 1; j < i; j++) {
s[i][j] = (s[i - 1][j] | 0) + (s[i - 1][j - 1] | 0);
}
}
return s[n];
}
function produtoNotavel(n) {
var lt = linhaTriangulo(n);
var s = '';
for(j = 0, i = lt.length- 1; j <= i ; j++) {
s += lt[j] + 'a^' + (i-j) + 'b^' + (j) + ' + ';
}
s = s.replace(/\^1(\D)/g,"$1")
.replace(/[ab]\^0/g,"")
.replace(/(\D)1([ab])/g,"$1$2")
.replace(/^1([ab])/,"$1")
.replace(/\s*\+\s*$/,"");
return s;
}
/* só para parte visual */
document.getElementById("btn").onclick = function() {
var num = document.getElementById("num").value;
var p = produtoNotavel(num);
p = p.replace(/\^(\d+)/g,"<sup>$1</sup>")
.replace(/a/g,"!")
.replace(/b/g,"?")
.replace(/(\d+)(!|\?)/g,"<b>$1</b>$2")
.replace(/!/g,"<font color='red'>a</font>")
.replace(/\?/g,"<font color='blue'>b</font>")
document.getElementById("result").innerHTML = p;
}