Este desafío es en honor a las horteras luces navideñas en la casa de mis suegros.
El desafío es crear una salida gráfica que muestre la decoración en "tiempo real".
El video (gif u otro formato) tendrá "luces" verticales y horizontales n-por-m . 5 <= m, n <= 40 . El tamaño de imagen y resolución pueden variar dependiendo de n y m , pero deben ser al menos de 50x50 píxeles para n, m = 5 (gráficos vectoriales es OK). Una imagen con n=6
y m=5
se verá más o menos así:
La decoración:
Colores:
Todas las luces tendrán una de las siguientes 6-colores RGB {255,0,0}
, {0,255,0}
, {0,0,255}
, {255,255,0}
, {0,255,255}
y {255,0,255}
.
Animación:
n
ym
se tomará como entrada en cualquier formato razonable y en el orden que desee- La imagen cambiará cada
dt = 25 ms
. Las desviaciones están bien si se debe a "factores externos" como la limitación en el intérprete, la computadora lenta, etc.- Si es imposible establecer el paso de tiempo manualmente, entonces se acepta el paso de tiempo predeterminado.
- Todas las luces serán rojas (
{255,0,0}
) ent=0
. - Siempre hay un 5% de posibilidades de que la primera luz (arriba a la izquierda) cambie de color. Todos los colores (excepto el color que tiene actualmente) deberían ser igualmente probables.
Cada luz (excepto la primera) obtendrá el color de la luz a su izquierda. Si la luz está en el extremo izquierdo, obtendrá el color de la luz en el extremo derecho en la fila de arriba. Las luces están numeradas como se muestra a continuación. El número de luz
k
obtendrá el color del número de luzk-1
.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
En teoría, el resultado debería ejecutarse para siempre (a menos que su idioma / intérprete tenga alguna limitación que lo impida).
- Proporcione una muestra de al menos 5 segundos, preferiblemente más en la respuesta (esto es un estímulo, no un requisito). (Un enlace a TIO o similar, por supuesto, también está bien: D)
- Se aceptan marcos, ejes, líneas de cuadrícula, etc.
6 por 5
15 por 30
r,g,y,b,
etc son más cortos en varios idiomas.
drawnow
cuando implementé esto en MATLAB, ya que el resultado fue demasiado lento. Creo que la respuesta debe ser: si es una elección de diseño que el intérprete tenga una resolución de tiempo mínima fija de> = 25 ms, entonces está bien. Si se debe a una implementación pobre / simple, un intérprete en línea que está sobrecargado / lento, etc., entonces no está bien.