Advertisement
Guest User

Untitled

a guest
Aug 15th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.04 KB | None | 0 0
  1. import sys
  2. import math
  3.  
  4. def is_in_circle(x0,y0,r):
  5.     if abs(x0) > 10 ** 9 or abs(y0) > 10 ** 9 or 1 > r or r > 1000:  # ограничения по условию
  6.         print('Значения вне допустимого интервала')
  7.         sys.exit()  # выход из программы
  8.     count = 0
  9.     for x in range(int(math.floor(x0 - r)), int(math.ceil(x0 + r)) + 1):  # координаты x от левого до правого
  10.         for y in range(int(math.floor(y0 - r)), int(math.ceil(y0 + r)) + 1):  # координаты y от нижнего до верхнего
  11.             if (x - x0) ** 2 + (y - y0) ** 2 <= r ** 2:  # формула вхождения точки в окружность
  12.                 count += 1
  13.     return count
  14.  
  15. def Nata_is_in_circle(x,y,r):
  16.     upper_right = [math.ceil(x + r), math.ceil(y + r)]
  17.     lower_left = [math.ceil(x - r), math.ceil(y - r)]
  18.     m_coordinates = []
  19.     counter = 0
  20.     xy = []
  21.     i = 1
  22.     step = math.ceil(r) * 2 + 1
  23.     for i in range(abs(int(lower_left[1]) - int(upper_right[1])) + 1):
  24.         for j in range(abs(int(lower_left[0]) - int(upper_right[0])) + 1):
  25.             point = [math.ceil(x - r) + j, math.ceil(y - r) + i]
  26.             m_coordinates.append(point)
  27.     for num in range(len(m_coordinates)):
  28.         x_num = int(m_coordinates[num][0])
  29.         y_num = int(m_coordinates[num][1])
  30.         if (((x_num - x) ** 2) + ((y_num - y) ** 2)) <= (r ** 2):
  31.             counter = counter + 1
  32.     return counter
  33.  
  34. test_cases = [(0, 0, 1),
  35.               (1.4, 1.2, 5),
  36.               (555.555, 444.444, 54.21245),
  37.               (-124.23156, -421.412, 999.999)]
  38.  
  39. errors = []
  40. for case in test_cases:
  41.     if (is_in_circle(*case) != Nata_is_in_circle(*case)): # тут просто фишка такая, при вызове автоматически раскидается из case
  42.         errors.append('Ошибка для случая %s' % case)
  43. if len(errors) > 0:
  44.     print(errors)
  45. else:
  46.     print('Ошибок нет, Ната - молодец!')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement