def list_as_precedence_matrix(a_response): # Initialize to zero return_matrix = [[0 for row in range(NUMBER_OF_FRAGMENTS)] for column in range(NUMBER_OF_FRAGMENTS)] # Foreach number 'n1' in a_response: # Foreach number 'n2' that comes after 'n1' in a_response: # return_matrix[n1][n2] = 1 for index_of_first in range(len(a_response) - 1): for index_of_second in range(index_of_first + 1, len(a_response)): value1, value2 = int(a_response[index_of_first]), int(a_response[index_of_second]) return_matrix[value1 - 1][value2 - 1] = 1 # Return the response matrix return return_matrix def pointwise_product(a_matrix, a_second_matrix): return [[a_matrix[row][column] * a_second_matrix[row][column] for column in range(NUMBER_OF_FRAGMENTS)] for row in range(NUMBER_OF_FRAGMENTS)] # NOTE: For this assignment, you really only have to calculate the products # for the cells in the upper triangle. This is because you're only summing # the cells in the upper triangle. I've included code that would do just # that, but I wouldn't turn it in because it doesn't return a true pointwise # product. # Initialize to zero return_matrix = [[0 for row in range(NUMBER_OF_FRAGMENTS)] for column in range(NUMBER_OF_FRAGMENTS)] # Calculate the products for cells in the upper triangle for row in range(NUMBER_OF_FRAGMENTS): for column in range(row + 1, NUMBER_OF_FRAGMENTS): return_matrix[row][column] = a_matrix[row][column] * a_second_matrix[row][column] def sum_of_upper_triangle(a_matrix): sum_returned = 0 # Foreach row in a_matrix: # Foreach column in row, where column starts at row + 1: # sum += a_matrix[row][column] for row in range(NUMBER_OF_FRAGMENTS): for column in range(row + 1, NUMBER_OF_FRAGMENTS): sum_returned += a_matrix[row][column] return sum_returned