Mes défis ont tendance à être un peu difficiles et peu attrayants. Voici donc quelque chose de simple et amusant.
La séquence d'Alcuin
La séquence d'Alcuin A(n)
est définie par le comptage des triangles. A(n)
est le nombre de triangles dont les côtés et le périmètre sont entiers n
. Cette séquence est appelée d'après Alcuin of York.
Les premiers éléments de cette séquence, à commencer par n = 0
:
0, 0, 0, 1, 0, 1, 1, 2, 1, 3, 2, 4, 3, 5, 4, 7, 5, 8, 7, 10, 8, ...
Par exemple A(9) = 3
, parce que les seuls triangles avec des côtés et un périmètre entiers 9
sont 1 - 4 - 4
, 3 - 3 - 3
et 2 - 3 - 4
. Vous pouvez voir les 3 triangles valides ci-dessous.
Il y a un schéma assez intéressant dans cette séquence. Par exemple A(2*k) = A(2*k - 3)
.
Pour plus d'informations, voir A005044 sur OEIS.
Défi
Mais votre défi concerne la représentation binaire de ces nombres. Si nous convertissons chaque numéro de séquence en sa représentation binaire, les mettons dans des vecteurs de colonne et les alignons, cela crée une image binaire assez intéressante.
Dans l'image suivante, vous pouvez voir la représentation binaire des numéros de séquence A(0), A(1), ..., A(149)
. Dans la première colonne, vous pouvez voir la représentation binaire de A(1)
, dans la deuxième colonne la représentation de A(1)
, etc.
Vous pouvez voir une sorte de motif répétitif sur cette image. Cela ressemble même un peu à des fractales, si vous regardez par exemple l'image avec les numéros de séquence A(600), A(601), ..., A(899)
.
Votre travail consiste à générer une telle image. Votre fonction, votre script recevra deux entiers 0 <= m < n
, et il doit générer l'image binaire de la séquence d'Alcuin A(m), A(m+1), A(m+2), ..., A(n-2), A(n-1)
. Donc, l'entrée 0, 150
génère la première image, l'entrée 600, 900
la deuxième image.
Vous pouvez utiliser n'importe quel format graphique populaire que vous souhaitez. Disons tous les formats qui peuvent être convertis en png en utilisant image.online-convert.com . Alternativement, vous pouvez afficher l'image à l'écran. Aucune première ligne blanche n'est autorisée!
C'est du code-golf. Ainsi, le code le plus court (en octets) gagne.
white=1 and black=0
l'inverse?
white=0 and black=1
. Donc dans l'autre sens. A(0)
produit une colonne blanche, A(9)=3
produit une colonne blanche avec 2 pixels noirs en bas.
0,0,0,1,0,2
pendant la liste au début de la question 0,0,0,1,0,1
.