диагональ, проходящая в лабиринте
Нужно исправить задачу. Она здесь: 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);
}
}