* feat(tools): add seed/solution restore script * chore(curriculum): remove empty sections' markers * chore(curriculum): add seed + solution to Chinese * chore: remove old formatter * fix: update getChallenges parse translated challenges separately, without reference to the source * chore(curriculum): add dashedName to English * chore(curriculum): add dashedName to Chinese * refactor: remove unused challenge property 'name' * fix: relax dashedName requirement * fix: stray tag Remove stray `pre` tag from challenge file. Signed-off-by: nhcarrigan <nhcarrigan@gmail.com> Co-authored-by: nhcarrigan <nhcarrigan@gmail.com>
102 lines
1.8 KiB
Markdown
102 lines
1.8 KiB
Markdown
---
|
|
id: 5a23c84252665b21eecc7e03
|
|
title: Cumulative standard deviation
|
|
challengeType: 5
|
|
forumTopicId: 302240
|
|
dashedName: cumulative-standard-deviation
|
|
---
|
|
|
|
# --description--
|
|
|
|
Write a function that takes an array of numbers as parameter and returns the [standard deviation](<https://en.wikipedia.org/wiki/Standard Deviation>) of the series.
|
|
|
|
# --hints--
|
|
|
|
`standardDeviation` should be a function.
|
|
|
|
```js
|
|
assert(typeof standardDeviation == 'function');
|
|
```
|
|
|
|
`standardDeviation([2, 4, 4, 4, 5, 5, 7, 9])` should return a number.
|
|
|
|
```js
|
|
assert(typeof standardDeviation([2, 4, 4, 4, 5, 5, 7, 9]) == 'number');
|
|
```
|
|
|
|
`standardDeviation([2, 4, 4, 4, 5, 5, 7, 9])` should return `2`.
|
|
|
|
```js
|
|
assert.equal(standardDeviation([2, 4, 4, 4, 5, 5, 7, 9]), 2);
|
|
```
|
|
|
|
`standardDeviation([600, 470, 170, 430, 300])` should return `147.323`.
|
|
|
|
```js
|
|
assert.equal(standardDeviation([600, 470, 170, 430, 300]), 147.323);
|
|
```
|
|
|
|
`standardDeviation([75, 83, 96, 100, 121, 125])` should return `18.239`.
|
|
|
|
```js
|
|
assert.equal(standardDeviation([75, 83, 96, 100, 121, 125]), 18.239);
|
|
```
|
|
|
|
`standardDeviation([23, 37, 45, 49, 56, 63, 63, 70, 72, 82])` should return `16.87`.
|
|
|
|
```js
|
|
assert.equal(
|
|
standardDeviation([23, 37, 45, 49, 56, 63, 63, 70, 72, 82]),
|
|
16.87
|
|
);
|
|
```
|
|
|
|
`standardDeviation([271, 354, 296, 301, 333, 326, 285, 298, 327, 316, 287, 314])` should return `22.631`.
|
|
|
|
```js
|
|
assert.equal(
|
|
standardDeviation([
|
|
271,
|
|
354,
|
|
296,
|
|
301,
|
|
333,
|
|
326,
|
|
285,
|
|
298,
|
|
327,
|
|
316,
|
|
287,
|
|
314
|
|
]),
|
|
22.631
|
|
);
|
|
```
|
|
|
|
# --seed--
|
|
|
|
## --seed-contents--
|
|
|
|
```js
|
|
function standardDeviation(arr) {
|
|
|
|
}
|
|
```
|
|
|
|
# --solutions--
|
|
|
|
```js
|
|
function standardDeviation(arr) {
|
|
var sum = 0,
|
|
sum_sq = 0,
|
|
n = arr.length;
|
|
arr.forEach(function(e) {
|
|
sum += e;
|
|
sum_sq += e * e;
|
|
});
|
|
|
|
var std_dev = Math.sqrt(sum_sq / n - Math.pow(sum / n, 2));
|
|
return Math.round(std_dev * 1000) / 1000;
|
|
}
|
|
```
|