我必须编写一个函数,它接受一个字符串列表(长度不一的字),一个int(数据集的大小,例如.int的值为4将是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++)
}
答案 0 :(得分:2)
您可以使用二维数组来保存字符。我想棘手的部分是从单词列表中找出两个单词之间共享字母的地方。我想从最不常用的字母和工作开始吧!
有趣的文章
http://blogs.teamb.com/craigstuntz/2010/01/11/38518/
Stack Overflow问题可能会有所帮助(尽管在c ++中可能有用) Best data structure for crossword puzzle search
代码生成器的其他链接。
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