アフィンフラクタルを作成するための最小のプログラムを記述します。以下のルールと同じ結果が得られると思われる任意の方法を使用できます。提案された方法からアイデアを使用する必要はありません!
プログラムは、形式でパターンを定義する最初の2つの入力をとる074
第2の入力のサイズを定義する7 0〜3桁からなる3
、8×8なり4
、16×16など(2 ^ n)の上になります。プログラムは、0(1x1)から少なくとも5(32x32)までのすべてのサイズについて正しい結果を出力する必要があります。それ以上の数の出力を生成する場合、それは正しい必要があります。つまり、特定のサイズまでは正しい出力を生成する必要がありますが、間違っている場合はそのサイズを超える出力は生成しません。最大サイズは15(32768x32768)と想定できます。これは、すでにASCIIアート(1GB)の非常識なサイズだからです。
8x8パターンは以下のようになります(ルール160
)。左端の桁はblock A
、中央の桁(失礼な考えはありません!)はblock B
、右端の桁はblock C
です。フラクタルを作成するには、両方の次元で半分に縮小し、ブロックに回転/ミラーリングルールを適用します。パターンを縮小するには、2x2の領域に均等に分割します。各エリアに3つの表示文字があるか、何も表示されません。目に見える文字がある場合は、小さいブロックの適切な場所に文字を配置し、そうでない場合はスペースを配置します。ルール0
- 3
ミラーリングされません、ルール4
- 7
ミラーリングされます。ルール0
と4
回転されていない、1
と5
時計回りに90度回転され、2
そして6
回転180度であり、3
そして7
時計回りに270度回転されます。3つのブロックをA
左上隅、B
左下、C
右下の順序で縫い合わせます。
AAA
AA A
AA
A
BBB CC
B BBC
BBCCC
B CCC
縮小、回転、ルール番号でミラーリング:
0 1 2 3 4 5 6 7
---- ---- ---- ---- ---- ---- ---- ----
AA BAA CCB C C BCC AAB AA
A BB A CBB CC CC BBC A BB A
BBC CC A A BB BB A A CC CBB
BCC C AA AAB BAA AA C CCB
ルール:
- ミラーリングなし、時計回りに90度回転
- ミラーリングなし、時計回りに180度回転
- ミラーリングなし、時計回りに270度回転
- ミラーリングされるが回転されない
- ミラーリングしてから時計回りに90度回転
- ミラーリングしてから時計回りに180度回転
- ミラーリングしてから時計回りに270度回転
- ルール0:ミラーリングされない、回転されない
ミラーリングは常に最初に行われ、空白のコーナーを斜めに通過して行われます。たとえば、ルール0とルール4です。
0 4
---- ----
AA / C /
A / CC/
BBC BB A
/BCC /BAA
唯一のルール1
、6
及び0
そのために、上記のパターンで使用されています。変換が適用され、ブロックがつなぎ合わされた後は、各ブロックの間隔を1つ空けていることを除いて、次のようになります。コードには、この余分なスペースはありません。「親」画像と比較すると、同じ位置に文字が表示されていることがわかります。
BAA
BB A
CC
C
AAB AA
A BB A
CC BBC
C BCC
縮小せずに画像を生成する別の方法は次のとおりです。1つの文字で開始します。
X
3つのブロックのそれぞれに変換を適用し(1つの文字だけなので、なし)、ブロックをつなぎ合わせます。
X
XX
3つのブロックそれぞれに変換を再度適用します。
1
--
XX
X
6 0
-- --
XX X
X XX
それらを一緒にステッチします。
XX
X
XXX
XXX
3つのブロックそれぞれに変換を再度適用します。
1
----
XXX
XX X
XX
X
6 0
---- ----
XXX XX
X XX X
XX XXX
X XXX
それらを一緒にステッチします。
XXX
XX X
XX
X
XXX XX
X XXX
XXXXX
X XXX
パターンの可視部分には任意の印刷可能文字(0x21-0x7E)を使用できますが、空白にはスペース文字(0x20)のみを使用できます。末尾のスペースは許可されますが、正方形全体の外側に空白があってはなりません(つまり、8x8の正方形の場合、8列目以降に文字があってはなりません)。
512の異なるルールがありますが、それらのいくつかは同じパターンを生成します。サイドノートとして、任意のパターンのみを含有0
し、4
シェルピンスキーの三角形(8つの異なるルール)を生成します。
オプションとして、お気に入りのパターンとそれを生成するルールを投稿できます。その場合、同様のルールと区別するために、サイズが少なくとも3(8x8)であることを確認してください。