Skip to content

Bo81K/ForProsystSchool

Repository files navigation

Условия задач

ASCII Art (простая задачка):

Цель задачи — смоделировать старый дисплей терминала аэропорта: ваша программа должна отобразить строку текста в формате ASCII-графики. Нужно разбить строки, сохранить их и создать заново. Можно использовать структуры данных, такие как массивы или хеш-таблицы.

The Resistance

В этой задаче программа должна уметь определять количество различных сообщений, которые можно получить из одной последовательности Морзе и заданного словаря. Даже если это выглядит просто, возможностей много, и только оптимизированный алгоритм может вычислять длинные предложения.

Search Race

Цель Это оптимизационная головоломка, в которой вам нужно как можно быстрее проехать серию контрольных точек. Правила Вы управляете автомобилем, мчащимся через ряд контрольных точек. Каждая контрольная точка расположена в месте, обозначенномхиу. Выбор контрольной точки для цели определяетсяcheckpointIndexУказывает на значение в контрольных точках, заданных в качестве начальных входных данных.

Контрольные точки повторяются при задании входных данных (в отличие от CSB). Игра происходит на карте.16000единиц в ширину и9000Единицы измерения высоты. Координаты X=0, Y=0 — верхний левый пиксель. Контрольные точки работают следующим образом: Контрольно-пропускные пункты имеют круглую форму, радиусом 600 единиц. Расположение контрольных точек задается тестовыми случаями. Контрольно-пропускные пункты не пересекаются. Работает машина следующим образом: Каждый ход он принимает новую команду, учитывая позицию иТОЛКАТЬуказывая, куда ехать. Максимальное отклонение составит 18 градусов от текущего направления. Когда курс установлен, машина использует заданный курс.толкатьдвигаться в новом направлении. Чтобы въехать на контрольно-пропускной пункт, центр автомобиля должен находиться в пределах600подразделениями контрольно-пропускного пункта центра.

Running Up That Hill

Вы — Кэтрин, вы знаете, что Алиса и Боб тайно переписываются, и хотите быть посредником между ними. То есть вы хотите перехватывать сообщения Алисы и Боба, читать их и отправлять им сообщения, которые вы зашифруете вместо их сообщений. Если Алиса отправит Бобу сообщение, Боб получит не её сообщение, а ваше. Вам повезло: вы перехватили зашифрованный текст и его расшифрованную версию, и вы знаете, что они используют метод шифрования Хилла. Вам нужно найти матрицу Хилла, чтобы расшифровать сообщение Алисы или Боба и зашифровать текст, который вы хотите отправить.

The Crime Scene

Детективу Sharelock Codes приходится осматривать множество мест преступлений. Он находит улики, разбросанные по всему месту преступления, и доктор Сторожевой Пёс тщательно записывает их местоположение. Добрый доктор отправляет координаты всех улик (Xi Yi) детективу по электронной почте. Затем Sharelock рассчитывает, сколько рулонов жёлтой полицейской ленты ему нужно купить, чтобы защитить все улики. Очевидно, что все улики должны быть заключены в одну «ленту», но, кроме того, все улики должны быть как минимум3футов от полицейской линии во всех точках. Рулон ленты 5 Длина рулона составляет около 300 см, и он довольно дорогой, поэтому Шарлок хочет купить ровно столько рулонов, сколько необходимо. Помогите ему, написав программу для расчёта минимального количества рулонов, необходимого для оцепления места преступления

Реализованные решения

Для каждой из задач были реализованы следующие функциональности:

ASCII Art:

Преобразование текста в ASCII-арт на основе заданных параметров ширины и высоты символов. Чтение входных данных (ширина, высота, текст и шаблон символов) и генерация выходного ASCII-изображения. Обработка заглавных и неизвестных символов с использованием символа "?".

The Resistance:

Преобразование слов в их Morse-коды и использование динамического программирования для подсчета возможных сегментаций последовательности. Чтение входной Morse-последовательности и словаря, построение триевой структуры для оптимизации поиска. Вычисление количества валидных сообщений на основе словаря.

Search Race:

Управление автомобилем через серию контрольных точек с учетом ограничений на угол поворота (18 градусов) и тяги (0-200). Расчет угла поворота к целевой точке, адаптация тяги в зависимости от расстояния для предотвращения зацикливания. Обработка позиций, скоростей и углов для оптимизации траектории.

Running Up That Hill:

Преобразование текста в числовые индексы на основе алфавита QR-кодов (45 символов). Определение размера матрицы шифра и выполнение матричного умножения с модулем 45 для шифрования и расшифровки. Аппроксимация матрицы Хилла на основе разницы зашифрованного и открытого текста.

The Crime Scene:

Считывание координат точек (улики) и построение выпуклой оболочки алгоритмом Эндрю. Вычисление периметра оболочки и добавление запаса для отступа ленты на 3 фута (расширение периметра на 2π*3). Определение минимального количества рулонов ленты длиной 5 футов, необходимых для ограждения всех точек.

Идеи и алгоритмы

ASCII Art:

Разбиение текста на символы и сопоставление каждого с соответствующими строками из входного шаблона. Использовался простой итеративный подход для построения выходного изображения.

The Resistance:

Использование динамического программирования для подсчета сегментаций последовательности. Оптимизация через триевую структуру для обработки больших словарей и длинных последовательностей.

Search Race:

Стратегия целеуказания (направление на следующую точку) с адаптацией тяги и угла поворота. Постепенное уменьшение скорости и радиуса поворота для предотвращения зацикливания.

Running Up That Hill:

Вычисление матрицы Хилла через аппроксимацию по известным открытым текстам и их шифрам. Матричное умножение блоков текста с модулем 45 для шифрования и дешифрования.

The Crime Scene:

Построение минимальной выпуклой оболочки для точек с координатами. Добавление отступа ленты (радиус 3 фута) через прибавление окружности длиной 2π*3. Округление полученной длины до количества рулонов (деление на 5 футов и ceil).

Сложности

ASCII Art:

Решение оказалось относительно простым, но требовало точного соответствия размеров блоков.

The Resistance:

Тайм-аут на больших входных данных. Изначально O(N * L * M) подход был заменен на триевую структуру с DP для оптимизации до O(L * M), где L — длина последовательности, M — максимальная длина слова.

Search Race:

Зацикливание около контрольных точек из-за недостаточной адаптации тяги и угла. Решалось постепенным уменьшением тяги и остановкой близко к точке.

Running Up That Hill:

Работа с арифметикой по модулю 45 и корректным выделением памяти для матриц. Аппроксимация матрицы не всегда точна, что потребовало реализации полной инверсии матрицы.

The Crime Scene:

Обработка большого количества точек (до 100000) с точностью вычисления периметра. Учёт отступа на 3 фута на всей оболочке для корректного подсчёта длины ленты.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages