<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def table(big_array):
 """Return a formatted table, generated from arrays representing columns. The function requires a 2-dimensional array, where each array is a column of the table. This will be used to generate a formatted table in string format. The number of items in each columns does not need to be consitent. '| Name | User |\\n| ------- | ------- |\\n| abactel | 4b4c73l |\\n| Bob | |' When displayed using `print`, this will appear: | Name | User | | ------- | ------- | | abactel | 4b4c73l | | Bob | | """

    number_of_columns = len(big_array)
    number_of_rows_in_column = [len(column) for column in big_array]
    max_cell_size = [len(max(column, key=len)) for column in big_array]
    table = []

    # title row
    row_array = [column[0] for column in big_array]
    table.append(table_row(row_array, pad=max_cell_size))

    # delimiter row
    row_array = []
    for column_number in range(number_of_columns):
        row_array.append("-" * max_cell_size[column_number])
    table.append(table_row(row_array, pad=max_cell_size))

    # body rows
    for row in range(1, max(number_of_rows_in_column)):
        row_array = []
        for column_number in range(number_of_columns):
            if number_of_rows_in_column[column_number] > row:
                row_array.append(big_array[column_number][row])
            else:
                row_array.append()
        table.append(table_row(row_array, pad=max_cell_size))
    return "\n".join(table)