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
36 changes: 36 additions & 0 deletions homeworks/14_Ivan_Stanchev/01_check_circles.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
from math import sqrt

def check_circles(c1_center, c1_radius, c2_center, c2_radius):
x1, y1 = c1_center
x2, y2 = c2_center
distance = sqrt((x1-x2)**2 + (y1-y2)**2)
sum_of_radii = c1_radius + c2_radius

#MATCHING
if(c1_center == c2_center and c1_radius == c2_radius):
return "MATCHING"

# TOUCHING
if d == sum_of_radii:
return "TOUCHING"
elif d < sum_of_radii:

# CONTAINING
if d + c2_radius <= c1_radius:
return "First circle contains second one"

elif d + c1_radius <= c2_radius:
return "Second circle contains first one"

# INTERSECTING
else:
return "INTERSECTING"
# NO_COMMON
elif d > sum_of_radii:
return "NO_COMMON"

elif d < sum_of_radii:
if d + c2_radius <= c1_radius:
return "Circle one contains circle two"
elif d + c1_radius <= c2_radius:
return "Circle two contains circle one"
46 changes: 46 additions & 0 deletions homeworks/14_Ivan_Stanchev/01_picture.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
def calculate_area(list, row, column):
if row not in range(len(list)) or column not in range(len(list)):
return 0, 0
if list[row][column] == 0:
return 0, 0

sum = list[row][column]
list[row][column] = 0
pixels = 1

for i in range(row-1, row+2):
for j in range(column-1, column+2):
if (i == row) and (j == column):
continue
pixels_to_be_added, sum_to_be_added = calculate_area(list, i, j)
pixels += pixels_to_be_added
sum += sum_to_be_added

return pixels, sum


def avg_brightness(list):
copy = list
arr = []
for row_index, row in enumerate(copy):
for column_index, element in enumerate(row):
if element == 0:
continue

pixels, sum = calculate_area(copy, row_index, column_index)
arr.append([ sum/pixels, row_index, column_index])

arr.sort()
for i in range (0,len(arr)):
print(f"({arr[i][1]}, {arr[i][2]}) {(arr[i][0]):.2f}")


matrix = [
[1, 2, 3, 4, 5, 6],
[0, 0, 0, 0, 0, 0],
[248, 0, 148, 184, 0, 255],
[0, 0, 85, 0, 84, 0],
[238, 0, 0, 0, 0, 255],
[68, 0, 174, 0, 17, 0]
]
avg_brightness(matrix)
11 changes: 11 additions & 0 deletions homeworks/14_Ivan_Stanchev/02_stairs.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
N = int(input("Enter how many stairs you will climb: "))
while(N < 2):
N = int(input("Enter how many stairs you will climb: "))

def num_ways(N):

if N <= 2:
return max(0, N)
return num_ways(N-1) + num_ways(N-2)

print(num_ways(N))
14 changes: 14 additions & 0 deletions homeworks/14_Ivan_Stanchev/03_replace.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
def replace(list, find, replacee):
counter = 0
for i in list:
if (type(i) != int) and (len(i) > 1):
list2 = list[counter]
replace(list2, find, replacee)
if i == find:
list[counter] = replacee
counter = counter + 1
return list

list = [ 'a', 1, [ ['a', 'b'], 1], ([1, 3, 'a'], 'b')]
res = replace(list, 'a', 'c')
print(res) # => [ 'c', 1, [ ['c', 'b'], 1], ([1, 3, 'c'], 'b')]
28 changes: 28 additions & 0 deletions homeworks/14_Ivan_Stanchev/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
Задача 1:
Графично изображение е представено с матрица от m реда и n колони. Клетките на
матрицата, във всяка от които е записана целочислена стойност от 0 до 255, съответстват на пикселите
в графичното изображение (формат grayscale).
Всяка клетка в матрицата има до 8 съседа — до 4 по диагонал, до два, разположени хоризонтално,
и до два – вертикално.
Област в изображението е непрекъсната последователност от съседни клетки с ненулеви стойности.
Черните елементи, представени със стойност 0, се считат за контури на областите. Така, една област се
определя от граница от нулеви елементи и границите на матрицата.
Дефинирайте функция, `avg_brightness` която получава като аргумент матрица от посочения вид и
извежда на стандартния изход средната яркост на всяка от областите, сортирани в низходящ
ред според яркостта. Средна яркост на дадената област се изчислява като средно-аритметично на
стойностите на всички клетки (пиксели), образуващи областта. За всяка област изведете координатите
на една произволна клетка от нея и средната яркост на областта.

Задача 2:
Дадена е стълба с N >= 2 стъпала. Стоим в началото на стълбата и можем да качим 1 или 2 стъпала наведнъж.
Да се напише функция, `num_ways` която по подадено N връща броя на начини по които можем да изкачим стълбата - т.е. да стъпим на N-тото стъпало.
Пример: при N = 2 функцията връща 2 - можем да минем по всяко стъпало (начин 1) или да се качим директно на второто (начин 2)
при N=3 функцията връща 3 - можем да качим трите стъпала едно по едно (начин 1), да изкачим 1 стъпало и осналите наведнъж (начин 2) или да изкачим първите 2 стъпала наведнъж и после третото (начин 3)


Задача 3:
Даден е Python списък от елементи - низове, числа, списъци (вкл. като този), наредени н-торки. Да се напише функция `replace` с 3 аргумента - `list`, `find`, `replace`, където list e писък от типа по-горе, a find и replace са низове. Функцията връща нова версия на `list` в която всяко срещане на `find` e заменено с `replace`.
Пример:
list = [ 'a', 1, [ ['a', 'b'], 1], ([1, 3, 'a'], 'b')]
res = replace(list, 'a', 'c')
print(res) # => [ 'c', 1, [ ['c', 'b'], 1], ([1, 3, 'c'], 'b')]