Skip to content

Instantly share code, notes, and snippets.

@codecademydev
Created April 14, 2022 02:15
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/7407b32f43c07871edee26cf27a93bd0 to your computer and use it in GitHub Desktop.
Save codecademydev/7407b32f43c07871edee26cf27a93bd0 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 stand of DNA containing 15 bases
const mockUpStrand = () => {
const newStrand = [];
for (let i = 0; i < 15; i++) {
newStrand.push(returnRandBase());
}
return newStrand;
};
function pAequorFactory(num, array){
return {
specimenNum: num,
dna:array,
mutate(){
let randomNum = Math.floor(Math.random() * 15);
while(1){
let randomBase = returnRandBase();
if(this.dna[randomNum] == randomBase){
continue;
}else{
this.dna[randomNum] = randomBase;
break;
}
}
},
compareDNA(pAequor){
let count = 0;
for(let i = 0; i < pAequor.dna.length; i++){
if(this.dna[i] == pAequor.dna[i]){
count++;
}
}
let inCommon = ((count / 15) * 100).toFixed(2) ;
console.log(`specimen ${this.specimenNum} and specimen ${pAequor.specimenNum} have ${inCommon} DNA in common`)
},
willLikelySurvive(){
let count = 0;
for(let i = 0; i < this.dna.length; i++){
if(this.dna[i] == 'C' || this.dna[i] == 'G'){
count++;
}
}
return (count / 15) >= 0.6 ? true : false;
},
}
}
//const a = pAequorFactory(1, mockUpStrand());
//console.log(a);
//a.mutate();
//console.log(a);
//const b = pAequorFactory(2, mockUpStrand());
//console.log(b);
//a.compareDNA(b);
//console.log(b.willLikelySurvive());
let pAequors = [];
let id = 0;
while(pAequors.length != 30){
let pAequor = pAequorFactory(id, mockUpStrand());
//console.log(pAequor);
if(pAequor.willLikelySurvive() == true){
pAequors.push(pAequor);
}
id++;
//console.log(pAequors);
}
console.log(pAequors.length)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment