enome
Version:
A genome generation and evolution library.
134 lines • 12.3 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Chance = require("chance");
var _ = require("lodash");
var index_1 = require("../index");
var chance = new Chance();
var Gene = (function () {
function Gene(value) {
if (value === void 0) { value = chance.floating({ min: 0, max: 1 }); }
this.value = value;
}
Gene.reverseFloat = function (min, max, float) {
return index_1.reverseLerp(min, max, float);
};
Gene.reverseInt = function (min, max, int) {
var i = Math.round(int);
return index_1.reverseLerp(min, max, i);
};
Gene.reverseNatural = function (min, max, natural) {
var n = Math.max(0, natural);
return index_1.reverseLerp(min, max, n);
};
Gene.reverseBool = function (bool) {
if (bool) {
return 0.75;
}
else {
return 0.25;
}
};
Gene.reverseLetter = function (letter) {
if (letter.length !== 1) {
throw new Error('letter.length must equal 1');
}
var letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGIJKLMNOPQRSTUVWXYZ'.split('');
return this.reverseElement(letter, letters);
};
Gene.reverseLetterLower = function (letter) {
if (letter.length !== 1) {
throw new Error('letter.length must equal 1');
}
var letters = 'abcdefghijklmnopqrstuvwxyz'.split('');
return this.reverseElement(letter, letters);
};
Gene.reverseLetterUpper = function (letter) {
if (letter.length !== 1) {
throw new Error('letter.length must equal 1');
}
var letters = 'ABCDEFGIJKLMNOPQRSTUVWXYZ'.split('');
return this.reverseElement(letter, letters);
};
Gene.reverseLetterOrSpace = function (letter) {
if (letter.length !== 1) {
throw new Error('letter.length must equal 1');
}
var letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGIJKLMNOPQRSTUVWXYZ '.split('');
return this.reverseElement(letter, letters);
};
Gene.reverseChar = function (char) {
var chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()'.split('');
return this.reverseElement(char, chars);
};
Gene.reverseElement = function (element, array) {
var index = array.indexOf(element);
return this.reverseInt(0, array.length, index);
};
Gene.reverseElements = function (elements, array) {
return this.reverseInt(0, array.length, elements.length);
};
Gene.reverseHex = function (hex) {
return this.reverseElement(hex, '0123456789abcdef'.split(''));
};
Gene.prototype.float = function (min, max, t) {
if (t === void 0) { t = this.value; }
return index_1.lerp(min, max, t);
};
Gene.prototype.int = function (min, max, t) {
if (t === void 0) { t = this.value; }
return Math.round(index_1.lerp(min, max, t));
};
Gene.prototype.natural = function (min, max, t) {
if (t === void 0) { t = this.value; }
return Math.max(0, this.int(min, max, t));
};
Gene.prototype.bool = function (t) {
if (t === void 0) { t = this.value; }
return this.element([true, false], t);
};
Gene.prototype.letter = function (t) {
if (t === void 0) { t = this.value; }
var letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGIJKLMNOPQRSTUVWXYZ'.split('');
return this.element(letters, t);
};
Gene.prototype.letterOrSpace = function (t) {
if (t === void 0) { t = this.value; }
var letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGIJKLMNOPQRSTUVWXYZ '.split('');
return this.element(letters, t);
};
Gene.prototype.letterLower = function (t) {
if (t === void 0) { t = this.value; }
var letters = 'abcdefghijklmnopqrstuvwxyz'.split('');
return this.element(letters, t);
};
Gene.prototype.letterUpper = function (t) {
if (t === void 0) { t = this.value; }
var letters = 'ABCDEFGIJKLMNOPQRSTUVWXYZ'.split('');
return this.element(letters, t);
};
Gene.prototype.char = function (t) {
if (t === void 0) { t = this.value; }
var chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()'.split('');
return this.element(chars, t);
};
Gene.prototype.element = function (array, t) {
if (t === void 0) { t = this.value; }
return array[this.int(0, array.length - 1, t)];
};
Gene.prototype.elements = function (array, t) {
if (t === void 0) { t = this.value; }
return _.take(array, this.int(0, array.length, t));
};
Gene.prototype.randomElements = function (array, t) {
if (t === void 0) { t = this.value; }
return _.take(chance.shuffle(array), this.int(0, array.length, t));
};
Gene.prototype.hex = function (t) {
if (t === void 0) { t = this.value; }
var hex = '0123456789abcdef'.split('');
return this.element(hex);
};
return Gene;
}());
exports.Gene = Gene;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5vdHlwZXMvZ2VuZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtCQUFpQztBQUNqQywwQkFBNEI7QUFDNUIsa0NBQTZDO0FBRTdDLElBQU0sTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7QUFFNUI7SUE4RkUsY0FBbUIsS0FBbUQ7UUFBbkQsc0JBQUEsRUFBQSxRQUFnQixNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFBbkQsVUFBSyxHQUFMLEtBQUssQ0FBOEM7SUFBRyxDQUFDO0lBN0Y1RCxpQkFBWSxHQUExQixVQUEyQixHQUFXLEVBQUUsR0FBVyxFQUFFLEtBQWE7UUFDaEUsTUFBTSxDQUFDLG1CQUFXLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRWEsZUFBVSxHQUF4QixVQUF5QixHQUFXLEVBQUUsR0FBVyxFQUFFLEdBQVc7UUFDNUQsSUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixNQUFNLENBQUMsbUJBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFYSxtQkFBYyxHQUE1QixVQUNFLEdBQVcsRUFDWCxHQUFXLEVBQ1gsT0FBZTtRQUVmLElBQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxtQkFBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVhLGdCQUFXLEdBQXpCLFVBQTBCLElBQWE7UUFJckMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZ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