理解这个编程挑战逻辑

时间:2016-10-09 16:30:58

标签: math language-agnostic logic

我正在研究这个programming challenge,我在理解棋盘的组成方面遇到了一些困难。从我设法理解的是:

  • 我们收到一张4 * 4的棋盘,它给我们16个。
  • 我们收到攻击者的输入测试,我们需要检查公式abs(x-xi)+ abs(y-yi)< = ri。操作的结果需要小于或等于ri,如果这个条件是正确的,棋盘的方块可以被攻击者攻击。

我打算做的是开始一个棋盘,第一个方格是(0,0),最后一个方格是(3,3)。我需要从第一个位置进行迭代,然后执行操作以查找该平方是否小于Ri,如果它小于标记该计数器的入口并继续。

我手动检查第一个案例的输出是否正确,我得到了5个可到达的正方形,但是输出得到了10.我从(1,1)开始重绘我的棋盘到(4,4) )手工完成数学并得到5.第一个测试是(1,1,1)攻击者处于位置(1,1),范围为1.

如果我使用从(0,0)开始的棋盘,可以攻击的方格是:2,5,6,7和10.如果我使用从(1,1)开始的棋盘,则方格是:1 ,2,5,9和10。

1 个答案:

答案 0 :(得分:1)

首先,我会坚持使用他们的符号,并以1为基础做事。其次,人们会攻击他们所在的广场。所以在第一种情况下,(1,1)攻击者攻击(1,1),(1,2)和(2,1),(3,1)攻击(3,1),(3,2) ),和(4,1)[也(2,1),但我们已经计算过]和(3,3)攻击本身,(2,3),(3,4)和(4,3)。 [也是(3,2),我们已经计算过]这就是10个被攻击的方块。 下一个案例指定了一个新的棋盘,其中1个攻击者是1比10。攻击者坐在(1,1)并攻击(1,1)和(1,2)所以2个方格。然后你的算法应该工作(你描述的方式,你需要在攻击者上嵌套第二个迭代循环,但我宁愿在循环中一次读取攻击者,然后迭代正方形)。