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

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

07.01.2016, 12:51. Показов 73198. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача звучит так:
Заданы две клетки шахматной доски. Если они покрашены в один цвет, то выведите слово 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
Ответы с готовыми решениями:

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

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

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

Определить, являются ли поля шахматной доски (a, b) и (c, d) полями одного цвета.
Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми:...

Массивы. По координатам двух клеток шахматной доски определить, одного ли цвета эти клетки
По координатам двух клеток шахматной доски определить, одного ли цвета эти клетки.

9
Эксперт NIX
2795 / 2038 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
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
2795 / 2038 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
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
0 / 0 / 0
Регистрация: 11.05.2021
Сообщений: 3
11.05.2021, 18:23 7
Без сторонних библиотек, только через if, else:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
coor1, coor2  = input(), input()
let1 = ['a', 'c', 'e', 'g']
 
 
if coor1[0] in let1:
    num_1 = 0
else:
    num_1 = 1
if coor2[0] in let1:
    num_2 = 0
else:
    num_2 = 1
    
sum_1 = num_1 + int(coor1[1])
sum_2 = num_2 + int(coor2[1])
 
if (sum_1 + sum_2) % 2 == 0:
    print('Клетки одинакового цвета')
else:
    print('Клетки не одинакового цвета')
0
4937 / 3290 / 1140
Регистрация: 21.03.2016
Сообщений: 8,071
11.05.2021, 18:28 8
Mars_ellio, год прошел с последнего ответа...... ну да ладно
но черт возьми покажите где в кодах данной темы сторонние библиотеки ???
2
4921 / 2674 / 550
Регистрация: 07.11.2019
Сообщений: 4,395
11.05.2021, 18:50 9
Без сторонних библиотек и без if и else:
Python
1
print(('YES', 'NO')[sum(int(input()) for _ in range(4))%2])
1
0 / 0 / 0
Регистрация: 11.05.2021
Сообщений: 3
12.05.2021, 11:30 10
Semen-Semenich, Нигде, это ответ для будущих студентов, таких же как я.
Задания одинаковые, часто говориться, не используйте библиотеки сторонние.

И ответ немного не по формату, тут нужно ввести 4 цифровых данных.
в моем случае было всего два ввода с позицией клетки на шахматной доске.
Пример:
Python
1
2
а4 # (белая клетка)
с3 # (черная клетка)
Сначала переводим буквы в цифровой формат.
А потом ищем суммы и результат (четный или нечётный)
Использовать sum() тоже было запрещено.

Поэтому так получилось))
0
12.05.2021, 11:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2021, 11:30
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru