1

我必须做一个软件,它真的很复杂,我的意思是,真的不知道如何完成它。有很多细节,但我会在这里写一个我需要的简单示例。

  1. 用户输入多个单词。
  2. 用户输入文件夹
  3. 程序工作:

文件夹总是变的!在那个文件夹中,我有这样的文件:

File1.txt File2.txt File3.txt File4.txt

在文件中(所有相同的结构)。就像 file1.txt:

word1 word2 word.. wordn

也许 File1.txt 有 100 个单词,而 File2.txt 只有 10 个。

如果用户输入的单词是 10 个。软件要遍历尽可能多的文件,从中得到 10 个单词。

忘了说,这10个字,不应该是从每一行的开头。

如果 file1.txt 是:

单词1 单词2 单词3 单词4 单词5

我想把 word3 去掉。或word2,没关系,但它必须是随机的。

想法是尽快使过程随机化。在这种情况下,如果我能从 File1.txt 中得到 1 个单词,从 File4.txt 中得到 1 个单词,从 File2.txt 中得到 2 个单词,从 File3.txt 中得到 1 个单词,那就太棒了

我怎么能随机化这些东西以这种方式进行?

谢谢!

4

2 回答 2

3

像这样的东西:

阅读所需文件。将每个文件中的单词复制并拆分为一个数组。从该数组中选择 n 个随机单词。

可能有很多方法可以解决这个问题,但上述方法非常简单。研究我列出的每个部分,您应该会发现自己能够完成整个问题。如果问题看起来太大;分而治之!

于 2012-06-17T11:43:50.827 回答
1

以下是一种非常好的方法,可以让一些软件快速启动并运行:

尽快尝试在应用程序中查看您想要的接口(即您的应用程序的边界是什么,进入您的应用程序以及从您的应用程序中输出什么)。

然后,如果抽象了某个接口,则提供该接口的随机实现,这只是您所期望的。(例如,如果你想有一些数据源,你可以有一个 ISomeDataSource,它有一个 ReadAll 方法,你可以非常快速地提供一个 RandomSomeDataSource,它有一个返回一些数据的 ReadAll。

这样一来,您就可以快速解决这个复杂的问题,灵活地进行更改,并且您会看到所得到的结果。一旦您的“简单路径”开始工作,您就可以实现所有这些接口,届时这些接口很有可能是可测试的,并且产品所有者也可以非常快速地检查您的整个应用程序,即他可以在何时说出他想要什么他看到了他得到了什么。(工作真的很好)

具体的

有一个 InputWords 的接口,让我们调用它

interface IWordInput
{
    void ReadWords(string[] words);
}

和文件夹输入

interface IFolderInput
{ 
    void InputFolder(string path);
}

和一个随机词源

interface IWordSource
{
    void ReadAllWords(string path, out string[] words);
    string GetRandomWord(string[] words);
}

它来了:

 class RandomWordSource : IWordSource
 {
     public ReadAllWords(string path, out string[] words)
     {
         // somewhat like
         words = new[] string;
         words.Add("word1");
         words.Add("word2);

         // and so on
     }

     public string GetRandomWord(string[] words)
     {
          // sic
          return words.FirstOrDefault();
     }
于 2012-06-17T11:40:10.893 回答