私は(サンプルデータは、このように、それは意味がありません)このような辞書を持っている:反復処理非正方形(一種の)行列
Dictionary<char, string[]> codes = new Dictionary<char, string[]>();
string[]
辞書のキーのための可能な代替の配列です。いくつかのサンプルデータと辞書を埋める
...
codes.Add("A", new string[] {"噅噅", "裧", "頖", "11"});
codes.Add("B", new string[] {"垥", "2", "鉠"});
codes.Add("C", new string[] {"33", "韎"});
codes.Add("D", new string[] {"櫋", "緟", "嘕", "鈖", "灡", "犅"});
...
codes.Add("T", new string[] {"濇", "汫", "岕", "5"});
...
は今、「エンコード」次の単語ができます:
char[] charArray = "act".ToCharArray();
foreach (char c in charArray) {
string[] replacements = codes[c].Where(x => !String.IsNullOrEmpty(x)).ToArray();//removing empty elements
...
}
を私は、次の何をすべきかについて、今、私の頭をラップすることはできません私はすべての可能な組み合わせのリストを持つようにしたい、それが(ワード「行為」のために)このようなリストを返す必要があります。
噅噅韎5
裧33濇
裧33汫
裧33岕
裧335
裧韎濇
裧韎汫
裧韎岕
...
は、記事のタイトルは誤解を招くおそれがあり...
これは、再帰によってかなり簡単に解決されます。 – dharms
@興味があります。どこで再帰的メソッドを呼び出すべきですか?各 "キー"について? – Cornwell
2つの文字列を渡します。エンコードしたいものと現在のブランチのエンコードされた文字列を渡します。最初の呼び出しは 'Encode(" act "、" ");' – dharms