Meus desafios tendem a ser um pouco difíceis e pouco atraentes. Então, aqui, algo fácil e divertido.
A sequência de Alcuin
A sequência de Alcuin A(n)
é definida pela contagem de triângulos. A(n)
é o número de triângulos com lados inteiros e perímetro n
. Esta sequência é chamada após Alcuin de York.
Os primeiros elementos desta sequência, começando com n = 0
são:
0, 0, 0, 1, 0, 1, 1, 2, 1, 3, 2, 4, 3, 5, 4, 7, 5, 8, 7, 10, 8, ...
Por exemplo A(9) = 3
, porque os únicos triângulos com lados inteiros e perímetro 9
são 1 - 4 - 4
, 3 - 3 - 3
e 2 - 3 - 4
. Você pode ver os três triângulos válidos abaixo.
Há algum padrão bastante interessante nessa sequência. Por exemplo A(2*k) = A(2*k - 3)
.
Para mais informações, consulte A005044 no OEIS.
Desafio
Mas seu desafio é sobre a representação binária desses números. Se convertermos cada número de sequência em sua representação binária, colocá-los em vetores de coluna e alinhá-los, cria uma imagem binária bastante interessante.
Na figura a seguir, você pode ver a representação binária dos números de sequência A(0), A(1), ..., A(149)
. Na primeira coluna, você pode ver a representação binária de A(1)
, na segunda coluna, a representação de A(1)
e assim por diante.
Você pode ver algum tipo de padrão de repetição nesta imagem. Até parece meio fractais, se você olhar, por exemplo, a imagem com os números de sequência A(600), A(601), ..., A(899)
.
Seu trabalho é gerar essa imagem. Sua função, seu script receberá dois números inteiros 0 <= m < n
e deve gerar a imagem binária da sequência de Alcuin A(m), A(m+1), A(m+2), ..., A(n-2), A(n-1)
. Então a entrada 0, 150
gera a primeira imagem, a entrada 600, 900
a segunda imagem.
Você pode usar qualquer formato gráfico popular que desejar. Digamos que todos os formatos que podem ser convertidos para png usando image.online-convert.com . Como alternativa, você pode exibir a imagem na tela. Nenhuma linha branca inicial é permitida!
Isso é código-golfe. Portanto, o código mais curto (em bytes) vence.
white=1 and black=0
ou o contrário?
white=0 and black=1
. Então, o contrário. A(0)
produz uma coluna branca, A(9)=3
produz uma coluna branca com 2 pixels pretos na parte inferior.
0,0,0,1,0,2
enquanto a lista no início da pergunta diz 0,0,0,1,0,1
.