diff --git a/solutions/day-01/classes/level3.js b/solutions/day-01/classes/level3.js index 7966fa1..382b325 100644 --- a/solutions/day-01/classes/level3.js +++ b/solutions/day-01/classes/level3.js @@ -7,20 +7,70 @@ calculations as method for the Statistics class. Check the output below. */ ages = [31, 26, 34, 37, 27, 26, 32, 32, 26, 27, 27, 24, 32, 33, 27, 25, 26, 38, 37, 31, 34, 24, 33, 29, 26] class Statistics{ - //code goes here + constructor(ages){ + this.ages = ages + } + count(){ + return this.ages.length + } + sum(){ + return this.ages.reduce((a,b)=>{return a + b}); + } + min(){ + return Math.min(...this.ages); + } + max(){ + return Math.max(...this.ages); + } + range(){ + return this.max() - this.min(); + } + mean(){ + return Math.ceil(this.sum() / this.count()); + } + median(){ + return this.ages.sort()[Math.floor(this.count()/2)]; + } + mode(){ + let mode = 0, count = 0, num = {}; + this.ages.sort().forEach((element,index,array) => { + if(num[element]){ //add each number to object + num[element]++; //increment key if object added already + }else{ + num[element] = 1; + } + + if(count < num[element]){ // check if highest stored count is smaller than processed number + mode = array[index]; // store number + count = num[element]; // store count of number + } + + }); + return`(${mode}, ${count})` + } + describe(){ + return `Count: ${this.count()}\nSum: ${this.sum()}\nMin: ${this.min()}\nMax: ${this.max()}\nRange: ${this.range()} +Mean: ${this.mean()}\nMedian: ${this.median()}\nMode: ${this.mode()}`; + } + } +let statistics = new Statistics(ages); +console.log(statistics.describe()) + +// only did up to Mode +// Skipped the rest since I don't know how to find variance, standard deviations and frequencey distribution + // console.log('Count:', statistics.count()) // 25 // console.log('Sum: ', statistics.sum()) // 744 // console.log('Min: ', statistics.min()) // 24 // console.log('Max: ', statistics.max()) // 38 -// console.log('Range: ', statistics.range() // 14 +// console.log('Range: ', statistics.range()) // 14 // console.log('Mean: ', statistics.mean()) // 30 // console.log('Median: ',statistics.median()) // 29 // console.log('Mode: ', statistics.mode()) // {'mode': 26, 'count': 5} // console.log('Variance: ',statistics.var()) // 17.5 // console.log('Standard Deviation: ', statistics.std()) // 4.2 -// console.log('Variance: ',statistics.var()) // 17.5 // console.log('Frequency Distribution: ',statistics.freqDist()) // [(20.0, 26), (16.0, 27), (12.0, 32), (8.0, 37), (8.0, 34), (8.0, 33), (8.0, 31), (8.0, 24), (4.0, 38), (4.0, 29), (4.0, 25)] // you output should look like this