Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions Answers/40130112063/sparse.py
Original file line number Diff line number Diff line change
@@ -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()
10 changes: 10 additions & 0 deletions Answers/40130112063/task1.py
Original file line number Diff line number Diff line change
@@ -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)
10 changes: 10 additions & 0 deletions Answers/40130112063/task2.py
Original file line number Diff line number Diff line change
@@ -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)
21 changes: 21 additions & 0 deletions Answers/40130112063/task3.py
Original file line number Diff line number Diff line change
@@ -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])
36 changes: 36 additions & 0 deletions Answers/40130112063/task4.py
Original file line number Diff line number Diff line change
@@ -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)
13 changes: 13 additions & 0 deletions Answers/40130112063/task5.py
Original file line number Diff line number Diff line change
@@ -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)