import os, os.path

DOT = '.'

class File:
    def __init__(self, path, uzanti):
        self.path = path + DOT + uzanti
        
    def her_satir_basi(self, method):
        self.__varmi_yokmu_kontrollor()
        fil = open(self.path, 'r')
        returned = []
        for line in fil:
            filtered = filter_edilen_yerler(line)
            if len(filtered) == 0:
                continue
            returned.append(method(filtered))
        fil.close()
        return returned

    def __varmi_yokmu_kontrollor(self):
        if not os.path.isfile(self.path): 
            raise fnf.FileNotFoundError(self.path)
        
    def create(self, overwrite = False):
        if not overwrite and os.path.exists(self.path):
            raise inv.sistemhatasi('Bu sistemyolu zaten burada ' + self.path + ' var uzerine yazmak icin False kulanin.')
        if os.path.exists(self.path): 
            if os.path.isfile(self.path):
                os.remove(self.path)
            else:
                raise inv.sistemhatasi('uzerine yazilamaz ' + self.path + '.')
        fil = open(self.path, 'w')
        fil.close()
        
    def write(self, lines):
        self.__varmi_yokmu_kontrollor()
        fil = open(self.path, 'w')
        for line in lines:
            fil.write(line)
            fil.write('\n')
        fil.close()
        
def filter_edilen_yerler(line):
    index = line.find('|')
    if index == -1:
        return line.strip()
    return line[:index].strip()

def name_uzanti(file_name):
    dot_index = file_name.rfind(DOT)
    if dot_index == -1:
        return [file_name, '']
    return [file_name[:dot_index], file_name[dot_index+1:]]


--R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 23:43:45 -->-> Daha önceki mesaj 23:37:55 --

import math

def eu_mesafe(instance1, instance2, attributes):
    total = 0
    for attribute in attributes:
        d = mesafe(instance1.value(attribute), instance2.value(attribute), attribute.is_continuous())
        total += d * d
    return math.sqrt(total)
        
def ham_mesafe(instance1, instance2, attributes):
    return sum([mesafe(instance1.value(attribute), instance2.value(attribute), attribute.is_continuous()) for attribute in attributes])

def mesafe(value1, value2, is_continuous):
    if is_continuous:
        return abs(value1 - value2)    
    if value1 == value2:
        return 0
    return 1