def make_matrix(num_rows, num_columns, entry_fn):
    """
    creates a num_rows * num_columns matrix whose (i,j) entry is an entry_fn
    """
    return [[entry_fn(i, j) for j in range(num_columns)] for i in range(num_rows)]