Задать вопрос

Как создать матрицу (шахматной доски) на Python?

Задача: Задать координаты двух шахматных полей и вывести одного они цвета или нет.

Ввод - 1122 Вывод - yes

Решить пытался так (в коде, не бейте: 95% знаний qbasik, остальное "сахарок" от python):
m = [[0] * 8] * 8
md = ['Черный','Белый']
n = 0
for i in range(8):
    for r in range(8):
        if n == 0:
            while n < 1:
                m[i][r] = md[n]
                n += 1
        else:
            while n >= 1:
                m[i][r] = md[n]
                n -= 1
v = input('Введите координаты полей')
if m[int(v[0])][int(v[1])] == m[int(v[2])][int(v[3])]:
    print('Yes')
else:
    print('No')

Получается не шахматная доска, а "зебристая" поверхность... Думаю, это можно было сделать намного проще, но знания этого ЯП пока так себе.
  • Вопрос задан
  • 12641 просмотр
Подписаться 5 Оценить Комментировать
Решения вопроса 1
Не в языке дело, а в алгоритме. У вас тут полный перебор, который не нужен.

def chess(a,b):
    return ((a[0]+a[1])&1 == (b[0]+b[1])&1);
print 'yes' if chess((1,2),(0,2)) else 'no';


Чтобы клетки были одного цвета, суммы координат клеток должны быть либо одновременно четными, либо одновременно нечетными. Если сумма координат одной клетки четная, а другой — нечетная, клетки разного цвета.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
tsarevfs
@tsarevfs
C++ developer
Не уверен, что это работает, но суть должна быть понятна.
first_black = x1 % 2 == y1 % 2
second_black = x2 % 2 == y2 % 2

print "yes" if first_black == second_black else "no"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы