from math import floor def protein_ratio(p0, p1): length = 0 if len(p0) > len(p1): length = len(p1) else: length = len(p0) miaus = [] for n in range(0, length): miau = p0[0] - p1[0] if miau < 0: miau = -(miau) miaus.append(miau) protein_ratio = 0 for miau in miaus: if miau > protein_ratio: protein_ratio = miau return protein_ratio f = open("input.txt", "r") lines = f.readlines() proteins_by_animal = dict() animals = [] current_animal = "" for line in lines: if "-" not in line: if line != "\n": # remove newline from name animal = line[0:-1] current_animal = animal animals.append(animal) else: codons = [] current_codon = [] base_pairs = line.split("-") for pair in base_pairs: current_codon.append(pair[0:1]) if len(current_codon) == 3: codons.append(current_codon) current_codon = [] proteins = [] current_protein = [] for ic, codon in enumerate(codons): # extra "codon =="s required if codon == ['T', 'A', 'G'] or codon == ['T', 'G', 'A'] or codon == ['T', 'A', 'A']: proteins.append(current_protein) current_protein = [] else: aminoacid = 0 for ib, base in enumerate(codon): number = 0 if base == 'G': number = 1 elif base == 'C': number = 2 elif base == 'T': number = 3 aminoacid += number * 4^(2 - ib) current_protein.append(aminoacid) proteins_by_animal[current_animal] = proteins disharmonics = dict() for animal in proteins_by_animal: if animal != "Eule": ratios = [] for eule_protein in proteins_by_animal["Eule"]: for other_protein in proteins_by_animal[animal]: ratios.append(protein_ratio(eule_protein, other_protein)) average = 0 ratio_sum = 0 for ratio in ratios: ratio_sum += ratio average = floor(ratio_sum / len(ratios)) disharmonics[animal] = average print(disharmonics)