Adam7は、PNGなどのラスターイメージ用のインターレースアルゴリズムです。Adam M. Costelloによって発明されたため、「Adam7」アルゴリズムと呼ばれ、特定のパターンを7回たどることによって生成されます。コードゴルフを本当に楽しくするAdam7アルゴリズムの素晴らしい点の1つは、パターンが奇数である限り、任意の回数だけ繰り返すことができることです。1996年にPNG
標準が開発されたとき、9回の反復は複雑すぎ、5回の反復は効率的ではなかったため、7回の反復で十分であると見なされていました。
タイルの最初の反復は次のとおりです。
a
ものすごく単純。これは「Adam1」タイルです。次の反復である「Adam3」タイルに到達する方法を次に示します。
最後のタイルがだったので1x1
、高さと幅が2倍になり、次のタイルはになります2x2
。まず、左上隅の「a」から始めます。
a-
--
ステップ2、このパターンを右にコピーし、現在の文字を1つ増やします。
ab
--
ステップ3、ステップ2と同じですが、右ではなく下にコピーします。
ab
cc
ブーム。「Adam3」タイル。「Adam5」も実行してみましょう。実際にアルゴリズムがどのように機能するかを確認できます。このタイルもまた2倍の大きさになり4x4
ます。繰り返しますが、a
左上隅のから始めます。
a---
----
----
----
このパターンを2倍にし、文字を増やして、右に移動します。
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
か?