Автор: | А. Баранов | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
Имеется параллелепипед со сторонами, параллельными осям координат: D = { (x, y, z): xmin ≤ x ≤ xmax, ymin ≤ y ≤ ymax, zmin ≤ z ≤ zmax} и некоторый треугольник T, заданный координатами своих вершин: (x1, y1, z1), (x2, y2, z2), (x3, y3, z3).
Требуется определить площадь части треугольника T, которая лежит внутри параллелепипеда D.
В начале входных данных записаны координаты двух наиболее удаленных вершин параллелепипеда: (xmin, ymin, zmin), (xmax, ymax, zmax).
Далее следуют координаты вершин треугольника: (x1, y1, z1), (x2, y2, z2), (x3, y3, z3).
Выходные данные должны содержать площадь, указанную с точностью до 5-го знака после запятой.
Вершины треугольника не лежат на одной прямой.
xmin ≤ xmax, ymin ≤ ymax, zmin ≤ zmax.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Ян Т.В. | Ограничение времени: | 5 сек | |
Входной файл: | input.txt | Ограничение памяти: | 1512 Мб | |
Выходной файл: | output.png | |||
Максимальный балл: | 100 |
Вам необходимо разработать 3D модель избы.
Терминология
Стены сруба имеют одинаковую длину, длина одного бревна — 6 метров, диаметр — 40см, высота cруба — 3 метра. Модели бревен должны быть сглажены и состоять из минимально возможного количества полигонов. Нижнее основание избы должно лежать в плоскости XY, центр которой должен совпадать с началом координат. Стены, параллельные оси X, начинаются с плах. Дверь расположена со стороны отрицательной координаты оси Y на высоте 20см (радиус бревна). У избы есть 2 окна, в стенах, которые параллельны оси Y. Окна расположены на высоте двух бревен. Дверь и окна отцентрированы относительно стен, в которых они расположены. Толщина рамы окна — 10см и выступает рама на 10см от оконного стекла. Толщина дверной коробки — 10см м выступает она на 10см от двери.
Фронтоны крыши параллельны оси Y. Высота пика фронтона 4 метра. Высота от верхней точки фронтона до верхней точки кровли по Z — 20см. Нижняя часть кровли крыши выступает на 20см от стен. Расстояние от фронтона до краев крыши (козырек и кровля) — 40см.
Имеются рендеры из viewport с нескольких ракурсов в ортогональной проекции — Рис. 3, Рис. 4 и Рис. 5. Обратите внимание, что рендеры также несут дополнительную информацию о модели. В модели должны быть использованы материалы со следующими названиями: Door, FrameWindow, Glass, Roof, Wood. Модель не должна содержать текстур.
Модель проверяется на основе попиксельного сравнения рендеров с указанных во входном файле ракурсов. Используется этот материал. Файл с материалом должен называться solve.mtl. В качестве метрики для сравнения рендеров моделей используется величина dssim по каждому цветовому каналу. Баллы за каждый тест начисляются в зависимости от величины метрики.
Источник света:
Type | Sun |
Color | (255, 255, 255) |
Specular | 1.00 |
Strength | 10.0 |
Location | (10 m, -10 m, 20 m) |
Rotation | (30, 30, 0) |
Камера:
Focal Length | 50mm |
Render Engine: Eevee
Во входном файле содержатся x, y, z — координаты камеры в метрах и rx, ry, rz — углы поворота в радианах.
В качестве решения следует отправлять файл формата OBJ (расширение .obj
).
Размер файла не должен превышать 999997 Байт.
№ | Входной файл (input.txt ) |
Выходной файл (output.png ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Maxim Kuzin | Ограничение времени: | 30 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt | |||
Максимальный балл: | 100 |
Представьте, что вы потерялись в лабиринте и не можете найти выход. А еще там абсолютная темнота и вы ничего не видите.
К счастью, сейчас вы не в лабиринте, но нужно быть готовым ко всему. Поэтому необходимо написать программу, которая научится искать выход из лабиринта не зная его структуры.
Чтобы упростить задачу, вам предлагается сцена в Unity
с лабиринтом и шаром. Вы можете указать время и вектор скорости для шара. В течении указанного вами времени шар будет двигаться в направлении вектора с заданной скоростью без ускорения. По истечении этого времени вам опять дадут возможность указать новое время и вектор скорости.
Вы можете управлять шаром только когда задаете ему новую скорость. В этот же момент вы можете узнать его текущие координаты. Пока шар двигается вы не можете узнать его местоположение.
Программно вы не можете узнать координаты стен и точку выхода из лабиринта. Но вам гарантируется, что до нее можно добраться из изначальной точки (места, где изначально находится шар). Также вам гарантируется, что шар упруго отталкивается от стен.
Вам нужно реализовать функцию getMove()
в классе Solution
. Эту функция будет вызываться чтобы дать вам возможность указать новое время и вектор скорости для шара. Эта функция должна возвращать объект Vector4
состоящий из четырех параметров. Первые три отвечают за вектор скорости (y-координата будет игнорироваться), четвертый за время, в течении которого будет двигаться шар. После того, как это время закончится вам опять дадут возможность указать новое время и вектор скорости.
Длина вашего вектора скорости не должна превышать 104
Обратите внимание, что вы не можете сохранять какую-либо информацию между двумя вызовами функции. Для этого нужно использовать специальные методы в объекте controller
.
Весь ваш код должен находиться в классе Solution
. Другие изменения в сцене учитываться не будут.
Объект controller
предоставляет следующие функции для работы с памятью:
controller.Add(key, value)
— записывает в память объект value
. Позже вы сможете обратиться к нему с помощью объекта key
. Если в памяти уже было записано значение с ключом key
, то ничего не произойдет.controller.Set(key, value)
— перезаписывает в память объект value
с ключом key
. До вызова этой функции обязательно хотя бы раз должна была быть вызвана функция Add()
, чтобы создать значение в памяти.controller.Get(key)
— возвращает значение из памяти по ключу key
. До вызова этой функции обязательно хотя бы раз должна была быть вызвана функция Add()
, чтобы создать значение в памяти.controller.GetPosition()
— возвращает текущие координаты мяча.
Проект
https://github.com/Supermagzzz/NTI_TASK2
,
Вам осталось реализовать класс Solution
.
Одна клетка на поле имеет размер 4 ⋅ 4 единицы Unity
.
Вы можете тестировать свои решения, изменяя данные, содержащиеся в файле input.txt
в репозитории проекта. Красная клетка в редакторе Unity
показывает выход из лабиринта. Изучите пример Solution.cs
для лучшего понимания задачи.
Входной файл содержит пять целых чисел seed, r, c, x, y - значение для случайной генерации лабиринта, количество строк и столбцов в лабиринте, координаты выхода из лабиринта.
Реализовывать считывание данных с файла input.txt
не нужно.
Для получения данных используйте функции, реализованные в controller
.
Файл с решением должен содержать реализацию класса Solution
.
Координаты, полученные с помощью вашего решения, должны иметь погрешность
не больше одной единицы в координатах Unity
.
Реализовывать вывод в файл output.txt
не нужно.
1 ≤ r, c ≤ 10
0 ≤ x ≤ r
0 ≤ y ≤ c
Автор: | А. Баранов | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
Имеются два трехмерных симплекса (тетраэдра), каждый из которых задан координатами четырех своих вершин:
(x1, y1, z1), (x2, y2, z2), (x3, y3, z3), (x4, y4, z4).
Требуется определить объем тела, полученного путем пересечения указанных тетраэдров.
Во входных данных последовательно записаны координаты сначала первого, а затем второго тетраэдра.
Выходные данные должны содержать ответ, указанный с точностью до 5-го знака после запятой.
Вершины отдельно взятого тетраэдра не лежат в одной плоскости.
− 10 < (xi, yi, zi) < 10.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|