2010-12-09 12 views
0


Ich muss eine Funktion schreiben, die eine Liste von Zeichenfolgen (Wörter, die in der Länge variieren), und ein int (Größe des Datensatzes zB int-Wert von 4 wird 4 Spalten und vier Zeilen in der Tabelle), und damit muss ich ein kreuzworträtselähnlicher Block erzeugen (Block ist der Datensatz), der so viele der Wörter in der Liste wie möglich enthält, wie ein Kreuzworträtsel, das sie einander kreuzen können, wenn die Buchstaben übereinstimmen richtige Orte, und die Wörter müssen alle durcheinander sein, in jeder Richtung gelesen werden (wie ein Kreuzworträtsel).Erzeuge ein kreuzworträtselähnliches Dataset

Ich kann nicht scheinen, Code zu finden, um mir dabei zu helfen, bis jetzt habe ich die grundlegende Struktur des Datasets, hier ist es, jede mögliche Hilfe wird geschätzt, danke.

public WordsDs WordMixer(List<string> wordList, int size) 
{ 
    if ((wordList == null) || (size < 2)) 
    { 
     return null; 
    } 

    //shuffle the words in the list so that they are in a random order 
    Random random = new Random(); 
    var sortedList = wordList.OrderBy(i => random.Next()).ToList(); 

    //create a dataset for the words 
    DataSet ds = new DataSet(); 
    DataTable dt = new DataTable(); 

    //add columns and rows according to the size parameter 
    for (int i = 0; i < size; i++) 
    { 
     dt.Columns.Add(i.ToString(), typeof(string)); 
    } 
    for (int i = 0; i < size; i++) 
    { 
     dt.Rows.Add(i); 
    } 


    for (int i = 0; i < wordList.Count; i++) 
    { 



    }//for (int i = 0; i < wordList.Count; i++) 

} 
+3

Ich bin ein wenig verwirrt darüber, was Sie unter "in jede Richtung gelesen werden". Meinst du ein Kreuzworträtsel: http://en.wikipedia.org/wiki/Crossword? Oder eine Wortsuche: http://en.wikipedia.org/wiki/Word_search? – DGH

+0

BTW, das ist nicht der beste Weg zu mischen -> http://stackoverflow.com/questions/1287567/c--using-random-and-orderby-a-good-shuffle-algorithmus – digEmAll

+0

Sie müssen vergleichen alle Ihre Wörter in Ihrer Liste eins nach dem anderen und prüfen, ob sie länger sind als int. Sie können ein 10-stelliges Wort nicht in einen 4 * 4-Datensatz einfügen, wenn Sie vorhaben, jeder Zelle einen Buchstaben zu geben. Ich schlage vor, dass Sie Ihre Wörter (Buchstaben für Buchstaben) zufällig in Ihren Datensatz einfügen und den Rest Ihres Datensatzes mit zufälligen Buchstaben füllen. Wenn das ist, was Sie brauchen, kann ich den Code dafür schreiben und ich bin mir sicher, dass es Spaß machen würde :) – Pabuc

Antwort

2

Sie könnten nur eine zweidimensionale Matrix verwenden, um die Zeichen zu halten. Ich denke, der schwierige Teil ist von der Wortliste aus, wo ein Buchstabe zwischen zwei Wörtern geteilt wird. Ich schätze, ich fange mit dem am wenigsten häufig verwendeten Buchstaben an und arbeite von dort aus!

Interessante Artikel
http://blogs.teamb.com/craigstuntz/2010/01/11/38518/

Stack-Überlauf Frage (obwohl in C++ - könnte von Nutzen sein) kann helfen,
Best data structure for crossword puzzle search

Weitere Links zu Codegeneratoren.
http://www.pscode.com/vb/scripts/ShowCode.asp?txtCodeId=6082&lngWId=10
http://dotnetslackers.com/articles/net/Creating-a-programming-crossword-puzzle.aspx
One in c
http://pdos.csail.mit.edu/cgi-bin/theme-cword