5

リストの辞書を作成しようとしていますが、文字列を読み込んでいるので、リストに文字列の名前を付けて、キーとして辞書に追加する必要があります。

IEは「こんにちは」で読みました

読み込まれたものでリストを作成します

List<string> (insert read string here ) = new List<string>();

次に、そのリスト名を辞書のキーとして追加します。

Dictionary.Add(readstring, thatlist);

私が見つけることができるのは、これのハードコード実装だけです。

Turing.Add("S", S);

私の目標は、万能チューリングマシンを作成することです。そのため、次のステップであるテキストファイルから入力を読み込みます(q0 a)->q1XR。

次に、私が読み込んだすべての手順を使用して、仮想テープ「tape=XXYYZZBB」でこれを使用して最終状態で終了します。

このために擬似コードを記述しましたが、辞書を機能させることができません。

編集:混乱を少なくするためにいくつかの情報を追加します。テキストファイルの最初の2行の開始状態と終了状態が指定されています。次に、トランジションを指定します。

q0//開始状態q5//終了状態q0aq1XR//遷移

入力の最初の2行を削除して0と5を取得し、forループを作成して各状態のリストを作成しました。

for (int i = 0; i <= endState; i++)
{
List<string> i = new List<string>();
}

次に、作成しているリストのディクショナリにキーとして各リスト名を追加します。

Dictionary.Add(listname, thatlist);

エラーが発生するため、上記のコードの実装についてサポートが必要です。

4

1 に答える 1

8

リストを次のように作成するかどうかは関係ありません

List<string> insertReadStringHere = new List<string>();

また

List<string> foo = new List<string>();

あるいは

List<string> shellBeComingRoundTheMountain = new List<string>();

重要なことは、あなたがやったら

MyDictionary.Add(theInputString, shellBeComingRoundTheMountain);

その後、その特定のリストにアクセスできます

MyDictionary[theInputString]

最初のリストが「呼び出された」insertReadStringHereorfooまたはshellBeComingRoundTheMountain.

このように名前付き変数にリストを保持する必要さえありません。例えば、

Console.WriteLine("Input a string to create a list:");
var createListName = Console.ReadLine();
// As long as they haven't used the string before...
MyDictionary.Add(createListName, new List<string>());

Console.WriteLine("Input a string to retrieve a list:");
var retrieveListName = Console.ReadLine();
// As long as they input the same string...
List<string> retrievedList = MyDictionary[retrieveListName];

編集: 特定の数のリストが必要な場合は、文字列から文字列ではなく、 intから文字列へのディクショナリマッピングを使用します。

int maxNumberOfLists = 5; // or whatever you read from your text file.
Dictionary<int, List<string>> myLists =
            new Dictionary<int, List<string>> (maxNumberOfLists);
for (int i = 1; i <= maxNumberOfLists; i++)
    myLists[i] = new List<string>();

次に、たとえばリストにアクセスできます

var firstList = myLists[1];

通常は配列をお勧めしますが、これは 0 から 4 ではなく 1 から 5 のリストを提供し、それがあなたが望むものだと思われます。

于 2012-11-28T08:57:53.603 に答える