void runRobot() { // Количество перекрёстков const int n = 5; // Расположение кубиков bool cubes[] = {0, 0, 0, 0, 0}; // Сигнализируем о начале выполнения алгоритма beep(2); // Отслеживаем текущий перекрёсток int i = 0; // Сканируем кубики в верхнем ряду while (i < n) { // Едем до перекрёстка goToCrossroad(); // Сканируем ячейку scan(i, cubes); // Переходим к следующему перекрёстку i++; } // Все перекрёстки просканированы — переходим к нижнему ряду goToB(); // Проезжаем перекрёстки в обратном порядке while (i > 0) { // Едем до перекрёстка goToCrossroad(); // Проверяем, нужно ли переместить кубик if (cubes[i - 1] == 0) { // Перемещаем кубик moveCube(i, n); } // Переходим к следующему перекрёстку i--; } // Все кубики на своих местах — возвращаемся в стартовую зону // Доезжаем до нижнего угла трассы goToCrossroad(); // Поворачиваем направо turnR(); // Доезжаем до верхнего угла трассы рядом со стартовой зоной goToCrossroad(); // Сигнализируем о завершении алгоритма beep(3); }