Prepare repository for merge
This commit is contained in:
28
javascript/snippets/geometric-progression.md
Normal file
28
javascript/snippets/geometric-progression.md
Normal file
@ -0,0 +1,28 @@
|
||||
---
|
||||
title: Geometric progression
|
||||
type: snippet
|
||||
tags: [math,algorithm]
|
||||
cover: book-chair
|
||||
excerpt: Initializes an array containing the numbers in the specified geometric progression range.
|
||||
dateModified: 2020-12-28T13:49:24+02:00
|
||||
---
|
||||
|
||||
Initializes an array containing the numbers in the specified range where `start` and `end` are inclusive and the ratio between two terms is `step`.
|
||||
Returns an error if `step` equals `1`.
|
||||
|
||||
- Use `Array.from()`, `Math.log()` and `Math.floor()` to create an array of the desired length, `Array.prototype.map()` to fill with the desired values in a range.
|
||||
- Omit the second argument, `start`, to use a default value of `1`.
|
||||
- Omit the third argument, `step`, to use a default value of `2`.
|
||||
|
||||
```js
|
||||
const geometricProgression = (end, start = 1, step = 2) =>
|
||||
Array.from({
|
||||
length: Math.floor(Math.log(end / start) / Math.log(step)) + 1,
|
||||
}).map((_, i) => start * step ** i);
|
||||
```
|
||||
|
||||
```js
|
||||
geometricProgression(256); // [1, 2, 4, 8, 16, 32, 64, 128, 256]
|
||||
geometricProgression(256, 3); // [3, 6, 12, 24, 48, 96, 192]
|
||||
geometricProgression(256, 1, 4); // [1, 4, 16, 64, 256]
|
||||
```
|
||||
Reference in New Issue
Block a user