![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Domen |
![]() ![]()
Сообщение
#1
|
![]() Zaochelovek ![]() Группа: Пользователи Сообщений: 20 Пол: Мужской Реальное имя: Макс Репутация: ![]() ![]() ![]() |
В первой строке вводятся два шаблона через пробел
*abb*c? ab?cd требуется вывести любую минимальную подcтроку - решение. * - любое количество символов или пусто ? - любой один символ Длина одного шаблона - до 100 символов Если в ответе возникла ситуация что надо вывести ? то выводить символ 'a' Если решений нет - то 'Impossible' Пример 1: Ввод: a? ?b Вывод: ab Пример 2: Ввод: a?f*b ab?gtb Вывод: abfgtb ![]() |
![]() ![]() |
klem4 |
![]()
Сообщение
#2
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Вот что я наваял, надо проверять ...
Эти 2 теста прошла : uses crt;
const
letters = ['a'..'z'];
a = 'a?f*b';
b = 'ab?gtb';
function GetResult: String;
var
i, j: Integer;
result: String;
begin
result := '';
i := 1;
j := 1;
while (i <= Length(a)) and (j <= length(b)) do begin
if (a[i] in letters) then begin
if ((b[j] in letters) and (a[i] = b[j])) or (b[j] = '?') then begin
result := result + a[i];
inc(i);
inc(j);
end
else if (b[j] = '*') then begin
while (a[i] in letters) and (i <= length(a)) do begin
result := result + a[i];
inc(i);
end;
inc(j);
end
else begin
inc(i);
inc(j);
end;
end // a in letters
else begin
if (a[i] = '?') and (b[j] in letters) then begin
result := result + b[j];
inc(i);
inc(j);
end
else begin
while (b[j] in letters) and (j <= length(b)) do begin
result := result + b[j];
inc(j);
end;
inc(i);
end;
end; // a not in letters
end;
GetResult := result;
end;
begin
clrscr;
writeln(GetResult);
readln;
end.
единственное по поводу 'Impossible' надо подумать. Если етсь еще тесты, давай, сочинять лень ![]() -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
![]() ![]() |
![]() |
Текстовая версия | 29.07.2025 17:12 |