2013-10-11 4 views
1

Я пытаюсь реализовать абсолютное расстояние ранга файла, описанное на Knight-Distance из Chess Programming Wiki, но я немного запутался, что int с a и b должны быть валгоритм для вычисления кратчайшего расстояния рыцаря (шахматы)

int knightDistance(int a, int b). 

Вам не нужны два набора координат, чтобы понять это (начать местоположение и пункт назначения)? Я подумал, что, возможно, они использовали 0,0 в качестве начала, а затем вы просто даете разницу между начальным и конечным местоположениями, но это дает плохой результат.

Как это должно работать, и работает ли этот алгоритм для любой сетки размера или просто 8 × 8?

+0

'int knightDistance (int a, int b)' появляется несколько раз на этом сайте, на который вы ссылаетесь? У Knight Fill есть совсем другой подход, b1 и b2 представляют собой набор, закодированный в 64-битовое целое без знака. – Cruncher

ответ

2

Я считаю, что a и b - это отличные дельта расстояния от текущей позиции. От симметрии - только разность между текущей позицией и желаемой областью назначения.

+0

Это правильно. Это был мой первый инстинкт, я просто забыл использовать абсолютную ценность разницы между destX-startX и destY-startY. Он работает так, как ожидалось. Благодаря! – user2503227

+0

Другой вопрос: работает ли этот алгоритм для любой сетки размера или всего 8x8? – user2503227

+1

@Joshua Taylor: Это заставляет меня ждать 10 минут, прежде чем принимать ответ. – user2503227

Смежные вопросы