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链接这是第二个问题托尔的力量

CodeinGame雷神之力2级不起作用

不是递增或递减位置变量,而是将它们重置为+/-1。此处:

    if (thorx>lightX)
    {
        directionX="W";
        thorx=-1;
        Console.WriteLine("W");
    }

应该是:

    if (thorx>lightX)
    {
        directionX="W";
        thorx -= 1;
        Console.WriteLine("W");
    }

或者更好,因为您完全没有使用directionXdirectionY值:

    if (thorx>lightX)
    {
        thorx -= 1;
        Console.WriteLine("W");
    }

下一个问题(正如vernerik所指出的)是,当向南移动时,您正在调整thorx。南方应增加thory

最后,这个代码向西/向东移动,直到与目标垂直对齐,然后向北/向南移动,这是低效的。它将通过前三个测试,但第四个测试失败——最佳角度。要通过测试,你还必须使用对角线移动:NW、NE、SW、SE。