LINQ を使用してデカルト積演算を実行する
デカルト積は、複数のセットの要素を組み合わせて、可能なすべての組み合わせを含む新しいセットを作成する数学演算です。これは、テストを生成したりデータを分析したりするときに役立ちます。
問題に関して言えば、犬のグループの中の子犬の可能な組み合わせをすべて見つけたいと考えています。それぞれの犬には複数の子犬がいる可能性があるため、1 匹の犬につき 1 匹の子犬を考慮するとよいでしょう。
LINQ を使用すると、各犬に関連付けられた子犬のコレクションにデカルト積演算を適用することでこれを実現できます。以下に例を示します:
<code class="language-csharp">var dog1Puppies = new[] { "puppy A", "puppy B" }; var dog2Puppies = new[] { "puppy C", "puppy D" }; var cartesianProduct = from dog1Puppy in dog1Puppies from dog2Puppy in dog2Puppies select new { dog1Puppy, dog2Puppy }; foreach (var pair in cartesianProduct) { Console.WriteLine($"{pair.dog1Puppy}, {pair.dog2Puppy}"); }</code>
出力:
<code>puppy A, puppy C puppy A, puppy D puppy B, puppy C puppy B, puppy D</code>
このコードは、LINQ の from
句を使用してデカルト積を生成し、select
句を使用して各組み合わせを表す匿名型を作成します。結果のセットには、両方のセットの子犬の可能な組み合わせがすべて含まれます。
犬のコレクションの数が可変の場合、回答で提供されている CartesianProduct
拡張メソッドを使用してデカルト積を動的に計算できます。このメソッドは、可変数のシーケンスを受け入れ、シーケンスのシーケンスを返します。各シーケンスは、入力シーケンス内の要素の一意の組み合わせを表します。
以上がLINQ を使用してデカルト積を実行し、複数の犬のセットから可能なすべての子犬の組み合わせを生成するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。