Skip to content

Instantly share code, notes, and snippets.

@codecademydev
Created March 17, 2023 01:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save codecademydev/c72564c6c69c647588bbc7807f201205 to your computer and use it in GitHub Desktop.
Save codecademydev/c72564c6c69c647588bbc7807f201205 to your computer and use it in GitHub Desktop.
Codecademy export
// Returns a random DNA base
const returnRandBase = () => {
const dnaBases = ['A', 'T', 'C', 'G']
return dnaBases[Math.floor(Math.random() * 4)]
}
// Returns a random single strand of DNA containing 15 bases
const mockUpStrand = () => {
const newStrand = [];
for (let i = 0; i < 15; i++) {
newStrand.push(returnRandBase());
}
return newStrand;
}
// Putting survival P Aequors into an array to study them later
const survivalAequors = aequorArrayObjects => {
let pAequorSurvivals = [];
aequorArrayObjects.forEach(aequorObject => {
aequorObject.willLikelySurvive() ? pAequorSurvivals.push(aequorObject.dna) : `\n Will this P. Aequor survive?: ${false} \n ${aequorObject.dna}`;
})
return pAequorSurvivals;
}
// Factory function
const pAequorFactory = (number, dnaBases) => {
return {
specimenNum: number,
dna: dnaBases,
mutate() {
let chosenIndex = Math.floor(Math.random() * 4);
let baseToMutate = this.dna[chosenIndex];
for (const base of this.dna) {
if (base !== baseToMutate) {
baseToMutate = base;
break;
}
}
this.dna[chosenIndex] = baseToMutate;
return this.dna;
},
compareDNA(pAequorNumber, pAequorObject) {
let baseCounter = 0;
let indexCounter = -1;
this.dna.forEach(element => {
indexCounter++;
if(element === pAequorObject[indexCounter]) {
baseCounter++;
}
})
const dnaPercentageInCommon = ((baseCounter / this.dna.length) * 100).toFixed()
return `Specimen #${this.specimenNum} and Specimen #${pAequorNumber} have ${dnaPercentageInCommon}% DNA in common`;
},
willLikelySurvive() {
let survivalCounter = 0;
this.dna.forEach(element => {
if(element === 'C' || element === 'G') {
survivalCounter++;
}
})
const survivalProbability = ((survivalCounter / this.dna.length) * 100).toFixed()
return survivalProbability >= 60 ? true : false;
}
}
}
let dnaArray = mockUpStrand();
let dnaTwoArray = mockUpStrand();
let dnaThreeArray = mockUpStrand();
let dnaFourArray = mockUpStrand();
let dnaFiveArray = mockUpStrand();
let pAequorCompare = mockUpStrand();
let firstAequorDna = pAequorFactory(1, dnaArray);
let secondAequorDna = pAequorFactory(2, dnaTwoArray);
let thirdAequorDna = pAequorFactory(3, dnaThreeArray);
let fourAequorDna = pAequorFactory(4, dnaFourArray);
let fiveAequorDna = pAequorFactory(5, dnaFiveArray);
firstAequorDna.mutate();
console.log(firstAequorDna.compareDNA(2, pAequorCompare));
console.log(`${dnaArray}`);
console.log(`${pAequorCompare} \n`);
const aequorsArray = [firstAequorDna, secondAequorDna, thirdAequorDna, fourAequorDna, fiveAequorDna]
console.log(survivalAequors(aequorsArray));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment