Скажем, мы видим, что у нас какой-то ферзь пересекается. Нужно решить кого стоит передвинуть. Вероятно, нужно передвинуть тот, у которого пересечений с другими больше. Решаем двигать определенную фигуру. Определяется список клеток на которые мы можем передвинуть. После этого для каждой клетки ищем вес вот тут мб поиск кратчайшего и пригодится, сколько ходов потребуется ферзю, чтобы передвинуться на эту клетку и выбираем ближайшую.