Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки символов. заменить (v, w)
нашлось (v)
Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Если цепочки v в строке нет, эта команда не изменяет строку. Вторая команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение "истина", в противном случае возвращает значение "ложь".
Дана программа для исполнителя Редактор:
НАЧАЛО
ПОКА нашлось (11111)
заменить (222, 1)
заменить (111, 2)
КОНЕЦ ПОКА
КОНЕЦ
Какая строка получится в результате применения приведённой программы к строке вида 1…12…2 (2020 единиц и 2020 двоек)?
Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrRandom(ReadInteger('n='),0,9); a.Println;
a.GroupBy(t->t).Select(t->(t.Key,t.Count)).OrderBy(t->t[0])
.Foreach(t->Writeln(t[0],' - ',t[1]))
end.
Пример
n= 100
5 7 6 0 1 3 1 4 9 2 8 7 5 2 1 6 1 6 6 6 1 0 1 2 4 9 7 0 5 6 2 7 3 3 1 5 7 5 9 8 1 8 7 8 8 7 3 2 4 4 5 6 8 3 9 4 5 3 6 2 6 0 9 3 9 0 4 2 1 6 9 6 7 7 5 3 3 3 3 7 6 4 5 0 0 5 8 0 4 6 9 3 8 6 1 0 9 3 8 7
0 - 9
1 - 10
2 - 7
3 - 13
4 - 8
5 - 10
6 - 14
7 - 11
8 - 9
9 - 9