«Этот лис, кажется, и за человека меня не считает», – подумал Нильс и что было силы дёрнул лиса за хвост. От неожиданности Смирре выпустил гуся. Всего только на секунду. Гусь рванулся вверх и, тяжело взмахивая помятыми крыльями, полетел к озеру.
– Ах, так Смирре. – Ну, ладно же!
И Смирре попробовал было схватить Нильса. Но это было не так-то легко – Нильс крепко, обеими руками, держался за его хвост.
Смирре прыгнул вправо, а хвост повернулся влево.
Смирре прыгнул влево, а хвост повернулся вправо.
Смирре кружился, как волчок, но и хвост кружился вместе с ним, а вместе с хвостом и Нильс.
Напишите функцию circle_tail(), которая будет определять, за кем победа в каждом раунде.
Для этого нужно для каждой введенной строки находить символы, которые в этой строке встречаются в словах до разделителя ##, но не встречаются после него.
Функция может принимать произвольное число аргументов-строк и произвольное число именованных аргументов.
Если именованные аргументы не переданы, то функция просто возвращает список кортежей, в которых для каждой строки определены: (суммарное количество слов в каждой части строки, символы, которые встречаются в словах первой части, но не встречаются в словах второй).
Если передан именованный аргумент in_order и он имеет значение True, то кортежи в списке, а также буквы в кортеже, должны быть упорядочены по возрастанию. Если значение False, то по убыванию.
Если передан именованный параметр shift, то сначала всю строку нужно сдвинуть влево на количество позиций, равное значению этого аргумента (то есть столько символов из начала строки переставить в конец).
Ввод
data = ['This Fox does not even seem to think##I am human', 'Nils thought##pulled the Foxs tail as hard as he could', 'In surprise Smirre released the goose.##Just for a second.']
print(*circle_tail(*data), sep="\n")
Вывод
(11, 'vFsextTiokd')
(11, 'gN')
(10, 'mlSghpiI')
1)В первом варианте программа выдает неверный ответ, если в числе есть хотя бы один ноль.
var
a, n, i, min, tmp, m: integer;
begin
m := 1;
read(a);
tmp := a;
n := 0;
min := 10;
while tmp > 0 do
begin
n := n + 1;
if(tmp mod 10 < min) then min := tmp mod 10;
tmp := tmp div 10;
end;
for i := 1 to n do
m := m * 10;
a := a + (min * m);
a := a * 10;
a := a + min;
write(a);
end.
2)Второй вариант с использованием строки:
var
s: string;
i, min: integer;
begin
readln(s);
min := 10;
for i := 1 to length(s) do
if(strtoint(s[i]) < min) then min := strtoint(s[i]);
s := s + inttostr(min);
s := inttostr(min) + s;
writeln(s);
end.