ウラムのスパイラルについて、いくつかの課題がありました。しかし、それだけでは十分ではありません。
この課題では、三角形のウラムスパイラルをプロットします(通常の正方形のウラムスパイラルとは対照的に)。スパイラルがどのように見えるかのスケッチを次に示します。
私たちが知っているように、ウラムの螺旋はすべての自然数を外側の螺旋に配置し、素数のみをマークします。したがって、上記のスケッチでは、黒で表示される数字(素数)のみが表示されます。
チャレンジ
入力として数値Nを受け入れ、その数値まで三角形のUlamスパイラルを表示します。
- 入力は、stdinまたは関数の引数にすることができます。
- 上の図のように、螺旋は正の方向(つまり、反時計回り)に回転するはずです。
- 上記の図の120度の回転はいずれも有効であり、入力ごとに回転が異なる場合があります。ただし、許可されるターンは120度(の倍数)のみであるため、暗黙の三角形の最下部は水平になります。
- コードは、デフォルトのデータ型を使用して行う中間計算で許可されているNまで、理論的に(十分な時間とメモリを与えて)実行する必要があります。
double
十分です; 大きな整数型は必要ありません。 - すべての組み込み関数が許可されています。
- 私は自分の答えを受け入れません(それがとにかく最短になるとは思いませんが...)。
出力形式
次のいずれかを選択します。
素数ではマーカー(点、円、十字など)を使用してグラフを表示し、非素数では何も表示しません。スケールは2つの軸で同じである必要はありません。つまり、暗黙の三角形は正三角形である必要はありません。軸、グリッド線、軸ラベルはオプションです。素数のマーカーのみが必要です。
N = 12の出力例は次のとおりです(上記のスケッチと比較してください)。2番目のプロットは、N = 10000に対応する、より興味深い例です。
- 生成画像ファイル(例えば、PNG、TIFF、BMPなど)任意のよく知られた画像形式で、上記と。
スパイラルをASCIIアートとして表示します。プライムには選択した単一の文字を使用し、非プライムには空白スペースを使用し、同じ行の数字の位置を区切る空白スペースを使用します。先頭または末尾のスペースまたは改行を使用できます。たとえば、as文字として使用するN = 12の場合
o
は、o · · · o · o · · · o · o
もちろん、
o
実際には素数のマークのみが表示されます。·
非素数ではあくまで参考のためにここに示されています。
勝利基準
実際の報酬は、コードゴルフ、最短コード勝利という驚くべきパターンを見ることです。