Adam7是用于栅格图像(例如PNG)的隔行算法。之所以称为“ Adam7”算法,是因为它是Adam M. Costello发明的,并且是通过遵循一定的模式7次而生成的。Adam7算法令代码高尔夫真正有趣的一件很酷的事情是,只要奇怪,该模式就可以重复任意次。早在1996 PNG
年制定标准时,仅9次迭代就足够了,因为9次迭代过于复杂,而5次迭代效率不高。
这是图块的第一次迭代:
a
很简单 这是一个“ Adam1”图块。这是我们进入下一个迭代的方式,即“ Adam3”图块。
由于上一张是1x1
,我们将高度和宽度加倍,下一张将是2x2
。首先,我们从左上角的“ a”开始。
a-
--
第2步,将此模式复制到右侧,然后将我们的字母增加一个。
ab
--
步骤3与步骤2相同,但请向下复制而不是向右复制。
ab
cc
繁荣。“ Adam3”图块。让我们也执行“ Adam5”,这样您就可以实际了解算法的工作原理。因此,此图块将再大一倍4x4
。同样,我们从a
左上角的a开始:
a---
----
----
----
将此模式加倍,增加字母,然后将其移至右侧:
a-b-
----
----
----
再次,这次下来。
a-b-
----
c-c-
----
同样,这次是在右边。
adbd
----
cdcd
----
再次,这次下来。
adbd
eeee
cdcd
eeee
这是“ Adam5”图块。这是Adam7磁贴的ASCII表示形式:
afdfbfdf
gggggggg
efefefef
gggggggg
cfdfcfdf
gggggggg
efefefef
gggggggg
而当我们使用它时,这是Adam7磁贴的每个步骤的有趣动画(尽管它并排执行了几个磁贴):
挑战
给定正奇数N,输出“ Adam N ”图块。您可以使用IO的任何默认方法。由于我们使用字母代替数字,因此您最多只需要处理25个输入即可。您可以选择输出小写或大写字符,只要您指定且一致即可。
样品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
像往常一样,这是代码高尔夫球,因此存在标准漏洞,并且最短答案以字节为单位!
c
的测试用例的9
?