mirror of
https://github.com/trekhleb/javascript-algorithms.git
synced 2025-12-08 19:06:00 +00:00
28 lines
799 B
JavaScript
28 lines
799 B
JavaScript
/**
|
|
* Generates Cartesian Product of two sets.
|
|
* @param {*[]} setA
|
|
* @param {*[]} setB
|
|
* @return {*[]}
|
|
*/
|
|
export default function cartesianProduct(setA, setB) {
|
|
// Check if input sets are not empty.
|
|
// Otherwise return null since we can't generate Cartesian Product out of them.
|
|
if (!setA || !setB || !setA.length || !setB.length) {
|
|
return null;
|
|
}
|
|
|
|
// Init product set.
|
|
const product = [];
|
|
|
|
// Now, let's go through all elements of a first and second set and form all possible pairs.
|
|
for (let indexA = 0; indexA < setA.length; indexA += 1) {
|
|
for (let indexB = 0; indexB < setB.length; indexB += 1) {
|
|
// Add current product pair to the product set.
|
|
product.push([setA[indexA], setB[indexB]]);
|
|
}
|
|
}
|
|
|
|
// Return cartesian product set.
|
|
return product;
|
|
}
|