チャレンジ
基数10の整数入力が与えられた場合、入力に対応するバイナリフォレストの表現を作成します。表現には、ネストされた配列と文字列が含まれますが、これらに限定されません。
どうやって?
入力をバイナリに変換します。1
sは枝を表し、0
sは葉を表します。
これを理解しやすくするために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なので、最低バイトが勝ちです!