1. Реализовать функцию, которая на вход получает количество файлов и возвращает его с размерностью, в которой будет один из трех вариантов окончания: файлов, файл или файла. Например:
get_dimention(1); // возвращает '1 файл'
get_dimention(12); // возвращает '12 файлов'
get_dimention(2); // возвращает '2 файла'
Необходимо оставить противнику 1 фишку с тем, чтобы он был вынужден взять её и проиграть. Для этого надо самому иметь позицию, в которой имеется от 2 до 5 фишек (чтобы взяв допустимый 1-4 фишки, оставить одну).
Чтобы вынудить противника оставить 2-5 фишек, надо создать ему позицию с 6 фишками (6-1=5, 6-4=2).
Позицию с 6 фишками мы можем создать, имея 7-10 фишек.
Исходное количество фишек - 11. Если первый ход у противника, он забирает от 1 до 4 фишек и предоставляет нам как раз необходимые для выигрыша 7-10 фишек.
Итак, при первом ходе противника нашей стратегией будет оставить противнику шесть фишек, а затем одну.
Если первый ход наш, то при правильной игре противника выигрыш невозможен. При неправильной - стараться перейти к выигрышной стратегии (6 и 1 фишка).
gl = ['а', 'е', 'ё', 'и', 'о', 'у', 'ы', 'э', 'ю', 'я'];
var
w1, w2: string;
m: set of char;
c: char;
i: integer;
begin
Writeln('Введите первое "слово"');
Readln(w1);
Writeln('Введите второе "слово"');
Readln(w2);
m := [];
w1 := LowerCase(w1);w2 := LowerCase(w2);
for i := 1 to length(w1) do
if w1[i] in gl then Include(m, w1[i]);
for i := 1 to length(w2) do
if w2[i] in m then Exclude(m, w2[i]);
Writeln('Гласные, присутствующие в первом слове и отсутствующие во втором:');
foreach c in m do Write(c, ' ');
Writeln
end.
Тестовое решение:
Введите первое "слово"
Дай, Джим, на счастье лапу мне!
Введите второе "слово"
Сергей Есенин
Гласные, присутствующие в первом слове и отсутствующие во втором:
а у