Adam7 è un algoritmo di interlacciamento per immagini raster, come PNG. Si chiama algoritmo "Adam7" perché è stato inventato da Adam M. Costello e viene generato seguendo un certo schema 7 volte. Una delle cose interessanti dell'algoritmo Adam7 che lo rende davvero divertente per il golf del codice, è che il pattern può essere ripetuto un numero arbitrario di volte, purché sia strano. All'inizio del 1996, quando PNGfu sviluppato lo standard, l'uso di solo 7 iterazioni era considerato sufficiente, poiché le 9 iterazioni erano troppo complesse e 5 iterazioni non erano altrettanto efficienti.
Ecco la prima iterazione della piastrella:
a
Abbastanza semplice. Questa è una tessera "Adam1". Ecco come arriviamo alla prossima iterazione, il riquadro "Adam3".
Poiché la nostra ultima tessera era 1x1, raddoppiamo l'altezza e la larghezza, e la prossima sarà 2x2. Innanzitutto, iniziamo con una "a" nell'angolo in alto a sinistra.
a-
--
Passo 2, copia questo schema a destra e aumenta la lettera su cui ci troviamo.
ab
--
Passaggio 3, uguale al passaggio 2, ma copia verso il basso anziché a destra.
ab
cc
Boom. La tessera "Adam3". Facciamo anche "Adam5", così puoi effettivamente vedere come funziona l'algoritmo. Questa tessera sarà, di nuovo, due volte più grande, quindi 4x4. Ancora una volta, iniziamo con un anell'angolo in alto a sinistra:
a---
----
----
----
Raddoppia questo motivo, aumenta la lettera e spostala verso destra:
a-b-
----
----
----
Ancora una volta, questa volta.
a-b-
----
c-c-
----
Ancora una volta, questa volta a destra.
adbd
----
cdcd
----
Ancora una volta, questa volta.
adbd
eeee
cdcd
eeee
Questa è la tessera "Adam5". Ecco la rappresentazione ASCII del riquadro Adam7:
afdfbfdf
gggggggg
efefefef
gggggggg
cfdfcfdf
gggggggg
efefefef
gggggggg
E mentre ci siamo, ecco un'animazione divertente di ogni passaggio della tessera Adam7 (sebbene faccia diverse tessere fianco a fianco):
La sfida
Dato un numero dispari positivo N , emette il riquadro "Adam N ". È possibile utilizzare qualsiasi metodo predefinito di IO . Dato che stiamo usando l'alfabeto al posto dei numeri, devi solo gestire input fino a 25. Puoi scegliere di produrre caratteri minuscoli o maiuscoli purché tu specifichi e sia coerente.
IO di esempio
1:
a
3:
ab
cc
5:
adbd
eeee
cdcd
eeee
7:
afdfbfdf
gggggggg
efefefef
gggggggg
cfdfcfdf
gggggggg
efefefef
gggggggg
9:
ahfhdhfhbhfhdhfh
iiiiiiiiiiiiiiii
ghghghghghghghgh
iiiiiiiiiiiiiiii
ehfhehfhehfhehfh
iiiiiiiiiiiiiiii
ghghghghghghghgh
iiiiiiiiiiiiiiii
chfhdhfhchfhdhfh
iiiiiiiiiiiiiiii
ghghghghghghghgh
iiiiiiiiiiiiiiii
ehfhehfhehfhehfh
iiiiiiiiiiiiiiii
ghghghghghghghgh
iiiiiiiiiiiiiiii
Come al solito, si tratta di code-golf, quindi si applicano scappatoie standard e vince la risposta più breve in byte!

cil testcase9?