Le mie sfide tendono ad essere un po 'difficili e poco attraenti. Quindi qui qualcosa di facile e divertente.
La sequenza di Alcuin
La sequenza di Alcuin A(n)
è definita contando i triangoli. A(n)
è il numero di triangoli con lati interi e perimetro n
. Questa sequenza è chiamata dopo Alcuin di York.
I primi elementi di questa sequenza, a partire da n = 0
sono:
0, 0, 0, 1, 0, 1, 1, 2, 1, 3, 2, 4, 3, 5, 4, 7, 5, 8, 7, 10, 8, ...
Ad esempio A(9) = 3
, perché gli unici triangoli con lati e perimetro interi 9
sono 1 - 4 - 4
, 3 - 3 - 3
e 2 - 3 - 4
. Puoi vedere i 3 triangoli validi in basso.
Ci sono alcuni schemi abbastanza interessanti in questa sequenza. Per esempio A(2*k) = A(2*k - 3)
.
Per ulteriori informazioni, vedere A005044 su OEIS.
Sfida
Ma la tua sfida riguarda la rappresentazione binaria di questi numeri. Se convertiamo ciascun numero di sequenza nella sua rappresentazione binaria, li inseriamo in vettori di colonna e li allineamo, crea un'immagine binaria piuttosto interessante.
Nell'immagine seguente puoi vedere la rappresentazione binaria dei numeri di sequenza A(0), A(1), ..., A(149)
. Nella prima colonna puoi vedere la rappresentazione binaria di A(1)
, nella seconda colonna la rappresentazione di A(1)
e così via.
Puoi vedere una sorta di motivo ripetuto in questa immagine. Sembra anche un po 'come un frattale, se ad esempio guardi l'immagine con i numeri di sequenza A(600), A(601), ..., A(899)
.
Il tuo compito è generare un'immagine del genere. La tua funzione, il tuo script riceveranno due numeri interi 0 <= m < n
e dovrà generare l'immagine binaria della sequenza di Alcuin A(m), A(m+1), A(m+2), ..., A(n-2), A(n-1)
. Quindi l'ingresso 0, 150
genera la prima immagine, l'ingresso 600, 900
la seconda immagine.
Puoi utilizzare qualsiasi formato grafico popolare che desideri. Diciamo che ogni formato che può essere convertito in png usando image.online-convert.com . In alternativa, è possibile visualizzare l'immagine sullo schermo. Non sono consentite righe bianche iniziali!
Questo è code-golf. Quindi vince il codice più breve (in byte).
white=1 and black=0
o viceversa?
white=0 and black=1
. Al contrario. A(0)
produce una colonna bianca, A(9)=3
produce una colonna bianca con 2 pixel neri nella parte inferiore.
0,0,0,1,0,2
mentre dice l'elenco all'inizio della domanda 0,0,0,1,0,1
.