diff --git a/README.md b/README.md index 714ee32..afc6c6f 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Вот сюда нужно будет в первой работе с гитом добавит свое ФИО -## ФИО +## Вераксо Марк Владимирович ## Работа с репозиторием diff --git a/python/src/__init__.py b/python/src/__init__.py index e69de29..9b59b4d 100644 --- a/python/src/__init__.py +++ b/python/src/__init__.py @@ -0,0 +1,42 @@ +class Cat: + def __init__ (self, name: str, age: int, breed: str): + self.__name = name + self.__age = age + self.__breed = breed + self.check_age(age) + + def check_age(self, age:int): + if age < 0 or age > 18: + print(f"Вы указали не верный возраст вашего питомца!") + else: + self.__age = age + + @property + def name(self): + return self.__name + + @name.setter + def name(self, n: str): + self.__name = n + + @property + def age(self): + return self.__age + @age.setter + def age(self, a: int): + self.check_age(a) + self.__age = a + + @property + def breed(self): + return self.__breed + + @breed.setter + def breed(self, b: str): + self.__breed = b + + def output(self): + print(f"Имя вашего питомца - {self.__name}") + print(f"Возраст вашего питомца - {self.__age}") + print(f"Порода вашего питомца - {self.__breed}") + diff --git a/python/src/main.py b/python/src/main.py index e37a77c..cbdd461 100644 --- a/python/src/main.py +++ b/python/src/main.py @@ -1,7 +1,5 @@ -def summ(a: int, b: int) -> int: - return a + b - +import __init__ if __name__ == "__main__": - print("Hello world") - print(summ(3, 4)) + cat1 = __init__.Cat("Пушок", 5, "Русская голубая") + cat1.output() diff --git a/python/src/module2/task1.py b/python/src/module2/task1.py new file mode 100644 index 0000000..d656fba --- /dev/null +++ b/python/src/module2/task1.py @@ -0,0 +1,17 @@ +N = int(input()) +nums = list(map(int, input().split())) + +def bubbles(nums): + len_nums = len(nums) + s = 0 + for i in range(len_nums - 1): + for j in range(len_nums - i - 1): + if nums[j] > nums[j+1]: + nums[j], nums[j+1] = nums[j+1], nums[j] + s += 1 + print(*nums) + if s == 0: + print(0) + +bubbles(nums) + diff --git a/python/src/module2/task2.py b/python/src/module2/task2.py new file mode 100644 index 0000000..9a39c57 --- /dev/null +++ b/python/src/module2/task2.py @@ -0,0 +1,23 @@ +def bubble(numbers): + n = len(numbers) + for i in range(n): + for j in range(0, n-i-1): + if numbers[j][1] < numbers[j+1][1]: + numbers[j], numbers[j+1] = numbers[j+1], numbers[j] + if numbers[j][1] == numbers[j+1][1]: + numbers[j], numbers[j + 1] = numbers[j + 1], numbers[j] + if numbers[j][0] > numbers[j+1][0]: + numbers[j], numbers[j + 1] = numbers[j + 1], numbers[j] + + return numbers + +n = int(input()) +nums = [] +for _ in range(n): + num1, num2 = map(int, input().split()) + nums.append((num1, num2)) + +sort = bubble(nums) +for nums in sort: + print(nums[0], nums[1]) + diff --git a/python/src/module2/task3.py b/python/src/module2/task3.py new file mode 100644 index 0000000..e2f7409 --- /dev/null +++ b/python/src/module2/task3.py @@ -0,0 +1,33 @@ +nums = list(map(int, input().split())) +def merge_sort(nums): + n = len(nums) + if len(nums) == 1: + return nums + if len(nums) == 0: + return nums + left_half = merge_sort(nums[:len(nums) // 2]) + right_half = merge_sort(nums[len(nums) // 2:]) + i = j = k = 0 + zlist = [0] * len(nums) + while i < len(left_half) and j < len(right_half): + if left_half[i] <= right_half[j]: + zlist[k] = left_half[i] + i += 1 + else: + zlist[k] = right_half[j] + j += 1 + k += 1 + while i < len(left_half): + zlist[k] = left_half[i] + i += 1 + k += 1 + while j < len(right_half): + zlist[k] = right_half[j] + j += 1 + k += 1 + for i in range(len(nums)): + nums[i] = zlist[i] + return nums + +merge_sort(nums) +print(nums) diff --git a/python/src/module2/task4.py b/python/src/module2/task4.py new file mode 100644 index 0000000..ea90b2a --- /dev/null +++ b/python/src/module2/task4.py @@ -0,0 +1,30 @@ +def merge_sort_inversion_count(arr): + if len(arr) <= 1: + return arr, 0 + mid = len(arr) // 2 + left, inv_left = merge_sort_inversion_count(arr[:mid]) + right, inv_right = merge_sort_inversion_count(arr[mid:]) + sorted_arr, inversions = merge(left, right) + return sorted_arr, inversions + inv_left + inv_right + +def merge(left, right): + result = [] + inv = 0 + i = j = 0 + while i < len(left) and j < len(right): + if left[i] <= right[j]: + result.append(left[i]) + i += 1 + else: + result.append(right[j]) + j += 1 + inv += len(left) - i + result += left[i:] + result += right[j:] + return result, inv + +if __name__ == "__main__": + N = int(input()) + nums = list(map(int, input().split())) + sorted_nums, inversions = merge_sort_inversion_count(nums) + print(inversions diff --git a/python/src/module2/task5.py b/python/src/module2/task5.py new file mode 100644 index 0000000..93870a6 --- /dev/null +++ b/python/src/module2/task5.py @@ -0,0 +1,4 @@ +N = int(input()) +nums = list(map(int, input().split())) +array = set(nums) +print(len(array)) diff --git a/python/src/module2/task6.py b/python/src/module2/task6.py new file mode 100644 index 0000000..26ceafb --- /dev/null +++ b/python/src/module2/task6.py @@ -0,0 +1,28 @@ +def purchase_automation(): + types = int(input()) + storage = list(map(int, input().split())) + total = int(input()) + orders = list(map(int, input().split())) + + orders_count = {} + for order in orders: + if order in orders_count: + orders_count[order] += 1 + else: + orders_count[order] = 1 + + search_result = [] + for item in range(types): + if item + 1 in orders_count: + if storage[item] < orders_count[item+1]: + search_result.append("yes") + else: + search_result.append("no") + else: + search_result.append("no") + + return search_result + +output = purchase_automation() +for line in output: + print(line) diff --git a/python/src/module2/task7.py b/python/src/module2/task7.py new file mode 100644 index 0000000..d3d0c48 --- /dev/null +++ b/python/src/module2/task7.py @@ -0,0 +1,49 @@ +N = int(input()) +nums = [int(input()) for _ in range(N)] +def bucket_sort(nums, exp, buckets): + dlina = N + output = [0] * dlina + counter = [0] * 10 + + for i in range(dlina): + index_of_1_bucket = nums[i] // exp + counter[index_of_1_bucket % 10] += 1 + + for i in range(1, 10): + counter[i] += counter[i - 1] + + for i in range(dlina - 1, -1, -1): + index_of_2_bucket = nums[i] // exp + output[counter[index_of_2_bucket % 10] - 1] = nums[i] + counter[index_of_2_bucket % 10] -= 1 + + for i in range(dlina): + nums[i] = output[i] + + print("Bucket status:") + for i in range(10): + print(f"Bucket {i}: {', '.join(str(num) for num in buckets[i])}") + +def secondary_sort(nums): + max_num = max(nums) + exp = 1 + buckets = [[] for _ in range(10)] + + print("Initial array:") + print(", ".join(str(num) for num in nums)) + + while max_num // exp > 0: + for num in nums: + buckets[num // exp % 10].append(num) + + bucket_sort(nums, exp, buckets) + + for i in range(10): + buckets[i] = [] + + exp *= 10 + + print("Sorted array:") + print(", ".join(str(num) for num in nums)) + +secondary_sort(nums)