SilverCompiler
Python
Input
Run
Clear
def dist(a,b): return ((a[0]-b[0])**2 + (a[1]-b[1])**2)**0.5 def srast(A, t): return sum([dist(xy,t) for xy in A]) def centr(A): return min([(srast(A,xy),xy) for xy in A]) def check(a,b) : if abs(a[0]-b[0]) < 0.9 and abs(a[1]-b[1]) < 0.9 : return True return False def main(var): fname = {1:'27_A.txt', 2:'27_b.txt'} df = [tuple(map(float, s.replace(',','.').split())) for s in open(fname[var])] cl ={1:[],2:[],3:[]} for xy in df : x,y = xy if var == 1 and y < 15 : cl[1].append(xy) elif var == 1 and y >= 15 : cl[2].append(xy) elif var == 2 and x >25 : cl[1].append(xy) elif var == 2 and y >22 : cl[2].append(xy) else : cl[3].append(xy) rez = {} for i in cl: if len(cl[i]) == 0 : continue rez[i] = centr(cl[i]) ans11 = [xy for xy in cl[i] if xy[1] < rez[i][1][1]] ans21 = [xy for xy in cl[i] if check(xy, rez[i][1])] if var == 1 :print(var, i, rez[i], len(ans11) ) if var == 2 :print(var, i, rez[i], len(ans21) ,len(cl[i])) if var == 1 :print(f'ans12 =', dist(rez[1][1],rez[2][1])*10000) if var == 2 : print(f'ans22 =', abs(rez[2][1][1] - rez[3][1][1])*10000) for var in [1,2]: main(var)