Нужно доделать программу "Ход коня" отдам быллы которые смогу.


def cell_to_cords(cell_name):

letter_to_cord = {'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5, 'F': 6, 'G': 7, 'H': 8}

return letter_to_cord[cell_name[0]], int(cell_name[1])



def cords_to_name(cords):

name = {1: 'A', 2: 'B', 3: 'C', 4: 'D', 5: 'E', 6: 'F', 7: 'G', 8: 'H'}

return name[cords[0]] + str(cords[1])



def generate_possible_moves(cords):

move_deltas = [(-2, -1), (-2, 1), (-1, -2), (-1, 2), (1, -2), (1, 2), (2, -1), (2, 1)]

# Из текущей координаты нужно получить список из 8 возможных координат для движения коня (формат результата - см. строку выше)

pass



def generate_correct_moves(possible_moves):

# Из восьми возможных конечных координат коня отсеивает те, что выходят за пределы доски

pass



def get_possible_knight_moves(cur_knight_pos):

possible_moves = generate_possible_moves(cell_to_cords(cur_knight_pos))

correct_moves = generate_correct_moves(possible_moves)

for move in range(len(correct_moves)):

correct_moves[move] = cords_to_name(correct_moves[move])

return sorted(correct_moves)



if __name__ == '__main__':

current_knight_pos = input('Enter current knight position:')

print(*get_possible_knight_moves(current_knight_pos))

Ответы

Ответ дал: Damir1121
1

Ответ:

Можно вместо функции перевода из буквы в число и наоборот использовать ord и c h r, например:

ord(start[0]) - ord('A') + 1

и

c h r(x + ord('A') - 1)

Функциям поменял название, но думаю это непринципиально.

Доработанный код:

gist.github.com/Ruletk/c648b676a68f00420dce0d441fd39844

Сюда к сожалению код не хочет вставляться, поэтому на гист закинул.

UPD: Забавно, сайт блокирует c h r, из за этого я не могу скинуть код сюда...


erkein65: большое спасибо, а можешь прислать код, без использований ord и c h r, просто я немного запутался с названиями переменных. Просто код должен в этом месте быть похож на тот, который я присылал
erkein65: то есть x0 = int(start[1])
y0 = ord(start[0]) - ord('A') + 1
erkein65: нужно заменить на def cell_to_cords(cell_name):

letter_to_cord = {'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5, 'F': 6, 'G': 7, 'H': 8}

return letter_to_cord[cell_name[0]], int(cell_name[1])

def cords_to_name(cords):

name = {1: 'A', 2: 'B', 3: 'C', 4: 'D', 5: 'E', 6: 'F', 7: 'G', 8: 'H'}

return name[cords[0]] + str(cords[1])
erkein65: сможешь?
Damir1121: Да, сейчас
Damir1121: Обновил, но вместе с этим нужно еще добавить проверку на вхождения в диапазон A-H, т.к с ord ненужные значение отсеивались в функции in_board
erkein65: спасибо
Вас заинтересует