このnumberphileビデオで言及されている「2進数で2進数」表記に基づいて、入力として単一の数値を取り、2が許可される「バイナリ」システムでその数値のすべてのバリエーションを出力する関数を記述します。
ルール
- コードは完全なプログラムではなく、関数/メソッドでなければなりません
- 入力は、関数への唯一のパラメーターとして渡される整数です
- 出力は、「2進数で2進数」表記に変換された入力番号のすべての有効なバリエーションです
- 出力は関数の戻り値ですが、明らかな限り(たとえば、3つのint、3つの文字列、コンマ/スペースで区切られた文字列、intの配列など)、順序は重要ではありません。
- まれに、結果を得るために言語に組み込み関数が含まれている場合は、許可されません
- バイト単位の最短コードが勝者です
出力の説明
あなたが番号を渡されている場合の例では、9
、あなたにバイナリに変換することができ1001
ますが、あなたが許可されている場合2
、それぞれの位置でSを、あなたはまた、それを書くことができます201
(つまり2*4 + 0*2 + 1*1
)、または121
(つまり1*4 + 2*2 + 1*1
)、この表に示すように:
+----+----+----+----+
| 8s | 4s | 2s | 1s |
+----+----+----+----+
| 1 | 0 | 0 | 1 |
| 0 | 2 | 0 | 1 |
| 0 | 1 | 2 | 1 |
+----+----+----+----+
したがって、渡された9
場合、関数は3つの数値1001
、201
およびを返す必要があります121
。
フォーマットと順序は、それが明らかだとして(すなわち、無関係な[121,201,1001]
、"0201 0121 1001"
、("1001","121","201")
の入力が与えられたとき、有効な結果です9
)。
例
2
=>10, 2
9
=>1001, 201, 121
10
=>1010, 210, 202, 1002, 122
23
=>2111, 10111
37
=>100101, 20101, 100021, 20021, 12101, 12021, 11221