Реализовать на bash
задано для развлечения =))
дан список слов, и одно слово.
список слов можно задать в любом виде: прочитать из файла (тогда нужно указать формат файла, или приложить его пример), ввести с клавиатуры, задать константой, и т.д.
слово должно вводиться с клавиатуры.
проверить, присутствуют ли в списке слова, состоящие из тех же букв (или их части), из которых состоит слово. порядок букв не имеет значения. в искомых словах может быть меньше букв, чем в исходном. как по количеству, так и по разнообразию. то есть, нельзя искать слова с тремя буквами "е", если в слове их только две, но можно с двумя и с одной.
пример:
список слов: рыба, рак, щука, лебедь, карась, пескарь, баня, бубен, столб, баян, барыня.
слово: рабыня
вывод программы: рыба, баня, баян, барыня
Это дает возможность сделать оценку верхнего значения основания системы счисления.
9² < √(73) < 8², поэтому система счисления не может иметь основание, большее 8.
Четырехразрядное число содержит третью степень основания. Это дает возможность сделать оценку нижнего значения основания системы счисления.
5³ < ∛(73) < 4³, поэтому система счисления не может иметь основание, меньшее 5.
Итак, у нас четыре претендента: натуральное n∈[5;8]
Для системы счисления по основанию n получаем уравнение
an²+bn+c=73
Для n=8 получим 64a+8b+c=73; a,b,c<8
Понятно, что a=1, тогда 8b+c=9. И тут понятно, что b=1 и тогда с=1.
Проверим. 111₈ = 1×8²+1×8+1=64+8+1=73
Нет смысла проверять n=7 и т.д., поскольку нам нужно наибольшее возможное основание.
ответ: 8
begin
readln(x);
readln(y);
readln(x1);
readln(y1);
if(x + 1 = x1) and (y + 2 = y1) and (x + 1 < 9) and (y + 2 < 9) then begin write('YES');exit; end;
if(x - 1 = x1) and (y + 2 = y1) and (x - 1 > 0) and (y + 2 < 9) then begin write('YES');exit; end;
if(x + 2 = x1) and (y + 1 = y1) and (x + 2 < 9) and (y + 1 < 9) then begin write('YES');exit; end;
if(x - 2 = x1) and (y + 1 = y1) and (x - 2 > 0) and (y + 1 < 9) then begin write('YES');exit; end;
if(x + 1 = x1) and (y - 2 = y1) and (x + 1 < 9) and (y - 2 > 0) then begin write('YES');exit; end;
if(x + 2 = x1) and (y - 1 = y1) and (x + 2 < 9) and (y - 1 > 0) then begin write('YES');exit; end;
if(x - 1 = x1) and (y - 2 = y1) and (x - 1 > 0) and (y - 2 > 0) then begin write('YES');exit; end;
if(x - 2 = x1) and (y - 1 = y1) and (x - 2 > 0) and (y - 1 > 0) then begin write('YES');exit; end;
write('NO');
end.