Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/197: Рейтинг темы: голосов - 197, средняя оценка - 4.57
1 / 2 / 0
Регистрация: 29.03.2015
Сообщений: 36
1

Совпадают ли цвета двух клеток шахматной доски

07.01.2016, 12:51. Просмотров 37712. Ответов 5
Метки нет (Все метки)

Задача звучит так:
Заданы две клетки шахматной доски. Если они покрашены в один цвет, то выведите слово YES, а если в разные цвета — то NO. Программа получает на вход четыре числа от 1 до 8 каждое, задающие номер столбца и номер строки сначала для первой клетки, потом для второй клетки.
Мой код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
a=int(input())
b=int(input())
c=int(input())
d=int(input())
x=a%2
y=b%2
z=c%2
f=d%2
if x==1 and y==1 and z==1 and f==1:
    print('YES')
elif x==1 and y==1 and z==0 and f==0:
    print('YES')
elif x==0 and y==0 and z==1 and f==1:
    print('YES')
elif x==1 and y==0 and z==1 and f==0:
    print('YES')
elif x==0 and y==1 and z==0 and f==1:
    print('YES')
elif x==1 and y==1 and z==0 and f==1:
    print('NO')
elif x==1 and y==1 and z==1 and f==0:
    print('NO')
elif x==0 and y==0 and z==1 and f==0:
    print('NO')
elif x==0 and y==0 and z==0 and f==1:
    print('NO')
elif x==1 and y==0 and z==1 and f==1:
    print('NO')
elif x==1 and y==0 and z==0 and f==1:
    print('NO')
elif x==0 and y==1 and z==0 and f==0:
    print('NO')
elif x==1 and y==0 and z==0 and f==1:
    print('YES')
else: 
    print('YES')
Я отправил решение и 10 из 11 случаев правильны, кроме одного, когда на входе мы получаем следующие числа: 7 2 2 3. Посмотрите код, пожалуйста, может быть у меня всё правильно, а может и нет (смотрите скриншот во вложении)
Пояснение к моему коду: я решал эту задачу через нахождение чётных или нечётных по номеру клеток, то есть искал остаток у чисел, при делении на 2.
0
Миниатюры
Совпадают ли цвета двух клеток шахматной доски  
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.01.2016, 12:51
Ответы с готовыми решениями:

Напишите программу, которая выводит обозначения клеток шахматной доски
Напишите программу, которая выводит обозначения клеток шахматной доски. Клетки нумеруются...

Напишите программу, которая выводит обозначения клеток шахматной доски
апишите программу, которая выводит обозначения клеток шахматной доски. Клетки нумеруются...

Координаты двух клеток шахматной доски
Есть координаты двух клеток шахматной доски. Вывести Yes, если фигура может за один ход перейти с...

Заполните матрицу 8*8 целых чисел так, чтобы нули располагались в позициях белых клеток, а единицы-в позициях черных клеток шахматной доски
помогите пожалуйста сделать Задание 4 Заполните матрицу 8*8 целых чисел так, чтобы нули...

5
Модератор
Эксперт NIX
2775 / 2025 / 678
Регистрация: 02.03.2015
Сообщений: 6,497
07.01.2016, 14:06 2
Лучший ответ Сообщение было отмечено jestev как решение

Решение

Как-то сложно у Вас всё… Чётность легко определяется № клетки + № строки - 1, после чего надо всего-лишь их сравнить.
Python
1
2
s1, s2 = ((int(input()) + int(input()) - 1) % 2 for _ in range(2))
print("Match" if s1 == s2 else "No")
1
1 / 2 / 0
Регистрация: 29.03.2015
Сообщений: 36
07.01.2016, 20:50  [ТС] 3
Спасибо Вам большое! Действительно, код у меня слишком запутанный и большой для такой задачи. Ещё раз спасибо.

Добавлено через 5 часов 57 минут
Кому интересно, вот ещё решение:
Python
1
2
3
4
5
6
7
8
d= int(input())
a= int(input())
b= int(input())
c= int(input())
if (a+b+c+d) % 2 == 0:
    print('YES')
else:
    print('NO')
2
Модератор
Эксперт NIX
2775 / 2025 / 678
Регистрация: 02.03.2015
Сообщений: 6,497
07.01.2016, 23:18 4
jestev, неплохо, только немного упростить стоило бы
Python
1
print('NO' if sum(int(input()) for _ in range(4)) % 2 else 'YES')
1
1 / 1 / 0
Регистрация: 29.10.2017
Сообщений: 102
31.10.2017, 10:31 5
Я сделал проще (решал на питонтьюторе).
Python
1
2
3
4
5
6
7
8
9
10
per0 = int(input())
per1 = int(input())
per2 = int(input())
per3 = int(input())
n = (per0 + per1) % 2
n1 = (per2 + per3) % 2
if n == n1:
    print('YES')
else:
    print('NO')
Мой код значительней короче.
1
0 / 0 / 0
Регистрация: 29.01.2020
Сообщений: 1
30.01.2020, 08:18 6
Python
1
2
3
4
5
6
7
8
9
10
11
12
a = int(input())
b = int(input())
 
c = int(input())
d = int(input())
 
if (a+b)%2 == 0 and (c+d)%2 == 0:
    print('YES')
elif (a+b)%2 != 0 and (c+d)%2 != 0:
    print('YES')
else:
    print('NO')
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.01.2020, 08:18

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Дано координаты двух клеток шахматной доски. Вывести «Yes», если слон может за один ход перейти с одной клетки в другую. В другом случае вывести «No».
Дано координаты двух клеток шахматной доски. Вывести «Yes», если слон может за один ход перейти с...

Процедура для закрашивания клеток шахматной доски
Ребят, передо мной задача: нарисовать шахматную доску. Я только начинающий и знаю только некоторые...

На заданных с клавиатуры координат клеток шахматной доски нарисовать ферзей
На заданных с клавиатуры координат клеток шахматной доски нарисовать ферзей (пометить как угодно)

Создание шахматной доски с регулируемым количеством клеток в Visual Basic 6.0
Здравствуйте, нужно срочно написать код программы "Шахматная доска" в Visual Basic 6.0. Но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.