fix(learn): Update text as code for vector-dot-product (#40460)
* fix: implemented suggestted changes * fix: correct last test expected return value * fix: remove slash Co-authored-by: Shaun Hamilton <51722130+ShaunSHamilton@users.noreply.github.com> * fix: remove slash Co-authored-by: Shaun Hamilton <51722130+ShaunSHamilton@users.noreply.github.com> * fix: add test to return null if more than 2 vectors Co-authored-by: Shaun Hamilton <51722130+ShaunSHamilton@users.noreply.github.com> * fix: added correct solution * fix: removed extra brackets Co-authored-by: Yuval Levental <yhl3051@rit.edu> Co-authored-by: Lakshya Baghel <lakshyab.1999@gmail.com> Co-authored-by: Shaun Hamilton <51722130+ShaunSHamilton@users.noreply.github.com> Co-authored-by: Yuval Levental <yhl3051@rit.edu>
This commit is contained in:
@ -8,57 +8,54 @@ dashedName: vector-dot-product
|
|||||||
|
|
||||||
# --description--
|
# --description--
|
||||||
|
|
||||||
A vector is defined as having three dimensions as being represented by an ordered collection of three numbers: (X, Y, Z).
|
A vector can have one or more values represented by an ordered collection. Examples could be (x), (x, y), or (x, y, z).
|
||||||
|
|
||||||
# --instructions--
|
# --instructions--
|
||||||
|
|
||||||
Write a function that takes any numbers of vectors (arrays) as input and computes their dot product. Your function should return `null` on invalid inputs such as vectors of different lengths.
|
Write a function that takes two vectors (represented as one-dimensional arrays) as input and computes their dot product. Your function should return `null` on invalid inputs such as vectors of different lengths or passing anything other than two vectors.
|
||||||
|
|
||||||
# --hints--
|
# --hints--
|
||||||
|
|
||||||
dotProduct should be a function.
|
`dotProduct` should be a function.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
assert.equal(typeof dotProduct, 'function');
|
assert.equal(typeof dotProduct, 'function');
|
||||||
```
|
```
|
||||||
|
|
||||||
dotProduct() should return null.
|
`dotProduct()` should return `null`.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
assert.equal(dotProduct(), null);
|
assert.equal(dotProduct(), null);
|
||||||
```
|
```
|
||||||
|
|
||||||
dotProduct(\[[1], [1]]) should return 1.
|
`dotProduct([1], [1])` should return `1`.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
assert.equal(dotProduct([1], [1]), 1);
|
assert.equal(dotProduct([1], [1]), 1);
|
||||||
```
|
```
|
||||||
|
|
||||||
dotProduct(\[[1], [1, 2]]) should return null.
|
`dotProduct([1], [1, 2])` should return `null`.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
assert.equal(dotProduct([1], [1, 2]), null);
|
assert.equal(dotProduct([1], [1, 2]), null);
|
||||||
```
|
```
|
||||||
|
|
||||||
dotProduct([1, 3, -5], [4, -2, -1]) should return 3.
|
`dotProduct([1, 3, -5], [4, -2, -1])` should return `3`.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
assert.equal(dotProduct([1, 3, -5], [4, -2, -1]), 3);
|
assert.equal(dotProduct([1, 3, -5], [4, -2, -1]), 3);
|
||||||
```
|
```
|
||||||
|
|
||||||
`dotProduct(...nVectors)` should return 156000.
|
`dotProduct([3, 2, 1], [2, 4, 2], [5, 3, 1])` should return `null`.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
assert.equal(
|
assert.equal(dotProduct([3, 2, 1], [2, 4, 2], [5, 3, 1]), null);
|
||||||
dotProduct(
|
```
|
||||||
[0, 1, 2, 3, 4],
|
|
||||||
[0, 2, 4, 6, 8],
|
`dotProduct([ 0, 3, 6, 9, 12 ], [ 0, 4, 8, 12, 16 ])` should return `360`.
|
||||||
[0, 3, 6, 9, 12],
|
|
||||||
[0, 4, 8, 12, 16],
|
```js
|
||||||
[0, 5, 10, 15, 20]
|
assert.equal(dotProduct([ 0, 3, 6, 9, 12 ], [ 0, 4, 8, 12, 16 ]), 360);
|
||||||
),
|
|
||||||
156000
|
|
||||||
);
|
|
||||||
```
|
```
|
||||||
|
|
||||||
# --seed--
|
# --seed--
|
||||||
@ -75,29 +72,18 @@ function dotProduct(...vectors) {
|
|||||||
|
|
||||||
```js
|
```js
|
||||||
function dotProduct(...vectors) {
|
function dotProduct(...vectors) {
|
||||||
if (!vectors || !vectors.length) {
|
if (!vectors || !vectors.length || vectors.length > 2 || vectors[0].length !== vectors[1].length) {
|
||||||
return null;
|
|
||||||
}
|
|
||||||
if (!vectors[0] || !vectors[0].length) {
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
const vectorLen = vectors[0].length;
|
const vectorLen = vectors[0].length;
|
||||||
const numVectors = vectors.length;
|
|
||||||
|
|
||||||
// If all vectors not same length, return null
|
|
||||||
for (let i = 0; i < numVectors; i++) {
|
|
||||||
if (vectors[i].length !== vectorLen) {
|
|
||||||
return null; // return undefined
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let prod = 0;
|
let prod = 0;
|
||||||
let sum = 0;
|
let sum = 0;
|
||||||
let j = vectorLen;
|
let j = vectorLen;
|
||||||
let i = numVectors;
|
let i = 2;
|
||||||
// Sum terms
|
// Sum terms
|
||||||
while (j--) {
|
while (j--) {
|
||||||
i = numVectors;
|
i = 2;
|
||||||
prod = 1;
|
prod = 1;
|
||||||
|
|
||||||
while (i--) {
|
while (i--) {
|
||||||
|
Reference in New Issue
Block a user