Автор: | A. Klenin | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt | |||
Максимальный балл: | 100 |
Ваша задача заключается в том, чтобы изобразить фейерверк в ASCII-графике. Фейерверк состоит из одного или нескольких вспышек. Каждая вспышка имеет целые радиус R и уровень L, а также изображается символом '*' (ASCII 42) в центре и 8 лучами: 4 горизонтальных ('-', ASCII 45) и вертикальных ('|', ASCII 124) луча, каждый длиной R + E символов (где E – дополнительный параметр, одинаковый для всех вспышек); 4 диагональных ('/', ASCII 47 и '\', ASCII 92) луча, каждый длиной R символов.
Если уровень вспышки больше 1, то конец каждого горизонтального или вертикального луча порождает другую вспышку радиусом R − 1 и уровнем L − 1. Дочерняя вспышка имеет только 7 лучей, потому что луч в направлении родительской вспышки не изображается.
Фейерверк начинается с одной вспышки.
В выходной файл должен быть выведен фейерверк в виде квадрата символов, имеющего минимальный размер,
достаточный для изображения всех вспышек.
Символы, не принадлежащие ни к какой вспышке, должны выводиться как '.' (ASCII 46).
Символы, принадлежащие более чем одной вспышке, должны выводиться как 'x
' (ASCII 120).
Входной файл содержит целые числа L R E — уровень, радиус начальной вспышки и дополнительный параметр длины для горизонтальных/вертикальных лучей.
Выходной файл должен содержать изображение фейерверка
1 ≤ L ≤ R ≤ 10, 1 ≤ E ≤ 20
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | M. Kuzin | Ограничение времени: | 2 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
Ваша команда сейчас занимается разработкой нового робота. Вам поручена ответственная задача — научить робота находить на картинке ромбы.
Камера робота позволяет записывать черно-белые прямоугольные изображения шириной c и высотой r ячеек. Черная ячейка на изображении кодируется символом '#
', а белая символом '@
'.
Ромбом называется связная область изображения, целиком состоящая из черных ячеек и удовлетворяющая следующим критериям:
Например, вот корректные изображения ромбов имеющих высоту 2 (обратите внимание, что к ромбу могут прилегать и другие черные ячейки):
@@#@@ @###@ #####
@###@ ##### #####
@@#@@ @@#@@ #####
@@#@@ @###@ @@@@@
@#@#@ @@### @@@@@
@@#@@ @@#@@ @@@@@
Конечно, на одной картинке одновременно может находиться множество ромбов. Сейчас вам требуется найти максимальный из них по высоте.
В первой строке находятся два натуральных числа 1 ≤ r, c ≤ 1000 — высота и ширина изображения.
В следующих r строках находятся по c символов '@
' или '#
', означающих цвет ячеек изображения. '@
' - белый цвет, '#
' — черный цвет.
Выведите одно целое число — максимальную высоту ромба на изображении. Если на изображении отсутствуют ромбы, то выведите 0.
1 ≤ r, c ≤ 10 — 40 баллов
1 ≤ r, c ≤ 100 — 20 баллов
1 ≤ r, c ≤ 1000 — 40 баллов
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
Автор: | Ян Т. | Ограничение времени: | 5 сек | |
Входной файл: | input.txt | Ограничение памяти: | 1512 Мб | |
Выходной файл: | output.png | |||
Максимальный балл: | 100 |
Создайте 3D модель, состоящую из куба и конуса. Нижнее основание куба со стороной 2м должно лежать в центре плоскости XY. Центр нижней грани куба должен совпадать с началом координат. Рёбра куба должны быть параллельны осям координат. Основание конуса должно полностью лежать на верхней грани куба. Диаметр основания равен 2м. Высота конуса равна 2м. Ребра, которые являются образующими конуса, должны быть сглажены. Остальные не должны быть сглажены. Модель не должна использовать материалы и текстуры.
В качестве решения следует отправлять файл формата OBJ (расширение .obj
).
Размер файла не должен превышать 1Мб.
Модель проверяется на основе попиксельного сравнения рендеров с указанных во входном файле ракурсов. В качестве метрики для сравнения рендеров моделей используется величина dssim. Баллы за каждый тест начисляются в зависимости от величины метрики.
Источник света:
Type | Point Light |
Color | (255, 255, 255) |
Power | 1000W |
Specular | 1.00 |
Radius | 0.1m |
Location | (4.07625 m, 1.00545 m, 5.90386 m) |
Rotation | (37.3, 3.16, 107) |
Камера:
Focal Length | 50mm |
Dimensions | 520x520 |
Во входном файле содержатся x, y, z — координаты камеры в метрах и rx, ry, rz — углы поворота в радианах.
№ | Входной файл (input.txt ) |
Выходной файл (output.png ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Maxim Kuzin | Ограничение времени: | 60 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt | |||
Максимальный балл: | 100 |
Вам поручено провести важное научное исследование — изучить упругое столкновение двух тел.
Чтобы упростить задачу, вам предлагается сцена в Unity
с двумя шарами. В этой сцене уже реализована механика движения и столкновения тел. Все, что вам осталось сделать — это написать дополнительный скрипт, который засекает определенное время и выводит координаты мячей после моделирования их движения в течении этого времени.
Для взаимодействия со сценой вы можете использовать любые функции Unity
, а также дополнительный объект — controller
. Однако, весь ваш код должен находиться в классе Solution
. Другие изменения в сцене учитываться не будут.
Объект controller
предоставляет следующие функции для работы со сценой:
controller.getTime()
— возвращает общее время, в течении которого требуется моделировать системуcontroller.Pause()
— останавливает моделирование (шары перестают двигаться)controller.Resume()
— возобновляет моделирование (шары начинают двигаться)controller.getFirstBallVelocity()
— возвращает текущую скорость первого шараcontroller.getSecondBallVelocity()
— возвращает текущую скорость второго шараcontroller.getFirstBallPosition()
— возвращает текущую позицию первого шараcontroller.getSecondBallPosition()
— возвращает текущую позицию второго шараcontroller.setFirstBallPosition(Vector3 v)
— устанавливает текущую позицию первого шара в позицию v
controller.setSecondBallPosition(Vector3 v)
— устанавливает текущую позицию второго шара в позицию v
controller.setAnswer()
— заканчивает моделирование, текущие координаты шаров будут записаны в ответ
Изначально система находится на паузе. Обратите внимание, что шары начнут
двигаться сами, как только вы вызовете метод controller.Resume()
.
Также, заметьте, что требуемое время моделирования может быть достаточно большим.
Шары двигаются без трения и ускорения.
Проект
https://github.com/Supermagzzz/NTI_TASK1
,
Вам осталось реализовать класс Solution
.
Вы можете тестировать свои решения, изменяя данные, содержащиеся в файле input.txt
в репозитории проекта.
Входной файл содержит пять строк.
В первой строке содержится требуемое время моделирования t.
Во второй и третьей строке содержатся координаты первого и второго шаров, соответственно xi, yi, zi.
В четвертой и пятой строке содержатся начальные скорости первого и второго шаров, соответственно vx, vy, vz.
Все числа во входном файле вещественные.
Реализовывать считывание данных с файла input.txt
не нужно.
Для получения данных используйте функции, реализованные в controller
.
Файл с решением должен содержать реализацию класса Solution
.
Координаты, полученные с помощью вашего решения, должны иметь погрешность
не больше одной единицы в координатах Unity
.
Реализовывать вывод в файл output.txt
не нужно.
Для вывода ответа используйте метод setAnswer()
, описанный выше.
0 ≤ t ≤ 105
− 1000 ≤ xi, zi ≤ 1000
− 1000 ≤ vx, vz ≤ 1000
yi = 0.5, vy = 0
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|