Какова логика расчета диагоналей на шахматной доске? - PullRequest
0 голосов
/ 22 октября 2019

Учитывая положение епископа на шахматной доске 8 * 8, задача состоит в том, чтобы подсчитать общее количество квадратов, которые епископ может посетить за один ход. Позиция епископа обозначается номером строки и столбца шахматной доски.

Примеры:

Input: Row = 4, Column = 4 Output: 13 Input: Row = 1, Column = 1 Output: 7

Подход: в игре в шахматы епископ можетдвигаться только по диагонали, и для каждого хода нет ограничений по расстоянию.

Итак, мы также можем сказать, что епископ может двигаться четырьмя способами, то есть по диагонали вверх слева, сверху справа, снизу слева и снизу справа от текущей позиции.

Мы можем вычислить количество квадратов, посещенных в каждом движении:

Всего квадратов, посещенных в верхнем левом ходу = Math.min(r, c) – 1

Всего квадратов, посещенных в верхнем правом движении =Math.min(r, 9 – c) – 1

Общее количество квадратов, посещенных в нижнем левом ходу = 8 – Math.max(r, 9 – c)

Общее количество квадратов, посещенных в нижнем правом движении = 8 – Math.max(r, c)

где, r и c - это координаты текущей позиции епископа на шахматной доске.

Ребята Я не могу понять логику вышеупомянутых диагональных вычислений. Пожалуйста, помогите мне выяснить, по какой логике вычисляются диагонали выше ??? Мне просто нужна логика. Код не требуется.

(Также, если вы можете помочь с основной логикой подобных видов шахматных задач или матриц, это было бы здорово)

Изображение шахматной доски для справки

1 Ответ

0 голосов
/ 23 октября 2019

Верхнее левое расстояние до края доски действительно min(r, c) - 1. Учитывая, что слон начинает с ранга r, он может подняться не более чем на r - 1 ранга, прежде чем приземлиться на первый ранг. Он может попасть в первый файл до этого, если c < r, и в этом случае он сможет перемещать только c - 1 квадратов. Например, если слон начинается с r = 5 и c = 4, он сможет сдвинуть три квадрата, а не четыре. Таким образом, верхняя левая формула имеет вид min(r - 1, c - 1), который может быть изменен на min(r, c) - 1.

Аналогично, при движении в направлении нижнего левого угла ранг увеличивается, а файл уменьшается. Слон может перемещаться не более 8 - r разрядов и не более c - 1 файлов, поэтому нижняя левая формула имеет вид min(8 - r, c - 1). Это может быть изменено на 8 – max(r, 9 – c), хотя это выражение кажется более запутанным.

...