UNPKG

@dxzmpk/js-algorithms-data-structures

Version:

Algorithms and data-structures implemented on JavaScript

28 lines (24 loc) 799 B
/** * 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; }