美的に満足できる除数ツリーは、n
任意の合成数に対して、の平方根に最も近い除数m
のペアである2つの子ノードを持つ入力の除数のツリーです。左ノードはのより小さな除数で、右ノードはのより大きな除数でなければなりません。ツリーの素数には、子ノードがないはずです。あなたのツリーは、テキストアートまたは画像の形式である場合があります。テキストアート出力のルールは次のとおりです。m
m
m
間隔ルール
ツリー上のノードの間隔を空けるために、次のルールがあります。
- ルートから所定の深さにあるノードはすべて、出力の同じテキスト行にある必要があります。
/ \ NOT / \ / \ / 3 2 3 2
- 左側のノードでは、ノードが1桁の数字の場合、着信ブランチは右上になければなりません。そうでなければ、最後の数字のすぐ上になります。例:
/および/ 3 720
- 正しいノードの場合、ノードが1桁の数字である場合、着信ブランチは左上になければなりません。それ以外の場合、最初の数字のすぐ上にあります。例:
\および\ 7 243
- 出ていく左の枝の場合、枝は番号の左側に1スペースを開始する必要があります。例:
275 / 11
- 出て行く右の枝の場合、枝は数字の右に1スペースを開始する必要があります。例:
275 \ 25
- ツリーの同じレベルにある2つのノードの間には、少なくとも2つのスペースが必要です。同時に、ツリーの同じレベルにある2つのサブツリーは、それらの間のスペースをできるだけ少なくする必要があります。
**サブツリー**が近すぎるため、このツリーは機能しません。 504 / \ / \ / \ / \ 21 24 / \ / \ / \ / \ 3 7. 4 6 。/ \ / \ .2 2 2 3 このツリーには、ブランチ間に十分なスペースがありますが。 504 / \ / \ / \ / \ / \ 21 ... 24 / \ ... / \ / \ ... / \ 3 7 ... 4 6 ... / \ / \ ... 2 2 2 3
- 2つのサブツリーがツリー上で近すぎる場合
/\
、親の上のツリーにブランチの別の行を追加することにより、サブツリーを分離できます。
441 / \最後の行はまだ入力されておらず、すでにスペースが不足しています。 21 21 / \ / \ 別のブランチの行を追加する 441 / \ほぼ、しかし、7と3は近すぎます。 / \もう1行はそれを行う必要があります。 21 21 / \ / \ 3 7 3 7 別のブランチの行を追加する 441 / \これで完了です。 / \ / \ 21 21 / \ / \ 3 7 3 7
例
完全な例として、24の除数ツリーは次のようになります。
24
/ \
/ \
4 6
/ \ / \
2 2 2 3
4と6は24の平方根に最も近い除数のペアです。4は小さいため、左側にあります。次の行の3の左にある数字2は、小さいためです。
63の除数ツリーは次のようになります。
63 and NOT like this 63
/ \ / \
7 9 3 21
/ \ / \
3 3 7 3
誤ったツリーでは、3と21は63の平方根に最も近い除数のペアではなく、3と7は適切にソートされていません。ただし、21のブランチの配置は正しいです。
42には、次のものが必要です。
42 and NOT 42
/ \ / \
6 7 21 2
/ \ / \
2 3 3 7
720を見てみましょう。サブツリーとサブツリーの間隔が正しく720
なるように、5つのレベルのブランチが必要であることに注意してください。また、とには2つのレベルのブランチがあることに注意してください。なぜなら、とは正しい間隔を必要とする子ノードを持っているためです。24
30
24
30
4
6
30
24
720
/ \
/ \
/ \
/ \
/ \
24 30
/ \ / \
/ \ / \
4 6 5 6
/ \ / \ / \
2 2 2 3 2 3
挑戦
- あなたの仕事は、入力用に正しく間隔をあけた審美的に心地よい除数ツリーを構築することです。
n
ここn
で、1は正の整数です。 - 出力には、先頭と末尾のスペース、先頭と末尾の改行が含まれる場合がありますが、それ以外の場合は上記の間隔規則に準拠する必要があります。
- 出力は、テキストアート、画像(必要に応じて追加する他の形式)です。
- 画像の場合、ツリーのノードが十分に間隔を空けており、ツリーの同じ高さのノードが画像の同じ高さにあることを確認してください。
- これはコードゴルフです。最小バイト数(または同等)が勝ちます。
このアイデアを考えてくれたStewie Griffinに感謝します。また、仕様の書き直しに協力してくれたPeter Taylor、Martin Ender、Mego、EᴀsᴛᴇʀʟʏIʀᴋに感謝します。いつものように、提案や修正は大歓迎です。幸運と良いゴルフ!
その他のテストケース:
2
4
/ \
2 2
20
/ \
4 5
/ \
2 2
323
/ \
17 19
362880
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
576 630
/ \ / \
/ \ / \
/ \ / \
/ \ / \
/ \ / \
/ \ / \
24 24 21 30
/ \ / \ / \ / \
/ \ / \ / \ / \
4 6 4 6 3 7 5 6
/ \ / \ / \ / \ / \
2 2 2 3 2 2 2 3 2 3
1286250
/ \
/ \
/ \
/ \
/ \
1050 1225
/ \ / \
/ \ / \
/ \ / \
30 35 35 35
/ \ / \ / \ / \
5 6 5 7 5 7 5 7
/ \
2 3