私は非常に奇妙な問題を抱えており、解決を困難にするいくつかの制約があります。リストのリストがあり、それらのリストのすべてのアイテムの組み合わせを実行したいと思います。各アイテムには名前と値があります。次に例を示します。
メインリスト:
- リスト01:
- アイテム01:名前:名前01、値:値01
- アイテム02:名前:名前02、値:値02
- リスト02:
- アイテム01:名前:名前03、値:値03
- リスト03:
- アイテム01:名前:名前04、値:値04
- アイテム02:名前:name05、値:value05
最終結果は次のようになります。
いくつかのリスト:
- アイテム01:name01:value01、name03:value03、name04:value04
- アイテム02:name02:value02、name03:value03、name04:value04
- アイテム03:name03:value03、name03:value03、name04:value04
- アイテム04:name01:value01、name03:value03、name04:value05
- アイテム05:name02:value02、name03:value03、name04:value05
- アイテム06:name03:value03、name03:value03、name04:value05
新しいリストには、ハッシュマップのように機能するアイテムがほとんど含まれています。
制約は次のとおりです。
- これらのリストはすぐに大きくなる可能性があるため、新しいリストにまとめてそれらを混在させることはできません。
- 私はある種のオブザーバーのようなAPIを使用しているので、多くのメモリを使用しないように、できるだけ早く結果についてオブザーバーに通知する必要があります。
言い換えると、この組み合わせジェネレーターにはX個のリストが供給され、各リストにはN個のアイテムが含まれる可能性があり、メモリをあまり使用せずにそれらの組み合わせを生成する必要があります。
一度に5つを超えるリストで作業することは期待していませんが、アルゴリズムをコードの変更に対して可能な限り回復力のあるものにしたいと思います。
私はJavaで問題を解決していますが、アルゴリズムは翻訳される可能性が高いため、他の言語でも同様に機能するはずです。
何かアイデアや提案はありますか?
前もって感謝します。
PS再帰がうまくいくとは思いません。whileループといくつかのネストされたループを使用するというアイデアをいじっていますが、これがどのように機能するかを想像するのは非常に困難になっています。