Matreni
@Matreni

Где ошибка в коде Python?

s = (input("Число: "))
n,k,nom = [],[], 0
for i in range(1,5):
    n.append(s[i-1:i+4])
    k.append(min(n[i-1][nom:i+4]))
    nom = n[i-1].find(min(n[i-1]))
print(''.join(k))


Суть алгоритма: программа вычисляет минимальное четырехзначное число из восьмизначного числа, которое в свою очередь состоит из цифр 1,2,3. Цифры четырехзначного могут не стоять рядом, но должны идти по-порядку.

1 число четырехзначного может стоять в диапазоне от 1 до 5 знака в восьмизначном, остальные со смещением 1 от предыдущего. Программа вычисляет минимальное в первом срезе и записывает его в список, далее от номера этого минимального начинает искать в следующем срезе.

Пример: 12312321
Ответ: 1121
  • Вопрос задан
  • 483 просмотра
Решения вопроса 1
adugin
@adugin Куратор тега Python
c7fdea37884c4cd081adfa0c7c607527.png
def solve(sequence):
    def select(shift=0):
        for start in range(4):
            selection = sequence[start:][shift:5]
            value = min(selection)
            shift += selection.index(value)
            yield value
    return ''.join(select())

print(solve('13321311')) # 1111
print(solve('12312321')) # 1121
print(solve('33211213')) # 1113
print(solve('12345678')) # 1234
print(solve('21221132')) # 1112
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@vilgeforce
Раздолбай и программист
Используйте отладчик.
Ответ написан
Комментировать
Djaler
@Djaler
Сеньор-помидор
min(s[i:i+4] for i in range(4))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы