mathsteps-experimental-fork
Version:
Step by step math solutions. Experimental Fork
44 lines (42 loc) • 1.3 kB
JavaScript
function generateCombinations(arr) {
const combinations = [];
for (let i = 0; i < arr.length - 1; i++) {
for (let j = i + 1; j < arr.length; j++) {
const pair = [arr[i], arr[j]];
const remaining = arr.filter((_, index) => index !== i && index !== j);
combinations.push([...pair, ...remaining]);
}
}
return combinations;
}
function filterUniqueValues(arr, isEqual = (a, b) => a === b) {
const uniqueArray = [];
const seen = /* @__PURE__ */ new Map();
for (let i = 0; i < arr.length; i++) {
const current = arr[i];
let isUnique = true;
for (const key of seen.keys()) {
if (isEqual(current, key)) {
isUnique = false;
break;
}
}
if (isUnique) {
uniqueArray.push(current);
seen.set(current, true);
}
}
return uniqueArray;
}
const areArraysEqualUnordered = (array1, array2, {
isEqualFn = (a, b) => a === b,
sortFn = (arr) => arr.sort(),
copyFn = (arr) => [...arr]
} = {}) => {
if (array1.length !== array2.length)
return false;
const sortedArray1 = sortFn(copyFn(array1));
const sortedArray2 = sortFn(copyFn(array2));
return sortedArray1.every((item, index) => isEqualFn(item, sortedArray2[index]));
};
export { areArraysEqualUnordered, filterUniqueValues, generateCombinations };