このチャレンジは、この素晴らしいアニメーション図に触発されています(チャットで投稿してくれたflawrに感謝します)。
input n
を指定すると、指定されたように、すべての素因数をドットのネストされた多角形として描画します。
たとえば、番号を指定する357 = 17x7x3
と、三角形に3つのドット、七角形にそれらの三角形の7つのバージョン、17角形にそれらの七角形の17のバージョンを配置します。要するに、外側の最大の素因数から内側の最小の素因数に向かうネストされたポリゴン。の場合357
、あなたの答えは次のようになります(色の有無にかかわらず):
すべての素数のすべてのポリゴンを>= 3
ダイアグラムの周りで回転させないでください。
唯一の例外は2
、特に奇数のべき乗の素数です2
。376 = 47x2x2x2
以下の例でわかるように、8
sは回転し、sの単一行ではなく、正方形内のsの2
垂直スタックです4
。2
正方形に配置されたの累乗でさえ、この方法で回転させる必要はありません。
実際に448 = 7x2x2x2x2x2x2
は、64
sの七角形のように見えるダイアグラムがあり64
、正方形の正方形の正方形に配置されていますが、回転はありません。
さらに二つの例がある440 = 11x5x2x2x2
と432 = 3x3x3x2x2x2x2
。私たちは、ことがわかり440
2の奇数力で、回転した8
ものの、秒432
の偶数乗と2
その回転しない16
のを。
そして最後に、10 = 5x2
Pythonとそのturtle
モジュールでモックアップした色のない最小限の例を示します。
チャレンジ
- 入力を指定
n
すると1 <= n <= 10000
、ネストされた因子ポリゴンの画像を出力します。 - ルールは次のとおりです。
- 画像は、外側に(最大の素因数)辺を持つ多角形から、内側にある最小素数要素まで、ネストされたドットの多角形で構成されています。
- 係数2の場合、2の累乗は線、次に正方形、次に正方形の線などとして積み重ねられます。2のべき乗でも回転させないでください。2の奇数乗は、それぞれのポリゴンを中心に回転し、回転する前に垂直に積み重ねる必要があります。
- 好きなように画像の向きを変えることができます(私は好みですが)が、入れ子になったすべてのポリゴンは、2の奇数乗を除いて他のポリゴンと同じ方向を向いている必要があります。
- 画像サイズとドットサイズには2つのオプションがあります。
- 画像サイズは静的で、ドットサイズ
n
はアニメーションのように増加するにつれて減少します。 - ドットサイズは静的で、画像サイズは
n
増加するにつれて大きくなります。
- 画像サイズは静的で、ドットサイズ
- ポリゴンの最初の3つのレイヤーは、隣接するポリゴンと区別可能(つまり、接触していない)である必要がありますが、の周囲の画像のサイズを考慮すると
n=10000
、レイヤーが接触し始めても問題ありません。彼らがそうしなかったなら、私はそれを好むでしょうが、Stack Exchangeにアップロード可能な画像に収まることは避けられないかもしれません。 - 色はオプションです。
- ドットの形はあなた次第です。正方形が言語に適している場合は、それらを使用します。
- ボーナスはありませんが、元の投稿のように誰かが図をアニメーション化して色付けするのを見てみたいです。
この質問の執筆に協力してくれたConor O'Brien、EasterlyIrk、Martin Ender、Kritixi Lithos、Mego、DJ McMayhem、El'endia Starmanに感謝します。
このコードはゴルフなので、最短のコードが勝ちます。幸運と良いゴルフ!
n = n //= i
はずn//= i
です?