Информация о задаче

Автор, источник

 

Олимпиада

Муниципальный этап олимпиады в Ханты-Мансийском АО-Югре, 2009-2010 уч. год, 7-9 классы, 1-й тур

Тематика

Простая математика

Примерная сложность

27%

Ссылки в Интернете

Условие –

Разбор –

Тесты –

Сдача решения –

Наш сайт

Сдача решения –

Тесты – Rar

Задача подготовлена

Автор, дата –  Алексеев А.В., 24.05.2012

 

027. Шашки

(Время - 1 сек., память - 16 Мб)

На доске стоит белая шашка. Требуется определить, может ли она попасть в заданную клетку, делая ходы по правилам (не превращаясь в дамку).

Входные данные

В единственной строке входного файла input.txt записаны: клетка, где стоит шашка, в шахматной нотации, а затем, через пробел, клетка, куда шашка должна попасть. Начальная и конечная клетки не совпадают.

Выходные данные

В единственную строку выходного файла output.txt нужно вывести слово YES (заглавными буквами), если шашка может попасть из начальной клетки в конечную, и NO в противном случае.

Примеры

INPUT.TXT

OUTPUT.TXT

 

1

a1 b2

YES

Для выполнения указанного перемещения шашка должна сделать один ход вперед и вправо

2

b2 a1

NO

Назад шашка ходить не может

3

a1 h7

NO

a1 и h7 - клетки разного цвета

4

a1 h8

YES

7 ходов вправо вверх

Пояснение

Доска имеет размер 8x8, вертикали нумеруются маленькими латинскими буквами от a до h, горизонтали - числами от 1 до 8. Белая шашка ходит по чёрным полям по диагонали вверх.

Разбор

Переведём координаты из шахматной нотации в координатную. Далее проверяем одного ли цвета заданные поля (у полей белого цвета сумма координат является чётным числом). Если да, то проверяем, что второе поле расположено выше, а также, что оно расположено в допустимых границах.

Программа на Паскале

Var s : string; x, y, u, v : integer;

begin

  assign(input,'input.txt'); reset(input);

  assign(output,'output.txt'); rewrite(output);

  readln(s);

  x:=ord(s[1])-ord('a')+1; y:=ord(s[2])-48;

  u:=ord(s[4])-ord('a')+1; v:=ord(s[5])-48;

  if ((x+y)mod 2=0)and((u+v)mod 2=0) then

    if (v>y)and(x+y-v<=u)and(u<=x+v-y) then write('YES')

      else write('NO')

    else write('NO');

  close(output)

end.

Программа на С