-
-
Save codecademydev/d0e7b312654731f0ea35664551030ae8 to your computer and use it in GitHub Desktop.
Codecademy export
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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 | |
} | |
function pAequorFactory(specimenNum, dna) { | |
return { | |
specimenNum, | |
dna, | |
mutate() { | |
console.log(dna) | |
let randomIndex = Math.floor(Math.random() * dna.length); | |
let randomBase = dna[randomIndex]; | |
// console.log(randomBase); | |
switch (randomBase) { | |
case 'A': | |
let replaceA = ['T', 'C', 'G']; | |
randomBase = replaceA[Math.floor(Math.random() * replaceA.length)]; | |
break; | |
case 'T': | |
let replaceT = ['A', 'C', 'G']; | |
randomBase = replaceT[Math.floor(Math.random() * replaceT.length)] | |
break; | |
case 'C': | |
let replaceC = ['T', 'A', 'G']; | |
randomBase = replaceC[Math.floor(Math.random() * replaceC.length)] | |
break; | |
case 'G': | |
let replaceG = ['T', 'C', 'A']; | |
randomBase = replaceG[Math.floor(Math.random() * replaceG.length)] | |
break; | |
default: | |
console.log('False alarm!') | |
} | |
dna[randomIndex] = randomBase; | |
console.log(dna) | |
return dna | |
}, | |
compareDNA(pAequorObj) { | |
let counter = 0; | |
let percent; | |
for (let i = 0; i < pAequorObj.dna.length; i++) { | |
if (dna[i] === pAequorObj.dna[i]) { | |
counter += 1 | |
} | |
} | |
percent = ((counter / dna.length) * 100).toFixed(2); | |
console.log(`specimen #1 and specimen #2 have ${percent}% DNA in common`) | |
}, | |
willLikelySurvive() { | |
let counterC = 0; | |
let counterG = 0 | |
dna.forEach(letter => { | |
if (letter === 'C') { | |
counterC++; | |
} else if (letter === 'G') { | |
counterG++; | |
} | |
}); | |
let percentC = ((counterC / dna.length) * 100).toFixed(2); | |
let percentG = ((counterG / dna.length) * 100).toFixed(2); | |
if (percentC >= 60 || percentG >= 60) { | |
return true; | |
} else { | |
return false; | |
} | |
} | |
} | |
} | |
let instance1 = pAequorFactory(1, mockUpStrand()) | |
let instance2 = pAequorFactory(2, mockUpStrand()) | |
const pAequorSet = []; | |
for (let i = 1; i <= 30; i++) { | |
let instance = pAequorFactory(i, mockUpStrand()) | |
pAequorSet.push(instance); | |
} | |
instance1.mutate() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Challenge Project complete:
Mysterious Organism (Software Engineering Foundations)