Напишите программу, которая будет быстро и правильно производить конвертацию пароля - Pascal ABC

Формулировка задачи:

4. Ох уж эти ученые...
Имя входного файла input.txt Имя выходного файла output.txt Максимальное время работы на одном тесте 2 секунды Ограничение по памяти 64 МБ
"...Британские ученые выяснили, что чаще всего взламывают пароли, содержащие группы одинаковых подряд идущих символов, пробелы и звездочки, и гораздо реже пароли, содержащие многоточия..." Услышав эту новость, Вася крепко задумался: почти все его пароли попадают в группу риска!!! Для того чтобы исправить ситуацию, он решил конвертировать все свои пароли по следующему правилу: от группы одинаковых символов оставить один, два и более пробелов заменить на знак подчёркивания, а две и более звездочки — на многоточие. Напишите программу, которая будет быстро и правильно производить конвертацию пароля. Формат входных данных: Задан пароль — непустая строка длиной до 100 000 символов, которая может состоять из строчных букв латинского алфавита, пробелов и символов '*'. Формат выходных данных: Выведите пароль, полученный после конвертации.
Пример input.txt output.txt abcd abcd aaabbc** abc...
Добавлено через 39 секунд Буду очень благодарен

Код к задаче: «Напишите программу, которая будет быстро и правильно производить конвертацию пароля - Pascal ABC»

textual
Function ConvertPass(S : String) : String;
Var
  k  : Integer;
  ss : String;
Begin
  If Length(S)>1 then
    If S[1]=S[2] then
    Begin
      k:=3;
      While (k<=Length(S)) and (S[k]=S[1]) do Inc(k);
      Case S[1] of
        ' ' : ss:='_';
        '*' : ss:='...';
        else ss:=S[1]
      end;
      ConvertPass:=ss+ConvertPass(Copy(S,k,Length(S)));
    end
      else ConvertPass:=S[1]+ConvertPass(Copy(S,2,Length(S)-1))
  else ConvertPass:=S;
end;
 
Begin
  Writeln(ConvertPass('aaabbc**    c****bbba11111')); { abc..._c...ba1 }
end.

13   голосов, оценка 4.231 из 5


СОХРАНИТЬ ССЫЛКУ