как в строке из набора цифр, заменить определенные, на те, которые я задам на python

Дана строка: 11211212222121

Алгоритм:

НАЧАЛО
ПОКА нашлось (111) ИЛИ нашлось (222)
    ЕСЛИ нашлось (111)
        ТО заменить (111 на 2)
    КОНЕЦ ЕСЛИ
    ЕСЛИ нашлось (222)
        ТО заменить (222 на 1)
    КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ

(написать на Python)необходимо пройтись по этой строке и если в ней найдены 3 цифры 1 их нужно заменить на цифру 2 и если найдены 3 цифры 2 необходимо их заменить на цифру 1

Должно получиться:

12

Ответы (2 шт):

Автор решения: Edward Grachev

Давай с того что 12 у тебя никак не получится в дано: 11211212222121. Попробуй сам свой алгоритм прогнать в голове.

Если брать дано: 11211212222121 то получится 112112121121

Если убрать из дано одну 2: 1121121222121 11211211121 112112221 1121111 11212

Сам код:

a =  1121121222121
def repl(a):
    if '111' in str(a):
        a = str(a).replace('111','2')
        repl(a)
    elif '222' in str(a):
        a = str(a).replace('222', '1')
        repl(a)
    else:
        print(a)
repl(a)

Вы уверены что должно получиться 12?

→ Ссылка
Автор решения: Zhihar

из комментариев @Андрей Александрович, примерно понял что именно требовалось :)

в этом случае код может выглядеть так:

text = '11211212222121'
old_text = ''

while old_text != text:
  old_text = text

  # подсчитать кол-во единиц и двоек
  count1 = text.count('1')
  count2 = text.count('2')

  # произвести замену
  text = '2' * (count1 // 3) + '1' * (count2 // 3) + '1' * (count1 % 3) + '2' * (count2 % 3)

print(text)
→ Ссылка