Это испытание в честь безвкусных рождественских огней в доме моих в законах.
Задача состоит в том, чтобы создать графический вывод, показывающий оформление в «реальном времени».
Видео (gif или другой формат) будет иметь n-m-m вертикальные и горизонтальные «огни». 5 <= m, n <= 40 . Размер и разрешение кадра могут варьироваться в зависимости от n и m , но должны быть не менее 50x50 пикселей для n, m = 5 (с векторной графикой все в порядке). Картинка с n=6
и m=5
будет выглядеть примерно так:
Украшение:
Цвета:
Все огни будут иметь один из следующих 6 RGB-цветов {255,0,0}
, {0,255,0}
, {0,0,255}
, {255,255,0}
, {0,255,255}
и {255,0,255}
.
Анимация:
n
иm
будут приняты в качестве входных данных в любом разумном формате и в порядке, который вам нравится- Изображение будет меняться каждый
dt = 25 ms
. Отклонения в порядке, если это связано с «внешними факторами», такими как ограничение в переводчике, медленный компьютер и т. Д.- Если невозможно установить шаг времени вручную, тогда шаг по умолчанию принят.
- Все огни будут красными (
{255,0,0}
) вt=0
. - Всегда есть вероятность 5%, что первый свет (вверху слева) изменит цвет. Все цвета (кроме цвета, который он имеет в настоящее время) должны быть одинаково вероятными.
Каждый источник света (кроме первого) получит цвет источника света слева. Если источник света находится в крайнем левом углу, он получит цвет источника света в крайнем правом ряду выше. Огни пронумерованы, как показано ниже. Светлый номер
k
получит цвет светового числаk-1
.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Вывод теоретически должен работать вечно (если только у вашего языка / интерпретатора нет каких-либо ограничений, препятствующих этому).
- Пожалуйста, предоставьте образец не менее 5 секунд, желательно больше в ответе (это поощрение, а не требование). (Ссылка на TIO или аналогичный, конечно, тоже нормально: D)
- Рамки, оси, линии сетки и т. Д. Принимаются.
6-по-5
15-по-30
r,g,y,b,
и т.д. короче на нескольких языках.
drawnow
когда я реализовал это в MATLAB, так как результат был слишком медленным. Я думаю, что ответ должен быть следующим: если это проектный выбор, когда интерпретатор имеет фиксированное минимальное разрешение по времени> = 25 мс, тогда все в порядке. Если это из-за плохой / простой реализации, онлайн-переводчика, который перегружен / медленен и т. Д., То это не в порядке.