console
$("#add").click(function() {
var p1 = extractPoly($("#p1").val());
var p2 = extractPoly($("#p2").val());
var sum = p1.add(p2);
$("#result").html(sum.toString());
});
$("#mult").click(function() {
var p1 = extractPoly($("#p1").val());
var p2 = extractPoly($("#p2").val());
var sum = p1.mult(p2);
$("#result").html(sum.toString());
});
function extractPoly(input) {
var l = input.replace(/\-/g, "\+-").split("+");
parms = [];
var cf;
l.forEach(function(x, y, z) {
t = x.split('^');
if (t[0] && t[0].indexOf('x') < 0) {
parms.push({
"cof": parseFloat(t[0]),
"exp": 0
});
} else if (t[0] && t[0].indexOf('x') >= 0) {
cf = t[0].replace('x', '');
cf = isNaN(parseFloat(cf)) ? parseFloat(cf + '1') : parseFloat(cf);
parms.push({
"cof": cf,
"exp": t[1] ? parseFloat(t[1]) : 1
});
}
});
parms.sort(function(a, b) {
return a.exp - b.exp;
});
var cofs = [];
var exps = [];
parms.forEach(function(x, y, z) {
cofs.push(x.cof);
exps.push(x.exp);
});
console.log(parms, cofs, exps);
var p = new Poly(cofs, exps);
return p;
}
<div class="container">
<div class="panel panel-default">
<div class="panel-heading">简易多项式运算</div>
<div class="panel-body">
<div class="poly">
<label for='p1'>p1 =</label>
<textarea id="p1" class="form-control" style="max-width:100%" rows="1" placeholder="Input a polynomial like:-1+x-x^2+x^5">-1+x-2x^3</textarea>
</div>
<div class="poly">
<label for='p2'>p2 =</label>
<textarea id="p2" class="form-control" style="max-width:100%" rows="1" placeholder="Input a polynomial like:-1+x-x^2+x^5">1+x^2</textarea>
</div>
<div class="btn-group">
<button class="btn btn-default btn-sm" id="add">+
</button>
<button class="btn btn-default btn-sm" id="mult">×</span>
</button>
</div>
<div class="output" style="margin=5">
<label>=</label>
<div class="well" id="result"></div>
</div>
</div>
<div class="panel-footer">
<div id="author">Author: <a href="http://wuzhiwei.net/about/" target="_blank">Tim Wu</a>
</div>
</div>
</div>
</div>
textarea.form-control {
margin-bottom: 7px;
}
.panel-heading {
text-align: center;
}
#author {
text-align: right;
}