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