2倍にして再配置することでこの数に到達できますか?
Math.SEに関するこの質問に触発されました。 以降では1、繰り返し次の二つのいずれかの操作を行うことができます: 数を2倍にします。 または 先行ゼロがないことを除いて、任意の方法で数字を並べ替えます。 リンクされたMath.SE投稿から例を挙げると1000、次の手順でアクセスできます。 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 125, 250, 500, 1000 このプロセスでどの数値に到達できますか、最も短い解決策は何ですか? チャレンジ 正の整数Nを指定すると、可能であればN、上記のプロセスで到達する整数の最短のシーケンスを決定します。最適なソリューションが複数ある場合は、いずれかを出力します。そのようなシーケンスが存在しない場合は、空のリストを出力する必要があります。 シーケンスは、便利で曖昧さのない任意の文字列またはリスト形式にすることができます。 プログラムまたは関数を作成し、STDIN(または最も近い代替)、コマンドライン引数または関数引数を介して入力を取得し、STDOUT(または最も近い代替)、関数の戻り値または関数(out)パラメーターを介して結果を出力できます。 これはコードゴルフなので、最短の回答(バイト単位)が勝ちです。 テストケース 256までのすべての到達可能数のリストを次に示します。最初の列は数値(入力)、2番目の列は最適なステップ数(ソリューションの有効性を確認するために使用できます)、3番目は列は、そこに到達するための最適なシーケンスの1つです。 1 1 {1} 2 2 {1,2} 4 3 {1,2,4} 8 4 {1,2,4,8} 16 5 {1,2,4,8,16} 23 7 {1,2,4,8,16,32,23} 29 10 {1,2,4,8,16,32,23,46,92,29} 32 …