Mis desafíos tienden a ser un poco difíciles y poco atractivos. Así que aquí hay algo fácil y divertido.
Secuencia de Alcuin
La secuencia de Alcuin A(n)
se define contando triángulos. A(n)
es el número de triángulos con lados enteros y perímetro n
. Esta secuencia se llama después de Alcuin of York.
Los primeros elementos de esta secuencia, comenzando con n = 0
son:
0, 0, 0, 1, 0, 1, 1, 2, 1, 3, 2, 4, 3, 5, 4, 7, 5, 8, 7, 10, 8, ...
Por ejemplo A(9) = 3
, porque los únicos triángulos con lados enteros y perímetro 9
son 1 - 4 - 4
, 3 - 3 - 3
y 2 - 3 - 4
. Puedes ver los 3 triángulos válidos a continuación.
Hay algunos patrones bastante interesantes en esta secuencia. Por ejemplo A(2*k) = A(2*k - 3)
.
Para obtener más información, consulte A005044 en OEIS.
Desafío
Pero su desafío es sobre la representación binaria de estos números. Si convertimos cada número de secuencia en su representación binaria, los colocamos en vectores de columna y los alineamos, se crea una imagen binaria bastante interesante.
En la siguiente imagen puede ver la representación binaria de los números de secuencia A(0), A(1), ..., A(149)
. En la primera columna puede ver la representación binaria de A(1)
, en la segunda columna la representación de A(1)
, y así sucesivamente.
Puede ver algún tipo de patrón repetitivo en esta imagen. Incluso se parece un poco a los fractales, si observa, por ejemplo, la imagen con los números de secuencia A(600), A(601), ..., A(899)
.
Tu trabajo es generar esa imagen. Su función, su script recibirá dos enteros 0 <= m < n
, y tiene que generar la imagen binaria de la secuencia de Alcuin A(m), A(m+1), A(m+2), ..., A(n-2), A(n-1)
. Entonces la entrada 0, 150
genera la primera imagen, la entrada 600, 900
la segunda imagen.
Puede usar cualquier formato de gráficos popular que desee. Digamos que todos los formatos que se pueden convertir a png usando image.online-convert.com . Alternativamente, puede mostrar la imagen en la pantalla. ¡No se permiten filas blancas iniciales!
Este es el código de golf. Entonces gana el código más corto (en bytes).
white=1 and black=0
o al revés?
white=0 and black=1
. Entonces al revés. A(0)
produce una columna blanca, A(9)=3
produce una columna blanca con 2 píxeles negros en la parte inferior.
0,0,0,1,0,2
mientras que la lista al comienzo de la pregunta dice 0,0,0,1,0,1
.