Задать вопрос
@ffff567

Можно ли этот код написать как то по другому короче?

Есть список из 4 цифр со случаными цирфами кратные 2
например [2,0,2,8]
Нужно все 0 сместить влево все остальные цифры вправо. Если 2 цифры стоящие рядом друг с другом раны друг другу то они суммируются
В итоге должно получиться [0,0,4,8]

Еще пример
[2,2,2,2] Итог [0,0,0,8]
[2,0,2,2] Итог [0,0,2,4]
[2,4,2,2] Итог [0,0,2,8]
[2,4,4,2] Итог [0,2,8,2]

for i in [x[12:]]:
        flag=True
        pp=([0]*i.count(0))+[g for g in i if g]
        print(pp)
        while flag:
            flag=False
            xc=None
            for num, k in enumerate(pp[::-1]):
                if k:
                    if xc==k:
                        pp[-(num+1)]=0
                        pp[-num]=xc+k
                        xc=None
                        flag=True
                    else:
                        xc=k
            if flag:
                pp=([0]*pp.count(0))+[g for g in pp if g]
  • Вопрос задан
  • 26 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
def process_list(lst):
    lst = [x for x in lst if x]  # Убираем нули
    for i in range(len(lst) - 1, 0, -1):
        if lst[i] == lst[i - 1]:  
            lst[i] *= 2  
            lst[i - 1] = 0  
    return [0] * (4 - len(lst)) + [x for x in lst if x]  # Смещаем нули влево
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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