диагональ, проходящая в лабиринте

Нужно исправить задачу. Она здесь: https://ulearn.me/Course/BasicProgramming/Praktika_Labirint_diaghonal__e5f12764-5945-41d7-a02f-7664d422d600

Задача решена, всё проходит проверку. Соблюдены все требования к решению (по ссылке указаны, их 4). Но преподаватель выделил строки 7-10, указав что лучше было бы иметь один метод, отвечавший за движение в определенном направлении. Можете написать код, исправленный в соответствие с этим замечанием?

namespace Mazes
{
     public static class DiagonalMazeTask
    {
        public static void Do(Robot robot, int width, int f, int s, Direction first, Direction second)
        {
            for (int j = 0; ((f- 2) / (s- 2)) > j; j++)
                robot.MoveTo(first);
            if ((s- 2) > (width +1))
                robot.MoveTo(second);
        }
    }

     public static void MoveOut(Robot robot, int width, int height)
        {
            int f= height; int s= width;
            if (height < width)
            {
                f= width; s= height;
            }
            Direction first= (height > width) ? (Direction.Down) : (Direction.Right);
            Direction second= (height > width) ? (Direction.Right) : (Direction.Down);
            for (int i = 0; i < (s- 2); i++)
                Do(robot, i, f, s, first, second);
        }
}

Ответы (1 шт):

Автор решения: aepot

А что сложного в том, чтобы перенести код метода Do() в MoveOut()?

public static void MoveOut(Robot robot, int width, int height)
{
    int f = height < width ? width : height;
    int s = height < width ? height : width;

    Direction first = height > width ? Direction.Down : Direction.Right;
    Direction second = height > width ? Direction.Right : Direction.Down;

    for (int i = 0; i < s - 2; i++)
    {
        for (int j = 0; (f - 2) / (s - 2) > j; j++)
            robot.MoveTo(first);
        if (s - 2 > i + 1)
            robot.MoveTo(second);
    }
}
→ Ссылка