Создать кроссвордоподобный набор данных - PullRequest
0 голосов
/ 09 декабря 2010


Я должен написать функцию, которая принимает список строк (слова, которые различаются по длине) и int (размер набора данных, например, значение int 4 будет 4 столбца и четыре строки в таблице), и с этим я должен создать блок, похожий на кроссворд (блок, являющийся набором данных), который будет содержать как можно больше слов в списке, как кроссворд, который они могут пересекать друг с другом, если буквы совпадают в нужных местах, и все слова должны быть перепутаны Читайте в каждом направлении (как кроссворд).

Я не могу найти код, который бы помог мне с этим, пока у меня есть базовая структура набора данных, вот она, любая помощь будет оценена, спасибо.

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++)

}

1 Ответ

2 голосов
/ 09 декабря 2010

Вы можете просто использовать двумерный массив для хранения символов.Я предполагаю, что самая сложная часть работы со списком слов заключается в том, что между двумя словами есть буква.Я предполагаю начать с наименее часто используемой буквы и работать оттуда!

Интересная статья
http://blogs.teamb.com/craigstuntz/2010/01/11/38518/

Вопрос переполнения стека может помочь (хотя в c ++ - может быть полезным)
Лучшая структура данных для поиска кроссвордов

Другие ссылки на генераторы кода.
http://www.pscode.com/vb/scripts/ShowCode.asp?txtCodeId=6082&lngWId=10
http://dotnetslackers.com/articles/net/Creating-a-programming-crossword-puzzle.aspx
Один в c
http://pdos.csail.mit.edu/cgi-bin/theme-cword

...