Будем последовательно решать задачу для первых i символов кода, основываясь на ответах для i - 1 и i - 2. Заметим, что если i-й символ кода равен 0 или ответа для i - 1 не существует, то ответ для i получается добавлением одного символа к ответу для i - 2, если последние две цифры кода нельзя понять, как зашифрованную букву, или ответа для i - 2 не существует, то надо добавить символ к i - 1, а иначе сравнить длины ответов и добавить букву к тому, кто короче.
Код (python 3.5): codes = "." with open('input.txt', 'r') as f: encoded = list(map(int,list(f.read( if len(encoded) == 1: print(codes[encoded[0]]) else: decoded = [codes[encoded[0]], ""] for i in range(1, len(encoded)): if (decoded[0] is None) or (encoded[i] == 0): decoded = [decoded[1] + codes[10*encoded[i-1] + encoded[i]], decoded[0]] elif (10*encoded[i-1] + encoded[i]>26) or (decoded[1] is None) or \ (len(decoded[1]) >= len(decoded[0])): decoded = [decoded[0] + codes[encoded[i]], decoded[0]] else: decoded = [decoded[1] + codes[10*encoded[i-1] + encoded[i]], decoded[0]] with open('output.txt', 'w') as f: f.write(decoded[0])
from tkinter import *
def click1():
lbl.configure(text="Вы нажали кнопку 1", font=("",20),bg="cyan2")
window["bg"] = "cyan2"
def click2():
lbl.configure(text="Вы нажали кнопку 2", font=("",20),bg="yellow")
window["bg"] = "yellow"
window = Tk()
window.resizable(False,False)
window.title("ПР_14: ФИО")
window.geometry('600x400')
lbl = Label(window, text="", font=("", 50))
btn = Button(window, text="Кнопка 1", command=click1)
btn.grid(column=1, row=0)
lbl.grid(column="5",row="0")
btn = Button(window, text="Кнопка 2", command=click2)
btn.grid(column=3, row=5)
window.mainloop()