CodeinGame雷神之力2级不起作用
本文关键字:2级 不起作用 雷神 CodeinGame | 更新日期: 2023-09-27 18:21:05
我在CodeinGame中解决了一个问题,我必须把托尔带到灯光下;lightY是灯的位置&thorx&thory是thor的位置&initiaTX,initiaTX正在启动thor位置,但它没有通过网站上的一些测试用例,例如:如果初始pos为(5,4),则通过Log但如果初始pos为(31,17),则会使Log 失败
我的代码
string[] inputs = Console.ReadLine().Split(' ');
int lightX = int.Parse(inputs[0]); // the X position of the light of power
int lightY = int.Parse(inputs[1]); // the Y position of the light of power
int initialTX = int.Parse(inputs[2]); // Thor's starting X position
int initialTY = int.Parse(inputs[3]); // Thor's starting Y position
// game loop
int thorx=initialTX;
int thory=initialTY;
string directionX, directionY;
while (true)
{
int remainingTurns = int.Parse(Console.ReadLine()); // The remaining amount of turns Thor can move. Do not remove this line.
// Write an action using Console.WriteLine()
// To debug: Console.Error.WriteLine("Debug messages...");
if (thorx>lightX)
{
directionX="W";
thorx=-1;
Console.WriteLine("W");
}
else if (thorx<lightX)
{
directionX="E";
thorx=+1;
Console.WriteLine("E");
}
else
{
if (thory>lightY)
{
directionY="N";
thory=-1;
Console.WriteLine("N");
}
else if (thory<lightY)
{
directionY="S";
thorx=+1;
Console.WriteLine("S");
}
}
CodeinGame链接这是第二个问题托尔的力量
不是递增或递减位置变量,而是将它们重置为+/-1。此处:
if (thorx>lightX)
{
directionX="W";
thorx=-1;
Console.WriteLine("W");
}
应该是:
if (thorx>lightX)
{
directionX="W";
thorx -= 1;
Console.WriteLine("W");
}
或者更好,因为您完全没有使用directionX
和directionY
值:
if (thorx>lightX)
{
thorx -= 1;
Console.WriteLine("W");
}
下一个问题(正如vernerik
所指出的)是,当向南移动时,您正在调整thorx
。南方应增加thory
。
最后,这个代码向西/向东移动,直到与目标垂直对齐,然后向北/向南移动,这是低效的。它将通过前三个测试,但第四个测试失败——最佳角度。要通过测试,你还必须使用对角线移动:NW、NE、SW、SE。