Войти
или
Зарегистрироваться
Курсы
Учебник
Учебник 2.0
ОГЭ/ЕГЭ
Олимпиады
Рубрикатор
Компилятор
Онлайн Компилятор
Компилятор Python (lite)
Редактор HTML Code
Статья Автор:
Герасименко Фёдор
27-ая Задание Питон
import turtle def dist(p, q): x1 = p[0] y1 = p[1] x2 = q[0] y2 = q[1] return ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5 def Calc(p): ans = 0 val = 10 ** 10 for c in range(len(p)): s = 0 for el in p: s += dist(p[c], el) if s < val: val = s ans = c return p[ans] f = open('input.txt') p = [list(map(float, s.split())) for s in f] f.close() cnt = 3 clusters = [[] for i in range(cnt)] centers = [(6, 6, 0), (7.5, 6, 0), (8.8, 4.7, 1), (10, 4.5, 1), (8, 9, 2), (9, 9, 2)] #centers = [(6.5, 2, 0), (7.5, 2.5, 0), (8.5, 5, 1), (9.5, 5, 1)] for el in p: pos = -1 val = 0 for i in range(len(centers)): c = centers[i] if pos == -1 or dist(c, el) < val: pos = i val = dist(c, el) clusters[centers[pos][2]].append(el) turtle.penup() turtle.tracer(0) m = 20 colors = ['green', 'red', 'blue', 'yellow'] for i in range(len(clusters)): for el in clusters[i]: turtle.goto(el[0] * m, el[1] * m) turtle.dot(colors[i]) turtle.done() ans = [] for i in range(len(clusters)): ans.append(Calc(clusters[i])) sumx = 0 sumy = 0 for el in ans: sumx += el[0] sumy += el[1] print((sumx / len(clusters)) * 10000, (sumy / len(clusters)) * 10000) #40627.39722899612 8195.372368473281 #79148.54156806704 36567.31447562716
×
Чтобы оставить комментарий нужна авторизация
Печать