1

固定数の 1 (残りは 0) でバイナリ シーケンスを生成する関数があります。シーケンスを受け取り、そのシーケンスの位置を辞書順に返す関数が必要です。たとえば、3 つの 1 を持つ長さ 5 の 10 個のシーケンスは次のとおりです。

0 0 1 1 1
0 1 0 1 1
0 1 1 0 1
0 1 1 1 0
1 0 0 1 1
1 0 1 0 1
1 0 1 1 0
1 1 0 0 1
1 1 0 1 0
1 1 1 0 0

たとえば、リストの 3 番目であるため、0 1 1 0 1取得して返す関数が必要です。3

私が考えることができる唯一のことは、あまりにも非効率的ですが、すべてのシーケンスを生成し (簡単)、それらを保存し (スペースがかかりすぎます)、リスト内の特定のシーケンスを検索し (遅すぎます)、返すことです。その位置。これを行うより速い方法はありますか?見えない簡単なトリック?

4

1 に答える 1