Ассемблер (Транслятор исходного текста программы)
Var
a : array['a'..'z'] of integer;
t : array['a'..'z'] of boolean;
m : integer;
c : char;
begin
m := 0;
for c := 'a' to 'z' do
a[c] := 0;
repeat
for c := 'a' to 'z' do
t[c] := false;
read(c);
while (c <> ',') and (c <> '.') do
begin
if not t[c] then
begin
a[c] := a[c] + 1;
if a[c] > m then
m := a[c];
t[c] := true
end;
read(c)
end
until c = '.';
for c := 'a' to 'z' do
if a[c] = m then
write(c,' ')
<span>end.</span>
Во вложении показана принятая условная схема нумерации полей.
Предполагается, что если ферзь стоит на клетке с координатами (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
Ассемблер – <span>программа, которая переводит в машинные коды символьную запись машинных команд</span>
Последнее, СОДА
Там в начале 000 - это однозначно С, потом 111 - это О
Потом 10 или 100 - это может быть либо Д, либо Н, но если Н, тогда остается 001 - такого кода нет, значит Д
Тогда остается 01 и это А