From f08688ea2f7643abc23b7dc6778a57375e66a403 Mon Sep 17 00:00:00 2001 From: IvanStanchev <48806861+IvanStanchev@users.noreply.github.com> Date: Wed, 12 Jan 2022 16:56:24 +0200 Subject: [PATCH 1/2] Uploading Homework 1 Uploading first homework from pull request with conflicts (#42) --- .../14_Ivan_Stanchev/01_check_circles.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 homeworks/14_Ivan_Stanchev/01_check_circles.py diff --git a/homeworks/14_Ivan_Stanchev/01_check_circles.py b/homeworks/14_Ivan_Stanchev/01_check_circles.py new file mode 100644 index 0000000..809f2f9 --- /dev/null +++ b/homeworks/14_Ivan_Stanchev/01_check_circles.py @@ -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" From 340f1bb0f92d1dde4e30d27dc151be12c8f0861b Mon Sep 17 00:00:00 2001 From: IvanStanchev <48806861+IvanStanchev@users.noreply.github.com> Date: Thu, 13 Jan 2022 01:15:46 +0200 Subject: [PATCH 2/2] Upload Homework 2 Uploading second homework --- homeworks/14_Ivan_Stanchev/01_picture.py | 46 ++++++++++++++++++++++++ homeworks/14_Ivan_Stanchev/02_stairs.py | 11 ++++++ homeworks/14_Ivan_Stanchev/03_replace.py | 14 ++++++++ homeworks/14_Ivan_Stanchev/README.md | 28 +++++++++++++++ 4 files changed, 99 insertions(+) create mode 100644 homeworks/14_Ivan_Stanchev/01_picture.py create mode 100644 homeworks/14_Ivan_Stanchev/02_stairs.py create mode 100644 homeworks/14_Ivan_Stanchev/03_replace.py create mode 100644 homeworks/14_Ivan_Stanchev/README.md diff --git a/homeworks/14_Ivan_Stanchev/01_picture.py b/homeworks/14_Ivan_Stanchev/01_picture.py new file mode 100644 index 0000000..cd56dc1 --- /dev/null +++ b/homeworks/14_Ivan_Stanchev/01_picture.py @@ -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) \ No newline at end of file diff --git a/homeworks/14_Ivan_Stanchev/02_stairs.py b/homeworks/14_Ivan_Stanchev/02_stairs.py new file mode 100644 index 0000000..3e49638 --- /dev/null +++ b/homeworks/14_Ivan_Stanchev/02_stairs.py @@ -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)) \ No newline at end of file diff --git a/homeworks/14_Ivan_Stanchev/03_replace.py b/homeworks/14_Ivan_Stanchev/03_replace.py new file mode 100644 index 0000000..d38865f --- /dev/null +++ b/homeworks/14_Ivan_Stanchev/03_replace.py @@ -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')] \ No newline at end of file diff --git a/homeworks/14_Ivan_Stanchev/README.md b/homeworks/14_Ivan_Stanchev/README.md new file mode 100644 index 0000000..5c05b7e --- /dev/null +++ b/homeworks/14_Ivan_Stanchev/README.md @@ -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')] \ No newline at end of file