#!/usr/bin/python3

import matplotlib as plt

def good_format(result: str) -> str:
    # order of following instructions is very important
    while result.startswith('0') and len(result)>=2 and result[1] != '.': result = result[1:]
    while result.startswith('-0') and len(result)>=3 and result[2] != '.': result = result.replace('-0','-')
    if '.' in result and result.split('.')[1]=='0'*len(result.split('.')[1]): result = result.split('.')[0]
    while '.' in result and result.endswith('0'): result = result[:-1]
    return result


n_visu = 20
if __name__=='__main__':
    #start generating codes
    v1 = [i for i in range(256)]
    v2 = [i for i in range(256)]
    codes = []
    for e1 in v1:
        for e2 in v2:
            codes.append( (e1+e2,e1-e2) )
    #format codes
    formatted_codes = []
    #f = open('formatted_codes.txt', 'w')
    for code in codes:
        current_code = ''
        #arranging to have 3 digits for each element in tuple
        X = str(code[0])
        Y = str(abs(code[1])) #to avoid converting the negative sign into string
        if code[0] < 10: X = '00'+X
        elif code[0] < 100: X = '0'+X
        if abs(code[1]) < 10: Y = '00'+Y
        elif abs(code[1]) < 100: Y = '0'+Y
        #creating current formatted code
        if code[1] < 0: #e1-e2<0
            current_code += '1'+X+Y
        else:
            current_code += '0'+X+Y
        #visualization purpose
        if n_visu>0:
            print("X", X, "Y", Y, "formatted code:", current_code)
            n_visu -= 1
        #put current code into formatted_codes and file
        formatted_codes.append( current_code )
        #print("verification:", '1510255' in formatted_codes)
        #f.write(current_code+'\n')
    #f.close()
    #giving statistics
    print("Number of codes:", len(formatted_codes))
    print("Probability to choose a code:", 1.0/len(formatted_codes))