Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- import math
- def is_in_circle(x0,y0,r):
- if abs(x0) > 10 ** 9 or abs(y0) > 10 ** 9 or 1 > r or r > 1000: # ограничения по условию
- print('Значения вне допустимого интервала')
- sys.exit() # выход из программы
- count = 0
- for x in range(int(math.floor(x0 - r)), int(math.ceil(x0 + r)) + 1): # координаты x от левого до правого
- for y in range(int(math.floor(y0 - r)), int(math.ceil(y0 + r)) + 1): # координаты y от нижнего до верхнего
- if (x - x0) ** 2 + (y - y0) ** 2 <= r ** 2: # формула вхождения точки в окружность
- count += 1
- return count
- def Nata_is_in_circle(x,y,r):
- upper_right = [math.ceil(x + r), math.ceil(y + r)]
- lower_left = [math.ceil(x - r), math.ceil(y - r)]
- m_coordinates = []
- counter = 0
- xy = []
- i = 1
- step = math.ceil(r) * 2 + 1
- for i in range(abs(int(lower_left[1]) - int(upper_right[1])) + 1):
- for j in range(abs(int(lower_left[0]) - int(upper_right[0])) + 1):
- point = [math.ceil(x - r) + j, math.ceil(y - r) + i]
- m_coordinates.append(point)
- for num in range(len(m_coordinates)):
- x_num = int(m_coordinates[num][0])
- y_num = int(m_coordinates[num][1])
- if (((x_num - x) ** 2) + ((y_num - y) ** 2)) <= (r ** 2):
- counter = counter + 1
- return counter
- test_cases = [(0, 0, 1),
- (1.4, 1.2, 5),
- (555.555, 444.444, 54.21245),
- (-124.23156, -421.412, 999.999)]
- errors = []
- for case in test_cases:
- if (is_in_circle(*case) != Nata_is_in_circle(*case)): # тут просто фишка такая, при вызове автоматически раскидается из case
- errors.append('Ошибка для случая %s' % case)
- if len(errors) > 0:
- print(errors)
- else:
- print('Ошибок нет, Ната - молодец!')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement