/
dashytka
/
Diagonal_Maze_Practice
Обзор
Документация
Войти
/
dashytka
/
Diagonal_Maze_Practice
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
c
68 строк
2 KB
dashytka
create c#
11 окт 2025, 18:32
11 окт 2025, 18:32
92033b6
Код
Авторство
О чём код?
namespace Mazes { public static class DiagonalMazeTask { public static void MoveOut(Robot robot, int width, int height) { int mazeWidth = width - 2; int mazeHeight = height - 2; if (mazeHeight < mazeWidth) { int rightStepsPerMove = mazeWidth / mazeHeight + 1; MoveDiagonalStartingRight(robot, 2, rightStepsPerMove, mazeHeight); } else { int downStepsPerMove = CalculateDownStepsPerMove(mazeHeight, mazeWidth); MoveDiagonalStartingDown(robot, downStepsPerMove, 2, mazeWidth); } } private static int CalculateDownStepsPerMove(int mazeHeight, int mazeWidth) { double ratio = (double)mazeHeight / mazeWidth; return (int)System.Math.Round(ratio) + 1; } public static void MoveDiagonalStartingDown( Robot robot, int downSteps, int rightSteps, int iterations) { for (int i = 0; i < iterations; i++) { MoveDown(robot, downSteps); if (i != iterations - 1) MoveRight(robot, rightSteps); } } public static void MoveDiagonalStartingRight( Robot robot, int downSteps, int rightSteps, int iterations) { for (int i = 0; i < iterations; i++) { MoveRight(robot, rightSteps); if (i != iterations - 1) MoveDown(robot, downSteps); } } public static void MoveRight(Robot robot, int steps) { for (int i = 1; i < steps; i++) robot.MoveTo(Direction.Right); } public static void MoveDown(Robot robot, int steps) { for (int i = 1; i < steps; i++) robot.MoveTo(Direction.Down); } } }