using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
static int[] ColumnProducts(int[][] matrix)
{
// Determine the maximum number of columns
int maxCols = matrix.Max(row => row.Length);
var products = new List<int>();
for (int col = 0; col < maxCols; col++) {
// Collect values that exist in this column
var colValues = matrix
.Where(row => col < row.Length)
.Select(row => row[col]);
// Multiply them together
int product = colValues.Aggregate(1, (acc, v) => acc * v);
products.Add(product);
}
return products.ToArray();
}
static void Main()
{
int[][] matrix =
{
new[] { 1, 2, 3 },
new[] { 4, 5 },
new[] { 6, 7, 8, 9 }
};
int[] result = ColumnProducts(matrix);
Console.WriteLine("Column products: " + string.Join(", ", result));
}
}
/*
run:
Column products: 24, 70, 24, 9
*/