Цей виклик - на честь ліпких різдвяних вогнів у моєму будинку законів.
Завдання полягає у створенні графічного виводу, що відображатиме прикрасу в режимі реального часу.
Відео (gif чи інший формат) матиме n-by-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 мс, тоді це нормально. Якщо це пов’язано з поганою / простою реалізацією, інтерпретатором, який перевантажений / повільним і т.д., тоді це не нормально.