12
プライムパリティペレグリネーション
この課題の目的は、各ステップの方向平面上の歩行グラフィカルに描写することであるの素数によって決定されたとそのバイナリ膨張のパリティ。具体的には、kkkkkk 最初の方向は固定されています、たとえば北です。 すべてのステップの長さは同じです。 ステップの方向は、北、西、南、または東で、次のように決定されます。 kkk が素数でない場合、方向は変わりません。kkk 場合素数であるとのバイナリ拡張ものの数が偶数の、右折。kkkkkk 場合素数であるとのバイナリ拡張ものの数が奇数を持って、左折。kkkkkk 実際の例として、最初の方向が北であると仮定します。最初の手順は次のとおりです。 k = 1k=1k=1は素数ではありません。そこで、現在の方向、つまり北に1ステップ移動します。 k = 2k=2k=2は素数であり、そのバイナリ展開10、は1の奇数を持っています。だから私たちは左に曲がり、今西に面しています。その方向に一歩進みます。 k = 3k=3k=3は素数であり、そのバイナリ展開、、11および偶数の1です。私たちは右に曲がり、今では北に面しています。その方向に一歩進みます。 k = 4k=4k=4は素数ではありません。そこで、現在の方向、つまり北に1ステップ移動します。 挑戦 入力:正の整数。NNN 出力:上記で定義されたウォークのプロット。NNN 追加のルール 初期方向は自由に(必ずしも北)選択することができるが、すべてに対して同じであるべきである。NNN 旋回ルールは、である、上述したものとは反対である奇数パリティに右折、さらに放置することができます。ただし、すべての同じである必要があります。NNN 出力は、歩行のグラフィカルな描写である必要があります。例えば: 歩行は線分で描くことができます。 訪問したポイントは、ドットなどのマーカーで表示できます。接続線セグメントの有無にかかわらず。 2色のラスターイメージを提供できます。1つの色は訪問したポイントに対応し、別の色は訪問していないポイントに対応します。 水平軸と垂直軸のスケールは同じである必要はありません。また、軸ラベルと同様の要素はオプションです。歩行がはっきりと見える限り、プロットは有効です。 一部のポイントは複数回アクセスされることに注意してください。プロットはこれに敏感ではありません。たとえば、ラインセグメントがプロットに表示される場合、各ユニットセグメントは、何度走査されても同じように表示されます。 コードは、任意のN無制限のリソースに対して機能するはずです。N時間、メモリ、またはデータ型の制限のために実際に大規模に失敗する場合は許容できます。 入出力は通常どおり柔軟です。特に、画像を出力するための標準的な手段のいずれかを使用できます。 バイト単位の最短コードが優先されます。 テストケース 次のプロットは、初期方向として北を使用しています。偶数パリティも右折します。歩行は線分で表されます。 N = 7: N = 3000: N = 20000: N = 159000: …