const getProductOfAllOtherElements = (numbers) => {
// Generate prefix products
let prefixProducts = [];
for (let i = 0; i < numbers.length; i++) {
if (i == 0) {
prefixProducts[i] = numbers[i];
} else {
prefixProducts[i] = prefixProducts[i - 1] * numbers[i];
}
}
// Generate suffix products
let suffixProducts = [];
numbers.reverse();
for (let i = 0; i < numbers.length; i++) {
if (i == 0) {
suffixProducts[i] = numbers[i];
} else {
suffixProducts[i] = suffixProducts[i - 1] * numbers[i];
}
}
suffixProducts.reverse();
numbers.reverse();
// Generate result from the product of prefixes and suffixes
let result = [];
for (let i = 0; i < numbers.length; i++) {
if (i == 0) {
result[i] = suffixProducts[i + 1];
} else if (i == numbers.length - 1) {
result[i] = prefixProducts[i - 1];
} else {
result[i] = prefixProducts[i - 1] * suffixProducts[i + 1];
}
}
return result;
};
const printSeparator = (size = 64) => {
console.log(Array(size).join('-'));
};
const evaluate = (input, expectedOutput) => {
const result = getProductOfAllOtherElements(input);
console.log(`Input: ${JSON.stringify(input)}`);
console.log(`ExpectedOutput: ${JSON.stringify(expectedOutput)}`);
console.log(`Result: ${JSON.stringify(result)}`);
console.log(`IsCorrect: ${JSON.stringify(result) == JSON.stringify(expectedOutput)}`);
};
printSeparator();
evaluate([3, 2, 1], [2, 3, 6]);
printSeparator();
evaluate([1, 2, 3, 4, 5], [120, 60, 40, 30, 24]);
printSeparator();
To embed this project on your website, copy the following code and paste it into your website's HTML: