Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lab6 - classes on python #1

Open
wants to merge 5 commits into
base: Kochetkov_Kirill_Andreevich
Choose a base branch
from
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
41 changes: 41 additions & 0 deletions python/src/dish.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
class Dish:
def __init__(self, name: str, vid: str, price: int):
self.__name = name
self.__vid = vid
self.check_price(price)
self.__price = price

@property
def name(self) -> str:
return self.__name

@name.setter
def name(self, value: str):
self.__name = value

@property
def vid(self) -> str:
return self.__vid

@vid.setter
def vid(self, value: str):
self.__vid = value

@property
def price(self) -> int:
return self.__price

@price.setter
def price(self, value: int):
self.check_price(value)
self.__price = value

def check_price(self, price: int):
if price >= 5000 or price <= 0:
raise ValueError("Это блюдо вам не по карману")

@property
def info(self) -> str:
return f"""Цена: {self.price}
Название: {self.name}
Тип блюда: {self.vid}"""
8 changes: 4 additions & 4 deletions python/src/main.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
def summ(a: int, b: int) -> int:
return a + b
# type: ignore
import dish


if __name__ == "__main__":
print("Hello world")
print(summ(3, 4))
dish = dish.Dish("Борщ", "Суп", 500)
print(dish.info)
22 changes: 22 additions & 0 deletions python/src/module2/M2T1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
def bubble_sort(arr):
n = len(arr)
swapped = False

for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
swapped = True
print(' '.join(map(str, arr)))

if not swapped:
break

if not swapped:
print(0)


N = int(input())
arr = list(map(int, input().split()))

bubble_sort(arr)
11 changes: 11 additions & 0 deletions python/src/module2/M2T2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
N = int(input())

items = []
for _ in range(N):
id, cost = map(int, input().split())
items.append((cost, id))

sorted_items = sorted(items, key=lambda x: (-x[0], x[1]))

for cost, id in sorted_items:
print(id, cost)
43 changes: 43 additions & 0 deletions python/src/module2/M2T3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
def mergeSort(arr, start, end):
if end - start > 1:
mid = (start + end) // 2
mergeSort(arr, start, mid)
mergeSort(arr, mid, end)
merge(arr, start, mid, end)
return arr


def merge(arr, start, mid, end):
left = arr[start:mid]
right = arr[mid:end]
i = j = 0
k = start

while i < len(left) and j < len(right):
if left[i] <= right[j]:
arr[k] = left[i]
i += 1
else:
arr[k] = right[j]
j += 1
k += 1

while i < len(left):
arr[k] = left[i]
i += 1
k += 1

while j < len(right):
arr[k] = right[j]
j += 1
k += 1

print(f"{start + 1} {end} {arr[start]} {arr[end - 1]}")


N = int(input())
arr = list(map(int, input().split()))

sorted_arr = mergeSort(arr, 0, N)

print(' '.join(map(str, sorted_arr)))
38 changes: 38 additions & 0 deletions python/src/module2/M2T4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
def merge_sort(arr):
if len(arr) <= 1:
return arr, 0

mid = len(arr) // 2
left, inv_left = merge_sort(arr[:mid])
right, inv_right = merge_sort(arr[mid:])
merged, inv_merged = merge(left, right)

return merged, inv_left + inv_right + inv_merged


def merge(left, right):
merged = []
i = j = inv = 0
left_len = len(left)
right_len = len(right)

while i < left_len and j < right_len:
if left[i] <= right[j]:
merged.append(left[i])
i += 1
else:
merged.append(right[j])
j += 1
inv += left_len - i

merged.extend(left[i:])
merged.extend(right[j:])

return merged, inv


n = int(input())
arr = list(map(int, input().split()))

_, inv = merge_sort(arr)
print(inv)
4 changes: 4 additions & 0 deletions python/src/module2/M2T5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
N = int(input())
numbers = set(map(int, input().split()))

print(len(numbers))
26 changes: 26 additions & 0 deletions python/src/module2/M2T6.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
def read_input():
n = int(input())
stock = list(map(int, input().split()))
k = int(input())
orders = list(map(int, input().split()))
return n, stock, k, orders


def process_orders(n, stock, k, orders):
order_count = [0] * n
for order in orders:
order_count[order - 1] += 1

for i in range(n):
if stock[i] < order_count[i]:
print('yes')
else:
print('no')


def res():
n, stock, k, orders = read_input()
process_orders(n, stock, k, orders)


res()
35 changes: 35 additions & 0 deletions python/src/module2/M2T7.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
def radix_sort_merge(arr):
max_len = max(len(num) for num in arr)
for i in range(max_len - 1, -1, -1):
buckets = [[] for _ in range(10)]
for num in arr:
digit = int(num[i]) if i < len(num) else 0
buckets[digit].append(num)

print("Phase", max_len - i)
for j in range(10):
print(f"Bucket {j}:", ', '.join(buckets[j])
if buckets[j] else 'empty')
print("**********")

arr = [num for bucket in buckets for num in bucket]

return arr


def main():
n = int(input())
arr = [input().strip() for _ in range(n)]

print("Initial array:")
print(', '.join(arr))
print("**********")

sorted_arr = radix_sort_merge(arr)

print("Sorted array:")
print(', '.join(sorted_arr))


if __name__ == "__main__":
main()
37 changes: 0 additions & 37 deletions python/tests/test_main.py

This file was deleted.