alecmce-primitivesjs
Version:
A small library for visualizing the prime factor decomposition of numbers.
45 lines (44 loc) • 1.95 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var atom_1 = require("./atom");
var factorize_1 = require("./factorize");
var fibonacci_1 = require("./fibonacci");
var five_1 = require("./five");
var get_color_1 = require("./get_color");
var seven_1 = require("./seven");
var three_1 = require("./three");
var two_1 = require("./two");
var Primitive = (function () {
function Primitive(drawCircle, atomRadius, spacing, value) {
var _this = this;
this.drawCircle = drawCircle;
this.atomRadius = atomRadius;
this.spacing = spacing;
var atom = new atom_1.Atom(drawCircle, atomRadius);
this.item = getFactors(value).reduce(function (node, factor) { return _this.wrapItem(node, factor); }, atom);
this.radius = this.item.radius;
}
Primitive.prototype.draw = function (config) {
return this.item.draw(config);
};
Primitive.prototype.wrapItem = function (item, factor) {
switch (factor * 1) {
case 2:
return new two_1.Two(this.drawCircle, get_color_1.getColor(2), this.spacing, item);
case 3:
return new three_1.Three(this.drawCircle, get_color_1.getColor(3), this.spacing, item);
case 5:
return new five_1.Five(this.drawCircle, get_color_1.getColor(5), this.spacing, item);
case 7:
return new seven_1.Seven(this.drawCircle, get_color_1.getColor(7), this.spacing, item);
default:
return new fibonacci_1.Fibonacci(factor, this.drawCircle, get_color_1.getColor(factor), this.spacing, item);
}
};
return Primitive;
}());
exports.Primitive = Primitive;
function getFactors(input) {
var factors = typeof input === 'number' ? [input] : input;
return factors.reduce(function (list, factor) { return factor == 1 ? list : list.concat(factorize_1.factorize(factor)); }, []);
}
;