当前位置: 首页 > 知识库问答 >
问题:

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

左丘季
2023-03-14

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

例如:

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

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

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

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

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

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

在左下角移动中访问的方块总数=8–数学。最大(r,9-c)

右下移动中访问的方块总数=8–数学。最大(r,c)

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

伙计们,我搞不懂上面对角线计算背后的逻辑。请帮我找出上面的对角线是用什么逻辑计算的???我只需要逻辑。不需要代码。

(此外,如果你能帮助解决类似国际象棋问题或矩阵的基本逻辑,那就太棒了。)

棋盘图像供参考

共有2个答案

师增
2023-03-14

简单地将这个公式应用于任何方向:距离=最大值(abs(x1-x2),abs(y1-y2))

杨星纬
2023-03-14

到电路板边缘的左上角距离实际上是min(r,c)-1。假设主教从等级r开始,在到达第一等级之前,它最多只能向上移动r-1等级。如果c,它可能会命中之前的第一个文件

类似地,当朝向左下角时,排名会增加,而文件会减少。主教最多可以移动8-r排名,最多可以移动c-1文件,因此左下角的公式是min(8-r, c-1)。这可以重构为8-max(r,9-c),尽管这个表达式似乎更复杂。

 类似资料:
  • 我正试图从现实中解决一个问题 “偶数总和” 但是我不能这样做。下面是问题。 即使是总和也是两个玩家的游戏。玩家将获得N个正整数序列并轮流进行。在每个回合中,玩家选择一个非空切片(连续元素的子序列),使得该切片中的值之和是偶数,然后删除切片并连接序列的其余部分。第一个无法做出合法举动的玩家将输掉比赛。 如果你和你的对手玩这场游戏,你想知道你是否能赢,假设你和对手都玩得很好。你先走。 写一个函数:

  • 我刚刚学习了Android和Java编程(里面非常noob),我想问一些关于Android编程和Socket服务器的问题。 我得到一个任务,创建一个简单的国际象棋应用程序(不包括AI),棋子的位置将从TCP套接字中检索: 服务器:xinuc.org 端口:7387 我被告知使用Socket Persistent,因为服务器会在每秒更新典当的位置,典当的位置将以这种格式发送 [卒典][横位][竖位]

  • 本文向大家介绍什么是JavaScript中的逻辑运算符?,包括了什么是JavaScript中的逻辑运算符?的使用技巧和注意事项,需要的朋友参考一下 JavaScript支持以下逻辑运算符。假设变量A持有10,变量B持有20,那么, 序号 运算符和说明 1 &&(逻辑与) 如果两个操作数都不为零,则条件变为true。 例如:(A && B)是真的。 2 | | (逻辑或) 如果两个操作数中的任何一个

  • and, or, not 其中,and 和 or 与 C 语言区别特别大。 在这里,请先记住,在 Lua 中,只有 false 和 nil 才计算为 false,其它任何数据都计算为 true,0 也是 true! and 和 or 的运算结果不是 true 和 false,而是和它的两个操作数相关。 a and b: 如果 a 为 false,则返回 a;否则返回 b a or b: 如果 a

  • 2.2.1关系表达式 a) 关系运算符 关系运算符就是关系比较符。Fortran中有六个关系运算符: 关系运算符 英语含义 所代表的数学符号 .GT. .GE. .LT. .LE. .EQ. .NE. > >= < <= == /= Greater Than Greater than or Equal to Less Than Less than or Equal to EQual to Not