私の挑戦は少し難しくて魅力的ではない傾向があります。簡単で楽しいものがあります。
アルクインの配列
アルクインのシーケンス A(n)
は、三角形を数えることによって定義されます。A(n)
は、整数の辺と周囲を持つ三角形の数ですn
。このシーケンスは、ヨークのアルクインにちなんで呼ばれます。
このシーケンスの最初のいくつかの要素は、次のn = 0
とおりです。
0, 0, 0, 1, 0, 1, 1, 2, 1, 3, 2, 4, 3, 5, 4, 7, 5, 8, 7, 10, 8, ...
例えばA(9) = 3
、整数の辺と周囲を持つ唯一の三角形9
は1 - 4 - 4
で3 - 3 - 3
あり、2 - 3 - 4
。下に3つの有効な三角形があります。
このシーケンスには、非常に興味深いパターンがいくつかあります。例えばA(2*k) = A(2*k - 3)
。
詳細については、OEISのA005044を参照してください。
チャレンジ
しかし、あなたの課題は、これらの数値のバイナリ表現についてです。各シーケンス番号をバイナリ表現に変換し、列ベクトルに入れて整列させると、非常に興味深いバイナリ画像が作成されます。
次の図では、シーケンス番号のバイナリ表現を見ることができますA(0), A(1), ..., A(149)
。最初の列にはのバイナリ表現がありA(1)
、2番目の列にはの表現がA(1)
あります。
この写真では、ある種の繰り返しパターンを見ることができます。シーケンス番号のある画像を見ると、フラクタルのようにも見えますA(600), A(601), ..., A(899)
。
あなたの仕事は、そのような画像を生成することです。関数、スクリプトは2つの整数を受け取り0 <= m < n
、Alcuinのシーケンスのバイナリイメージを生成する必要がありますA(m), A(m+1), A(m+2), ..., A(n-2), A(n-1)
。したがって、入力0, 150
は最初の画像を生成し、入力600, 900
は2番目の画像を生成します。
任意の一般的なグラフィック形式を使用できます。image.online-convert.comを使用してpngに変換できるすべての形式を考えてみましょう。または、画面に画像を表示することもできます。先行する白い行は許可されません!
これはコードゴルフです。したがって、最短のコード(バイト単位)が優先されます。
white=1 and black=0
か、他の方法で回避?
white=0 and black=1
。だから他の方法。A(0)
白い列をA(9)=3
生成し、下部に2つの黒いピクセルを持つ白い列を生成します。
0,0,0,1,0,2
質問の冒頭のリストが述べている間、それは持っています0,0,0,1,0,1
。