Почему задача решается неправильно?

На python решаю задачу, где надо ввести координаты шахматной ячейки и найти все возвожные варинты хода конем с нее.
К примеру
ввод: B7 | вывод D6, C5, D8, A5 --- Это правильный ответ
ввод: B7 | вывод H6, C5, H8, A5 --- Это что выводит мой алгоритм
Вот код, почему - то часть координат правилная.

a = str(input('Введи координаты (типа D5): '))
alfavit = ['A','B','C','D','E','F','G','H']
doska = ([0,0,0,0,0,0,0,0]),([0,0,0,0,0,0,0,0]),([0,0,0,0,0,0,0,0]),([0,0,0,0,0,0,0,0]),([0,0,0,0,0,0,0,0]),([0,0,0,0,0,0,0,0]),([0,0,0,0,0,0,0,0]),([0,0,0,0,0,0,0,0])
chisla = [1,2,3,4,5,6,7,8]

#Создаю доску и нахожу координаты
for x in range(8):
    for y in range(8):
        doska[x][y] = str(alfavit[x] + str(chisla[y]))
        if a == doska[x][y]:
            coord1, coord2 = x, y

#В помощь проэкция доски
for i in range(8): 
    for j in range(8):
        if j == 7:
            print(doska[i][j],end = '\n')
        else:
            print (doska[i][j], end = ' ')

#Вычисляю куда пойдет 
for o in [-1,1]:
    for d in [-2,2]:
        if coord1 + o > 7 or coord2 + o > 7 or coord1 + d > 7 or coord2 + d > 7 or coord1 + o < -1 or coord2 + o < -1 or coord1 + d < -1 or coord2 + d < -1:
            continue
        else:
            print(doska[coord1 + o][coord2 + d])
            print(doska[coord1 + d][coord2 + o])#Тут скоррее всего проблемма

Кстати нет ли в python какой нибудь функции вывода координат?
  • Вопрос задан
  • 2386 просмотров
Решения вопроса 1
@throughtheether
human after all
Это условие:
if coord1 + o > 7 or coord2 + o > 7 or coord1 + d > 7 or coord2 + d > 7 or coord1 + o < -1 or coord2 + o < -1 or coord1 + d < -1 or coord2 + d < -1:
            continue
else:
    ...

,на мой взгляд, некорректно, оно отсекает правильные ответы и разрешает неправильные (H8 в примере с исходной клеткой B7). Я бы на вашем месте переписал тело цикла так:
if 0<=coord1 + o<=7 and 0<=coord2 + d<=7:
        print(doska[coord1 + o][coord2 + d])
if 0<=coord1 + d<=7 and 0<=coord2 + o<=7:
        print(doska[coord1 + d][coord2 + o])
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы