Для групповых операций с файлами используются маски имен файлов. маска представляет собой последовательность букв, цифр и прочих допустимых в именах файлов символов. также в маске может встречаться символ *, который обозначает любую (в том числе пустую) последовательность символов, и символ ? , который обозначает один любой символ. если задана маска *a*l, то ей удовлетворяют файлы с названиями basketball, ball, и не удовлетворяют файлы с названием fox, shark. придумайте маску имени файла, которой бы удовлетворяли имена файлов mister_fox и from_foxford, но не удовлетворяли бы имена файлов brave_oxygen и magic_fox. найдите самую короткую такую маску (состоящую из наименьшего количества символов). в качестве ответа запишите ее длину.
Номер 1
использовать Робот
алг
нач
нц пока сверху свободно
вверх
кц
нц пока сверху стена
закрасить
влево
кц
нц пока сверху не стена
влево
кц
нц пока сверху стена
закрасить
влево
кц
вверх
вправо
нц пока снизу стена
закрасить
вправо
кц
нц пока снизу не стена
вправо
кц
нц пока снизу стена
закрасить
вправо
кц
кон
Номер 2
использовать Робот
алг
нач
нц пока сверху стена
закрасить
влево
кц
вправо
нц пока сверху стена
если справа не свободно то
вправо
все
если справа свободно то
вправо
если сверху стена то
закрасить
все
все
кц
влево
нц пока снизу не стена
вниз
кц
нц пока слева не стена и снизу стена
закрасить
влево
кц
кон
//Обьявляем дополнительные переменные и главный массив, а также два дополнительных - они будут "половинками".
var
a, b, c: array [1..100] of longint;
i, min, n, j, t: longint;
begin
//Читаем количество элементов в нашем массиве.
readln(n);
//Читаем массив.
for i := 1 to n do read(a[i]);
//Заполняем первую "половинку".
for i := 1 to n div 2 do b[i] := a[i];
//Заполняем вторую "половинку". Но раз это уже вторая "половинка" главного массива, то и
//цикл теперь должен начинаться со второй части массива, а заканчиваться уже в его конце.
for i := n div 2 + 1 to n do c[i - n div 2] := a[i];
//Теперь отсортируем первую "половинку" методом выбора. Идея этого метода
//основывается на том, что мы ищем минимальный среди неотсортированных элемент,
//а затем аем его с тем, который стоит сразу после отсортированных.
for i := 1 to (n - 1) div 2 do
begin
min := i;
for j := i + 1 to n div 2 do
if b[min] > b[j] then
min := j;
if min <> i then begin
t := b[i];
b[i] := b[min];
b[min] := t;
end;
end;
//Затем вторую точно также, только стоит обратить внимание на сравнения.
//Так как надо отсортировать по убыванию, то теперь сравнение перед "swap"-ом
//будет другим.
for i := 1 to (n - 1) div 2 do
begin
min := i;
for j := i + 1 to n div 2 do
if c[min] < c[j] then
min := j;
if min <> i then begin
t := c[i];
c[i] := c[min];
c[min] := t;
end;
end;
//А теперь по очереди выводим готовые "половинки", не забывая ставить
//пробел после вывода каждого элемента.
for i := 1 to n div 2 do write(b[i], ' ');
for i := 1 to n - n div 2 do write(c[i], ' ');
end.