Шахматы в Информатике

 Рассмотрим несколько логических задач по информатике на тему Шахматы

 Задачи блока ‘Boolean’ из электронного задачника Programming Taskbook, автор доцент факультета математики, механики и компьютерных наук Южного федерального университета Михаил Эдуардович Абрамян. Решения приведены для автоматической проверки модуля “pt4” программы PascalABC.NET.

 chess 88

Задание: Boolean34º. На вход подаются координаты поля шахматной доски x, y (целые числа, лежащие в диапазоне 1–8).
Учитывая, что левое нижнее поле доски (1, 1) является черным, проверить истинность высказывания: «Данное поле является белым».
На выход записать "True" или "False", в зависимости от полученных координат.

Решение.

// Pascal
program z34;
uses pt4;
var x,y:integer;
begin
     task('boolean34');
     read(x,y);
     if odd(x+y)
       then
         write(true)
       else
         write(false)
end.

chess 34

 # Python
x, y = map(int, input().split())
if (x+y)%2==1:
    print('True')
else:
    print('False')

 python

 

Задание: Boolean35º. На вход подаются координаты двух различных полей шахматной доски x1, y1, x2, y2 (целые числа, лежащие в диапазоне 1–8).
Проверить истинность высказывания: «Данные поля имеют одинаковый цвет».
На выход записать "True" или "False", в зависимости от полученных координат.

Решение.

// Pascal
program z35;
uses pt4;
var x1,y1,x2,y2:integer;
begin
     task('boolean35');
     read(x1,y1,x2,y2);
     if odd(x1+y1)=odd(x2+y2)
       then
         write(true)
       else
         write(false)
end.

chess 35 

# Python
x1, y1, x2, y2 = map(int, input().split())
if (x1+y1)%2 == (x2+y2)%2:
    print('True')
else:
    print('False')

 

Задание: Boolean36º. На вход подаются координаты двух различных полей шахматной доски x1, y1, x2, y2 (целые числа, лежащие в диапазоне 1–8).
Проверить истинность высказывания: «Ладья за один ход может перейти с одного поля на другое».
На выход записать "True" или "False", в зависимости от полученных координат.

Решение.

// Pascal
program z36;
uses pt4;
var x1,y1,x2,y2:integer;
begin
     task('boolean36');
     read(x1,y1,x2,y2);
     if (x1 = x2) or (y1 = y2)
       then
         write(true)
       else
         write(false)
end.

 chess 36

# Python
a,b,c,d = input().split()
x1 = int(a)
y1 = int(b)
x2 = int(c)
y2 = int(d)
if (x1 == x2) or (y1 == y2):
    print('True')
else:
    print('False')

 chess 36

Задание: Boolean37º. На вход подаются координаты двух различных полей шахматной доски x1, y1, x2, y2 (целые числа, лежащие в диапазоне 1–8).
Проверить истинность высказывания: «Король за один ход может перейти с одного поля на другое».
На выход записать "True" или "False", в зависимости от полученных координат.

Решение.

// Pascal
program z37;
uses pt4;
var x1,y1,x2,y2:integer;
begin
     task('boolean37');
     read(x1,y1,x2,y2);
     if (abs(x1-x2)<=1) and (abs(y1-y2)<=1)
       then
         write(true)
       else
         write(false)
end.

 chess 37

# Python
x1 = int(input())
y1 = int(input())
x2 = int(input())
y2 = int(input())
if (abs(x1-x2)<=1) and (abs(y1-y2)<=1):
    print('True')
else:
    print('False')

 

Задание: Boolean38º. На вход подаются координаты двух различных полей шахматной доски x1, y1, x2, y2 (целые числа, лежащие в диапазоне 1–8).
Проверить истинность высказывания: «Слон за один ход может перейти с одного поля на другое».
На выход записать "True" или "False", в зависимости от полученных координат.

Решение.

// Pascal
program z38;
uses pt4;
var x1,y1,x2,y2:integer;
begin
     task('boolean38');
     read(x1,y1,x2,y2);
     if abs(x1-x2) = abs(y1-y2)
       then
         write(true)
       else
         write(false)
end.

 chess 38

# Python
x1 = int(input())
y1 = int(input())
x2 = int(input())
y2 = int(input())
if abs(x1-x2) == abs(y1-y2):
    print('True')
else:
    print('False')

 

Задание: Boolean39º. На вход подаются координаты двух различных полей шахматной доски x1, y1, x2, y2 (целые числа, лежащие в диапазоне 1–8).
Проверить истинность высказывания: «Ферзь за один ход может перейти с одного поля на другое».
На выход записать "True" или "False", в зависимости от полученных координат.

Решение.

// Pascal
program z1;
uses pt4;
var x1,y1,x2,y2:integer;
begin
     task('boolean39');
     read(x1,y1,x2,y2);
     if (abs(x1-x2) = abs(y1-y2)) or (x1 = x2) or (y1 = y2)
       then
         write(true)
       else
         write(false)
end.

 chess 39

# Python
x1 = int(input())
y1 = int(input())
x2 = int(input())
y2 = int(input())
if (abs(x1-x2) == abs(y1-y2)) or (x1 == x2) or (y1 == y2):
    print('True')
else:
    print('False')

 

Задание: Boolean40º. На вход подаются координаты двух различных полей шахматной доски x1, y1, x2, y2 (целые числа, лежащие в диапазоне 1–8).
Проверить истинность высказывания: «Конь за один ход может перейти с одного поля на другое».
На выход записать "True" или "False", в зависимости от полученных координат.

Решение.

// Pascal
program z1;
uses pt4;
var x1,y1,x2,y2:integer;
begin
     task('boolean40');
     read(x1,y1,x2,y2);
     if (abs(x1-x2) + abs(y1-y2) = 3) and (abs(x1-x2) <> 3) and (abs(y1-y2) <> 3)
       then
         write(true)
       else
         write(false)
end.

 chess 40

# Python
a,b,c,d = input().split()
x1 = int(a)
y1 = int(b)
x2 = int(c)
y2 = int(d)
if (abs(x1-x2) + abs(y1-y2) == 3) and (abs(x1-x2) != 3) and (abs(y1-y2) != 3):
    print('True')
else:
    print('False')

 python 40

 

 

 

 

 

 

 


Приглашаю на лучшие дистанционные курсы повышения квалификации, курсы профессиональной переподготовки и курсы по специальностям на проверенной образовательной платформе «Знанио».

Воспользуйтесь моим купоном «9954514» при оформлении заказа, чтобы получить скидку -50% на https://znanio.ru на все курсы и другие услуги портала.


Прогноз погоды в Эгвекинот
world-weather.ru