Давайте разберем программу шаг за шагом и применим её к строке, состоящей из 90 подряд идущих цифр 6, то есть строка будет выглядеть так: "666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666".
Программа начинает с цикла ПОКА, который будет выполняться, пока или "нашлось (333)", или "нашлось (666)" – то есть, пока одно из этих условий истинно.
Поскольку в строке нет вхождений "333", но есть "666", цикл будет продолжаться.
Внутри цикла проверяется: если "нашлось (333)", но этого не произошло, поэтому выполняется ELSE: "заменить (666, 3)". Это означает, что первое вхождение "666" будет заменено на "3".
После первой замены строка станет: "366666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666".
Программа снова проверяет условие цикла: "нашлось (333)" – этого по-прежнему нет; "нашлось (666)" – это все еще правда. Продолжаем.
Снова влезаем внутрь цикла и выполняем условие: так как "нашлось (333)" всё ещё ложно, мы снова выполняем ELSE и выполняем "заменить (666, 3)" ещё раз. Теперь строка изменяется дальше.
Теперь строка станет: "33...36666666666666666666666666666666" (где "..." будет означать, что всё ещё остаются "666" после первых двух "3").
Этот процесс продолжится, и строка будет модифицироваться, заменяя каждое "666" на "3", пока все блоки "666" в строке не будут заменены.
Когда все "666" будут заменены на "3", строка станет не "666", а только частично состоящей из "3" и "6".
В результате применения программы к исходной строке получится строка, состоящая из 30 подряд идущих цифр 3, так как каждый блок "666" был заменен на "3", а количество замен будет трижды отобразить на '3' из 90 "6".
Таким образом, конечная строка будет:
"333333333333333333333333333333333333"
Это 30 цифр "3" подряд.
