const getProductOfAllOtherElements = (numbers: number[]) => {
// Generate prefix products
let prefixProducts: number[] = [];
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: number[] = [];
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: number[] = [];
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: number = 64) => {
console.log(Array(size).join('-'));
};
const evaluate = (input: number[], expectedOutput: number[]) => {
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: