Во вложении показана принятая условная схема нумерации полей.
Предполагается, что если ферзь стоит на клетке с координатами (3,4), он может пойти по горизонтали, вертикали или диагонали. Соответствующие направления выделены цветом.
Чтобы взять фигуру (или пешку) противника по горизонтали, у обоих фигур должны быть одинаковы координаты строки (первые в паре).
Чтобы взять фигуру противника по вертикали, у обоих фигур должны быть одинаковы координаты столбца (вторые в паре в паре).
Наконец, чтобы взять фигуру противника по диагонали, у обоих фигур должна быть одинакова абсолютная величина разницы как между строками, так и между колонками.
Последнее правило взятия сложное, поэтому запишем его в условных обозначениях. Пусть Rq и Cq - соответственно номера строки и столбца, пересечение которых указывает положение клетки с ферзем. Пусть также фигура противника находится на клетке, заданной координатами Rx и Cx.
Тогда последнее правило можно записать в виде |Rq-Rx| = |Cq-Cx|
Теперь можно записать логическое выражение, значение которого истинно, если ферзь может взять фигуру (или пешку) противника.
(Rq=Rx) ∨ (Cq=Cx) ∨ (|Rq-Rx| = |Cq-Cx|)
<em>// PascalABC.NET 3.3, сборка 1625 от 17.01.2018</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
begin
var (Rq,Cq):=ReadInteger2('Введите номера горизонтали и вертикали ферзя:');
var (Rx,Cx):=ReadInteger2('Введите номера горизонтали и вертикали фигуры:');
if (Rq=Rx) or (Cq=Cx) or (Abs(Rq-Rx)=Abs(Cq-Cx)) then Writeln('Yes')
else Writeln('No')
end.
<u>Пример</u>
Введите номера горизонтали и вертикали ферзя: 3 4
Введите номера горизонтали и вертикали фигуры: 6 1
Yes
Так как для хранения файлов отводится некоторое количество кластеров (количество кластеров определяется исходя из размера файла), то для хранения файла размером 1000 байт будет отведен один кластер, т.е. 4 килобайта.
Var b; integer;
begin
writeln ("В каком году появились первые ЭВМ?'');
readln (b);
if b=1943 then
writeln ('Вы правы!')
else
writeln ('<span>Вы ошиблись, прочитайте свою рабочую тетрадь ещё раз!</span>');
end.
<em>// PascalABC.NET 3.2, сборка 1407 от 18.03.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
function Good(s:string):boolean;
begin
var n:=s.Length;
var t:=s.ToCharArray.Distinct;
Result:=false;
foreach var c in t do begin
var k:=0;
for var i:=1 to n do
if s[i]=c then k+=1;
if k=3 then begin Result:=true; Break end
end;
end;
begin
var aw:=ReadlnString('Ведите строку:').ToWords;
var aw2:=aw.Where(w->Good(w));
aw2.Println;
end.
<u>Пример</u>
Ведите строку: корова барометр молоко длинношеее перемена соответствие кровообращение молоковоз борода
молоко длинношеее перемена соответствие кровообращение
Ответ:
Команда говорить и изменить размер