Skip to content

Rygrotten/Puzzles_for_prosoft

Repository files navigation

Puzzles_for_prosoft

1.The Descent

Задача: поиск наибольшего значения из входных данных и вывод индекса

Условие не подразумевало создания массива, поэтому вне цикла была объявлена переменная index, отвечающая за индекс элемента. Также была объявлена переменная previous_height, отвечающая за значения предыдущих элементов. В конце каждого цикла ей присваивалось значение -1, что создавало потенциальную проблему в случае подачи на вход массива отрицательных чисел, но по условию такого быть не могло. Изначально был допущен лишний шаг в виде обнуления индекса в конце цикла, однако он был убран за ненадобностью.

  1. Temperatures

Задача: вывести наиболее близкую к нулю температуру из заданного количества значений. В случае отсутствия температур вывести 0. В случае равенства по модулю вывести положительное.

Под ответ была создана переменная ans со значением на 1 больше предельного отклонения от нуля. До цикла было прописано завершение программы при получении 0 на вводе количества значений. В цикле было создано 2 условия. Проверка на меньше предыдущего сохранённого значения и проверка на равенство по модулю. Задача было простая.

  1. Shadows of the Knight - Episode 1

Задача на бинарный поиск в 2-мерном массиве. Была сложной, долго не мог въехать в условие. В итоге полез смотреть, что такое бинарный поиск. Примерно понял, реализовал алгоритм, добавив переменные xmax, xmin, ymax, ymin для удержания окна поиска, после чего перед новым шагом цикла переносил координаты x0, y0 в центр области

  1. Power of Thor - Episode 1

Задача: пошаговое построение пути до точки на плоскости.

Для решения были созданы переменные текущего положения и реализован алгоритм, при котором координата по x и y менялась каждый шаг цикла, пока не достигала равенства координате точки назначения. Сложностей не возникло, но сначала были попытки сделать лишние шаги, т.к. не совсем понятен был формат ввода/вывода

  1. There is no Spoon - Episode 1

Задача - найти всех соседей каждого значащего элемента матрицы 30 на 30

Написанный код считывает массив строк, после чего для каждого элемента != "." происходит поиск соседей направо и вниз. Если соседей нет, то в вывод идёт -1 -1, если есть, то координаты найденного соседа. Таким образом получается перебор всех ссуществующих значащих ячеек, исключающий повторение нодов. Код не универсальный, массив больше чем из 30 строк не пройдёт, ограничение получено из ограничений в условии задачи.

  1. Mars Lander - Episode 1

Задача: добиться параметров в заданных пределах в момент приземления

Угловую часть задачи я не решал (по условию падение вертикальное и строго на горизонтальную площадку). Соответственно в выводе угол всегда 0. Сопло включалось только в момент превышения скорости в -40 м/с. Таким образом скорость, достигая -40, всё время будет оставаться на этой границе.

  1. Defibrillators

Задача: из всех дефибрилляторов найти ближайший к координатам пользователя и вывести его название

Более комплексная задача. Ввёл функцию перевода строки в число формата double для улучшения читаемости кода. Дальше перевёл координаты пользователя в формат числа с плавающей точкой, в радианах, т.к. расчёт расстояния происходит через тригонометрию, которая требует значений в радианах. Также ввёл переменные для хранения в памяти ближайшего дефибриллятора. После чего в цикле при получении его координат приводил их к общему виду, высчитывал координаты x и y, считал расстояние и проверял, меньше ли оно, чем текущий минимум. Если да, то сохранял новое значение. Возможно, задача легче решашась через векторы, недаром там есть по стандарту подключенная библиотека vectors, но она точно не была обязательной, поэтому решение написал через знакомые инструменты

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages