import randomimport stringdef gen_dict(inp): d = {} i = 0 while i < (len(inp)): if inp[i] != ' ': if inp[i] not in d.keys(): d[inp[i]] = f'(0 ,"{inp[i]}")' i += 1 else:if i != len(inp) - 1: d[inp[i:i + 2]] = f'({list(d.keys()).index(inp[i]) + 1} ,"{inp[i + 1]}")' i += 2 else:d[inp[i] + '(eof)'] = f'({list(d.keys()).index(inp[i]) + 1} ,"(eof)")' i += 1 else:i += 1 return dprint('*' * 50) print('task 1') print('*' * 50) s = '' with open("input.txt", "r+") as file: for line in file: s += lineprint(s) d = gen_dict(s) for k, v in d.items(): print(f'{k} {v}') print('*' * 50) print('task 2') print('*' * 50) s = '' with open("input1.txt", "r+") as file: for line in file: s += lineprint(s) d = gen_dict(s) for k, v in d.items(): print(f'{k} {v}') print('*' * 50) print('task 3') print('*' * 50) s = '' for _ in range(20): s += ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(6)) print(s) d = gen_dict(s) for k, v in d.items(): print(f'{k} {v}') 1. Реалізувати програмно алгоритм кодування послідовностей символів на основі методу LZ78. 2. Здійснити кодування: а) власного прізвища записаного два рази без пропуску. б) довільного фрагмента тексту довжиною від 20 до 30 слів. в) випадково згенерованого набору символів у вигляді 20- 30 слів. Зміст звіту. 1. Текст програми. 2. Вхідна послідовність. 3. Кодовий словник (у вигляді таблиц