diff --git a/Answers/40130112063/sparse.py b/Answers/40130112063/sparse.py new file mode 100644 index 0000000..e0d46b4 --- /dev/null +++ b/Answers/40130112063/sparse.py @@ -0,0 +1,59 @@ +class SparseMatrix: + def __init__(self, matrix): + self.rows = len(matrix) + self.cols = len(matrix[0]) + self.sparse_matrix = self.create_sparse(matrix) + + def create_sparse(self, matrix): + sparse = [] + for i in range(self.rows): + for j in range(self.cols): + if matrix[i][j] != 0: + sparse.append((i, j, matrix[i][j])) + return sparse + + def transpose(self): + transposed_sparse = [] + for row, col, val in self.sparse_matrix: + transposed_sparse.append((col, row, val)) + transposed_sparse.sort() + return transposed_sparse + + + def change_element(self, row, col, new_value): + index = None + for i, (r, c, val) in enumerate(self.sparse_matrix): + if r == row and c == col: + index = i + break + if index is not None: + self.sparse_matrix[index] = (row, col, new_value) + else: + self.sparse_matrix.append((row, col, new_value)) + + def display(self): + sparse_matrix = [[0] * self.cols for _ in range(self.rows)] + for row, col, val in self.sparse_matrix: + sparse_matrix[row][col] = val + for row in sparse_matrix: + print(row) + + +normal_matrix = [ + [0, 0, 3, 0], + [0, 0, 0, 0], + [0, 0, 0, 5] +] + +sparse = SparseMatrix(normal_matrix) + +print("Original Matrix:") +sparse.display() + +print("\nTransposed Matrix:") +transposed = SparseMatrix(sparse.transpose()) +transposed.display() + +print("\nChanging an element at (0, 2) to 7:") +sparse.change_element(0, 2, 7) +sparse.display() diff --git a/Answers/40130112063/task1.py b/Answers/40130112063/task1.py new file mode 100644 index 0000000..8c801cc --- /dev/null +++ b/Answers/40130112063/task1.py @@ -0,0 +1,10 @@ +numbers = [5, 2, 0, 3, 1] + +n = len(numbers) + +real_sum = n * (n + 1) // 2 +numbers_sum = sum(numbers) +missing_number = real_sum - numbers_sum + +print("input :", numbers) +print("output: ", missing_number) \ No newline at end of file diff --git a/Answers/40130112063/task2.py b/Answers/40130112063/task2.py new file mode 100644 index 0000000..a74947b --- /dev/null +++ b/Answers/40130112063/task2.py @@ -0,0 +1,10 @@ +numbers = [1, 2, 3, 4, 5] +k = 2 +print(f"input : {numbers}, k = {k}") + +n = len(numbers) +k = k % n +numbers[:] = numbers[-k:] + numbers[:-k] + + +print("output :", numbers) \ No newline at end of file diff --git a/Answers/40130112063/task3.py b/Answers/40130112063/task3.py new file mode 100644 index 0000000..adb5fb8 --- /dev/null +++ b/Answers/40130112063/task3.py @@ -0,0 +1,21 @@ +numbers = [1, 1, 2, 2, 3, 4, 5, 5] +print("input: ", numbers) + +n = len(numbers) +temp_list = list(range(n)) + +i = 0 +for j in range(0, n-1): + if numbers[j] != numbers[j+1]: + temp_list[i] = numbers[j] + i += 1 + +temp_list[i] = numbers[n-1] +i += 1 + +for j in range(0, i): + numbers[j] = temp_list[j] + +n = i + +print("output : ", numbers[:n]) diff --git a/Answers/40130112063/task4.py b/Answers/40130112063/task4.py new file mode 100644 index 0000000..fa16f76 --- /dev/null +++ b/Answers/40130112063/task4.py @@ -0,0 +1,36 @@ +num1 = [1, 2, 3] +num2 = [2, 5, 6] + +print("inputs : ", "\nnum1 = ", num1, "\nnum2 = ", num2) + +n = len(num1) +m = len(num2) + +i = n - 1 +j = m - 1 +k = m + n - 1 + +num1.extend([0] * m) + +while i >= 0 and j >= 0: + if num1[i] >= num2[j]: + num1[k] = num1[i] + i -= 1 + else: + num1[k] = num2[j] + j -= 1 + k -= 1 + +while i >= 0: + num1[k] = num1[i] + k -= 1 + i -= 1 + + +while j >= 0: + num1[k] = num2[j] + k -= 1 + j -= 1 + + +print("num1 = ", num1) diff --git a/Answers/40130112063/task5.py b/Answers/40130112063/task5.py new file mode 100644 index 0000000..a255ad4 --- /dev/null +++ b/Answers/40130112063/task5.py @@ -0,0 +1,13 @@ +numbers = [-2, -1, -3, 4, -1, 2, 1, -5, 4] +print(numbers) + +max_so_far = numbers[0] +curr_max = numbers[0] +start = 0 +end = 0 + +for i in range(1, len(numbers)): + curr_max = max(numbers[i], curr_max + numbers[i]) + max_so_far = max(max_so_far, curr_max) + +print("output :", max_so_far)