チャレンジ
基数10の整数入力が与えられた場合、入力に対応するバイナリフォレストの表現を作成します。表現には、ネストされた配列と文字列が含まれますが、これらに限定されません。
どうやって?
入力をバイナリに変換します。1sは枝を表し、0sは葉を表します。
これを理解しやすくするために834、例として(バイナリで1101000010)を使用しましょう。
最初の数字から始めます。最初の数字は1なので、枝を描きます:
\ / 1
または配列として、 {{1}}
次の数字は1なので、さらに枝を描画します(左から右に進みます)。
\ /
1
\ /
1
または配列として、 {{1, {1}}}
次の数字は0なので、葉を配置します。
0
\ /
1
\ /
1
または配列として、 {{1, {1, 0}}}
次の桁は1なので、ブランチを配置します。
\ /
0 1
\ /
1
\ /
1
または配列として、 {{1, {1, 0, {1}}}}
このプロセスを繰り返して、8桁目以降に次のツリーを取得します。
0 0
\ /
0 1
\ /
1 0
\ /
1
または配列として、 {{1, {1, 0, {1, 0, 0}}, 0}}
残りの数字については、さらに木を描画します。
9桁目はa 0なので、葉を置きます(aww、それは若い芽です!)
0 0
\ /
0 1
\ /
1 0
\ /
1 0
または配列として、 {{1, {1, 0, {1, 0, 0}}, 0}, 0}
すべての数字を使用すると、次のようになります。
0 0
\ /
0 1
\ /
1 0 0
\ / \ /
1 0 1
または配列として、 {{1, {1, 0, {1, 0, 0}}, 0}, 0, {1, 0}}
それは奇妙に見えるので、ゼロを埋めてツリーを完成させます。
0 0
\ /
0 1
\ /
1 0 0 0
\ / \ /
1 0 1
または配列として、 {{1, {1, 0, {1, 0, 0}}, 0}, 0, {1, 0, 0}}
配列を平坦化すると、元の数値がバイナリで得られますが、ゼロが埋め込まれます。
基準
- 出力は、ツリーとブランチの分離を明確に示す必要があります(ネストされた配列でない場合は、出力形式を説明してください)。
- 出力からすべての数字を抽出することは、入力のバイナリ表現と同じである必要があります(上記のプロセスでゼロが埋め込まれています)。
テストケース
基準を満たす限り、出力は異なる場合があります。
0-> {0}
1-> {{1、0、0}}
44-> {{1、0、{1、{1、0、0}、0}}}
63-> {{1、{1、{1、{1、{1、{1、0、0}、0}、0}、0}、0}、0}}
404-> {{1、{1、0、0}、{1、0、{1、0、0}}}}
1337-> {{1、0、{1、0、0}}、{1、{1、{1、0、0}、{1、0、0}}、0}}
得点
これはcode-golfなので、最低バイトが勝ちです!