def print_matrix(matrix): row_num = 0 print("\t\t [", end = "") for i in range(len(matrix)): if row_num == 0: print("[", end="") else: print("\t\t [", end="") for j in range(len(matrix[i])): print(matrix[i][j], end="") if j != len(matrix[i]) - 1: print(", ", end="") if row_num != len(matrix) - 1: print("]", end="") else: print("]]", end="") row_num += 1 if i != len(matrix) - 1: print(",", end=" ") print() def spiral_order(matrix): rows, cols = len(matrix), len(matrix[0]) row, col = 0, -1 direction = 1 result = [] while rows > 0 and cols > 0: for _ in range(cols): col += direction result.append(matrix[row][col]) rows -= 1 for _ in range(rows): row += direction result.append(matrix[row][col]) cols -= 1 direction *= -1 return result # Driver code def main(): inputs = [[[1]], [[6], [2]], [[2, 14, 8], [12, 7, 14]], [[3, 1, 1], [15, 12, 13], [4, 14, 12], [10, 5, 11]], [[10, 1, 14, 11, 14], [13, 4, 8, 2, 13], [10, 19, 1, 6, 8], [20, 10, 8, 2, 12], [15, 6, 8, 8, 18]]] for i in range(len(inputs)): print(i + 1, ".\tMatrix:", sep="") print_matrix(inputs[i]) print("\n\tSpiral order:", spiral_order(inputs[i])) print("-" * 100) if __name__ == "__main__": main()