Skip to content

Instantly share code, notes, and snippets.

@codecademydev
Created March 12, 2023 00:37
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/d0e7b312654731f0ea35664551030ae8 to your computer and use it in GitHub Desktop.
Save codecademydev/d0e7b312654731f0ea35664551030ae8 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
}
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()
@ARodriguezHacks
Copy link

Challenge Project complete:
Mysterious Organism (Software Engineering Foundations)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment