Skip to content

Stepan939/Tests

Repository files navigation

The Descent

Ключевые моменты реализации

  • Игровой цикл: Бесконечный цикл while (1) обеспечивает обработку каждого этапа игры.
  • Сброс состояния: В начале каждой итерации обнуляются переменные max_h и target для корректного поиска нового максимума.
  • Поиск максимума: В цикле из 8 итераций происходит:
  • Считывание высоты текущей горы и сравнение с текущим максимумом.
  • Обновление значений max_h и target при нахождении более высокой горы.

Temperatures

Ключевые моменты реализации

  • Чтение количества температур.
  • Обработка случая n=0: Если температур нет (n=0), программа сразу выводит 0 и завершает работу.
  • Поиск ближайшей к нулю температуры.
  • Инициализирует переменную temp значением 5527 (заведомо большое число по модулю)
  • Для каждой введенной температуры t:
    • Если модуль t меньше модуля текущего temp, то temp обновляется
    • Если модули равны, но t положительное, а текущее temp отрицательное, выбирается положительное значение.

Сложности

  • Если бы мы инициализировали temp = 0, то первая же температура сравнивалась бы с 0, а алгоритм всегда находил бы температуру, равную 0 (если она есть) и если температуры 0 нет в списке, то алгоритм работал бы некорректно.
  • Пэтому было выбрано чилсо 5527 т.к гарантированно больше любой возможной температуры по модулю.

Power of Thor - Episode 1

Ключевые моменты реализации

  • Программа считывает начальные координаты Тора и его цели.
  • Используется цикл while (1), который будет выполняться, пока Тор не достигнет цели.
  • Логика определения направления заключается в том, что алгоритм проверяет положение Тора относительно цели по каждой оси независимо и формирует строку направления как комбинацию двух компонент: вертикальной и горизонтальной.
  • Сформированная строка direction (которая может быть "", "N", "S", "W", "E", или любой их комбинацией: "NW", "SE") выводится на экран. Это и есть команда для движения на текущем ходу.
  • Координаты Тора (thor_x, thor_y) обновляются непосредственно перед выводом.

Сложности

  • Порядок проверки осей (сначала Y, потом X) важен для формирования строки вывода. Он гарантирует, что направление всегда будет выводиться в порядке "Вертикаль-Горизонталь" (например, "NE", а не "EN").

Shadows of the Knight - Episode 1

Ключевые моменты реализации

  • Идея алгоритма поддерживать постоянно сужающийся прямоугольник (x_min, x_max, y_min, y_max), внутри которого находится бомба.

  • Определение координаты происходит следущим образом:

  • 'U': Бомба выше. Новая верхняя граница (y_max) становится на 1 меньше текущей Y-координаты.

  • 'D': Бомба ниже. Новая нижняя граница (y_min) становится на 1 больше текущей Y-координаты.

  • 'L': Бомба левее. Новая правая граница (x_max) становится на 1 меньше текущей X-координаты.

  • 'R': Бомба правее. Новая левая граница (x_min) становится на 1 больше текущей X-координаты.

  • Для составных направлений (например, "UR") выполняются сразу два обновления.

  • После обновления границ новая точка вычисляется как среднее арифметическое от новых минимальной и максимальной границ по каждой оси. Это будет середина нового, прямоугольника поиска.

Сложности

  • Важно было правильно определить начальные границы, чтобы не выходить за пределы здания. Обновление границ на y - 1 / y + 1 важно, чтобы исключить из поиска текущую позицию Бэтмена, которая уже проверена и не содержит бомбу.

  • Составные направления, обработка направлений вроде "UR" реализована эффективно и без дублирования кода через проверку вхождения каждой части направления ('U', 'R') в строку-подсказку с помощью string::find.

    ASCII Art

    Ключевые моменты реализации

  • Считываются параметры букв (l - ширина, h - высота)

  • Текст t преобразуется в верхний регистр с помощью transform, так как ASCII-арт обычно предоставляется только для заглавных букв.

  • Используется вектор строк ascii_rows для хранения строк ASCII, каждая строка сохраняется отдельно.

  • Алгоритм преобразования:

  • Для каждой строки высоты h формируется результирующая строка

  • Для каждого символа в тексте определяется его позиция в алфавите

  • Вычисляется начальная позиция в ASCII-строке: pos * l

  • Из соответствующей строки ASCII-арта извлекается фрагмент шириной l символов

  • Для символов, не являющихся буквами, используется позиция 26, т.е знак вопроса.

    Сложности

  • Проблема разных регистров решена преобразованием всего текста в верхний регистр.

  • Реализована корректная обработка пробелов, знаков препинания и других символов через использование запасного варианта (позиция 26).

  • Вычисление начальной позиции для фрагмента ASCII-арта: pos * l.

    Unary

    Ключевые моменты реализации

  • Важно использовать именно 7 бит на символ (а не 8), так как это соответствует стандарту ASCII.

  • Обработка битовой последовательности происходит в один проход.

  • Кодируются не сами биты, а последовательности одинаковых битов.

    Horse-racing Duals

    Ключевые моменты реализации

    • После сортировки массива минимальная разница обязательно будет между двумя соседними элементами, что позволяет быстрее решить задачу.
    • Благодоря сортировке достаточно одного прохода по массиву, на каждом шаге сравниваем текущую пару соседей с найденным минимумом.
    • Пришлось инициализировать переменную mindiff как INT_MAX, поскольку из-за "мусорных" значкений программа работала некорректно, также граничные условия - цикла до n-1, чтобы избежать выхода за границы массива.

    Island Escape

    Ключевые моменты реализации

    • BFS подход - обход "слой за слоем" от центра к краям
    • Указатели front и rear для эмуляции очереди
    • Массив visited для отслеживания посещенных клеток
    • Обработка краев карты
    • Учет физического ограничения (разница высот)
    • Выход при первом достижении цели

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published