
2 в списке

2 в списке
 with open("24-249.txt", "r") as f:
    HEX = { hex(n)[2]: n for n in range(16) }
    ALL = (1 # Загружаю файл 24-249.txt в строку string 
f = open("24-249.txt") 
string = f.read()+" " 
f.close() 
 
# Задаю цифры 16-тиричной системы исчисления 
s16 = "0123456789ABCDEF" 
# Задаю начальное значение для минимальной длины строки 
min_len = 10**6; 
 
# Запускаю цикл для i по всем символам строки string 
for i in range(0, len(string)): 
    # Если i-й символ строки - 16-е цифра, тогда... 
    if string[i] in s16: 
        # ... запускаю цикл для k так, чтобы от 
        # i-го до k-го символов было расстояние 
        # не меньше 16 и не больше min_len. 
        # 16 - так как в строке нужно, чтобы были 
        # все 16-тиричные цифры. 
        # min_len - так как если я беру строку, бОльшую, 
        # чем min_len, то она не нужна - ищу-то я строку 
        # с минимальной длиной, а это - строка длиной 
        # min_len или меньше 
        m = min(i+min_len, len(string)) 
        for k in range(i+16, m): 
            # Если последний символ не 16-тиричная 
            # цифра, тогда перехожу к следующей итерации, 
            # так как такая строка не подходит 
            if not(string[k-1] in s16): 
                continue 
            # Вырезаю в s строку от i-го до k-1 - го 
            # символов 
            s = string[i:k] 
            # Выбираю для начала, что строка s мне 
            # подходит 
            finded_string = True 
            # Проверяю, что в этой строке есть все 16-тиричные 
            # символы 
            for char in s16: 
                if not (char in s): 
                    finded_string = False 
            # Если строка подходит мне и её длина меньше минимальной, 
            # тогда выбираю её длину минимальной 
            if finded_string and len(s) < min_len: 
                min_len = len(s) 
            # Если строка s мне подошла, тогда нет смысла продолжать цикл 
            # для k. Потому что дальше будут строки только с бОльшей длиной 
            if finded_string: 
                break 
# Вывожу минимальную длину на экран 
print(min_len) 
      if string[i] in s16:  
        # ... запускаю цикл для k так, чтобы от  
        # i-го до k-го символов было расстрояние  
        # не меньше 16 и не больше min_len.  
        # 16 - так как в строке нужно, чтобы были  
        # все 16-тиричные цифры.  
        # min_len - так как если я беру строку, бОльшую,  
        # чем min_len, то она не нужна - ищу-то я строку  
        # с минимальной длиной, а это - строка длиной  
        # min_len или меньше  
        m = min(i+min_len, len(string))  
        for k in range(i+16, m):  
            # Если последний символ не 16-тиричная  
            # цифра, тогда перехожу к следующей итерации,  
            # так как такая строка не подходит  
            if not(string[k-1] in s16):  
                continue  
 							             # Вырезаю в s строку от i-го до k-1 - го   
            # символов   
            s = string[i:k]   
            # Выбираю для начала, что строка s мне   
            # подходит   
            finded_string = True   
            # Проверяю, что в этой строке есть все 16-тиричные   
            # символы   
            for char in s16:   
                if not (char in s):   
                    finded_string = False   
            # Если строка подходит мне и её длина меньше минимальной,   
            # тогда выбираю её длину минимальной   
 							             if finded_string and len(s) < min_len:    
                min_len = len(s)    
            # Если строка s мне подошла, тогда нет смысла продолжать цикл    
            # для k. Потому что дальше будут строки только с бОльшей длиной    
            if finded_string:    
                break    
# Вывожу минимальную длину на экран    
if min_len == 10**6 + 1:    
    print("Строки, содержащей все 16-тиричные цифры, в файле нет.")    
else:    
    print(min_len)