Adam7 ist ein Interlacing-Algorithmus für Rasterbilder wie PNG. Es wird als "Adam7" -Algorithmus bezeichnet, da es von Adam M. Costello erfunden wurde und durch siebenmaliges Folgen eines bestimmten Musters erzeugt wird. Eines der coolen Dinge am Adam7-Algorithmus, die Code-Golf wirklich Spaß machen, ist, dass das Muster beliebig oft wiederholt werden kann, solange es ungerade ist. Als 1996 der PNG
Standard entwickelt wurde, wurde die Verwendung von nur 7 Iterationen als ausreichend angesehen, da die 9 Iterationen zu komplex waren und 5 Iterationen nicht so effizient sind.
Hier ist die erste Iteration der Kachel:
a
Ziemlich einfach. Dies ist eine "Adam1" -Kachel. So kommen wir zur nächsten Iteration, der "Adam3" -Kachel.
Da unsere letzte Fliese war 1x1
, verdoppeln wir die Höhe und Breite, und die nächste wird sein 2x2
. Zuerst beginnen wir mit einem 'a' in der oberen linken Ecke.
a-
--
Schritt 2, kopieren Sie dieses Muster nach rechts und erhöhen Sie den Buchstaben, auf dem wir uns befinden, um eins.
ab
--
Schritt 3, wie Schritt 2, jedoch nach unten anstatt nach rechts kopieren.
ab
cc
Boom. Die "Adam3" -Kachel. Lassen Sie uns auch "Adam5" machen, damit Sie tatsächlich sehen können, wie der Algorithmus funktioniert. Diese Kachel wird also wieder doppelt so groß sein 4x4
. Wieder beginnen wir mit einem a
in der oberen linken Ecke:
a---
----
----
----
Verdoppeln Sie dieses Muster, erhöhen Sie den Buchstaben und verschieben Sie ihn nach rechts:
a-b-
----
----
----
Diesmal wieder runter.
a-b-
----
c-c-
----
Diesmal wieder rechts.
adbd
----
cdcd
----
Diesmal wieder runter.
adbd
eeee
cdcd
eeee
Dies ist die "Adam5" -Kachel. Hier ist die ASCII-Darstellung der Adam7-Kachel:
afdfbfdf
gggggggg
efefefef
gggggggg
cfdfcfdf
gggggggg
efefefef
gggggggg
Und während wir gerade dabei sind, finden Sie hier eine unterhaltsame Animation der einzelnen Schritte der Adam7-Kachel (obwohl mehrere Kacheln nebeneinander ausgeführt werden):
Die Herausforderung
Geben Sie bei einer positiven ungeraden Zahl N die Kachel "Adam N " aus. Sie können eine beliebige Standardmethode für E / A verwenden . Da wir das Alphabet anstelle von Zahlen verwenden, müssen Sie nur Eingaben bis zu 25 verarbeiten. Sie können wählen, ob Sie Klein- oder Großbuchstaben ausgeben möchten, solange Sie dies angeben und es konsistent ist.
Beispiel IO
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
Wie üblich ist dies Code-Golf, daher gelten Standardlücken, und die kürzeste Antwort in Bytes gewinnt!
c
im Testfall9
?