Logic 在棋盘上计算对角线背后的逻辑是什么?

Logic 在棋盘上计算对角线背后的逻辑是什么?,logic,chess,Logic,Chess,给定主教在8*8棋盘上的位置,任务是计算主教在一步中可以访问的方块总数。主教的位置用棋盘上的行数和列数表示 示例: 输入:行=4,列=4 产出:13 输入:行=1,列=1 输出:7 方法:在国际象棋比赛中,主教只能沿对角线移动,并且每一步的距离没有限制 所以,我们也可以说Bishop可以从当前位置以四种方式移动,即对角左上角、右上角、左下角和右下角 我们可以通过以下方法计算每次移动中访问的方块数: 左上移动中访问的总方块数=Math.min(r,c)–1 右上移动中访问的总方块数=Math.mi

给定主教在8*8棋盘上的位置,任务是计算主教在一步中可以访问的方块总数。主教的位置用棋盘上的行数和列数表示

示例:

输入:行=4,列=4
产出:13
输入:行=1,列=1
输出:7

方法:在国际象棋比赛中,主教只能沿对角线移动,并且每一步的距离没有限制

所以,我们也可以说Bishop可以从当前位置以四种方式移动,即对角左上角、右上角、左下角和右下角

我们可以通过以下方法计算每次移动中访问的方块数:

左上移动中访问的总方块数=
Math.min(r,c)–1

右上移动中访问的总方块数=
Math.min(r,9-c)–1

左下移动中访问的总方块数=
8–Math.max(r,9–c)

右下移动中访问的总平方=
8–Math.max(r,c)

其中,
r
c
是主教在棋盘上当前位置的坐标

伙计们,我无法理解上述对角线计算背后的逻辑。请帮我找出上面计算对角线的逻辑是什么???我只需要逻辑。不需要代码

(同样,如果你能帮助解决类似国际象棋问题或矩阵的基本逻辑,那将是非常棒的)


到电路板边缘的左上角距离确实是
min(r,c)-1
。假设bishop从秩
r
开始,它可以在到达第一秩之前向上移动不超过
r-1
秩。如果
c
,它可能会命中之前的第一个文件,在这种情况下,它只能移动
c-1
方块。例如,如果bishop从
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)
,尽管这个表达式看起来更复杂。

只需将这个公式应用于任何方向:距离=max(abs(x1-x2),abs(y1-y2))很好的解释。