0

現時点では、C# の問題があり、頭を悩ませています。基本的に、文内の 1 つ以上の単語のスペルや用途が異なる可能性があるという事実に基づいて、文である文字列のリストまたは配列を生成する必要があります。私は、文中の各単語について (潜在的に) さまざまな可能性を持たせるつもりです。

たとえば、'are' という単語は 'are' または 'r' と書き、'you' という単語は 'you' または 'u' と書くことができると定義した場合、"how areあなた」は次のようになります。

  • "元気ですか"
  • "げんき"
  • "調子どう"
  • "元気"

単語の種類に列挙型を使用できると考えました。たとえば、次のようになります。

public enum Word  
{  
  Are,  
  You  
}  

ある種のヘルパーメソッドを使用して、可能な用途の配列を返します。

public static string GetVariants(Word w)  
{
 switch(w)
 {
   case Word.Are:
   return new string[] { "are", "r" };
   case Word.You:
   return new string[] { "you", "u"};
 }

しかし、固定文字列とこれらの変数の単語タイプ識別子を組み合わせて文を定義し、可能な組み合わせを作成する適切な方法を見つけることができないようです。

単語は、書かれるときに正しい順序である必要があります。同じことをさまざまな書き方で生成できる必要があるだけです。これでうまくいくようになったら、この特定の文構造だけに適用できるものではないようにしたいと思います。これは可能ですか?

4

1 に答える 1

0

誰かが同様の問題に遭遇した場合に備えて、Eric Lippert の Cartesian Product ソリューションのハックを使用して、最終的にこれを機能させました。

http://blogs.msdn.com/b/ericlippert/archive/2010/06/28/computing-a-cartesian-product-with-linq.aspx

于 2012-11-05T17:39:06.943 に答える