1

在某个网站的聊天框中玩得开心后,我有了一个有趣的想法。什么是算法,给定一些输入文本,会从中生成一个“回声”文本。也就是说,如果你在一个大空洞中喊出输入文本,它会产生你会听到的回声。例如:

Input text: Hello!
Output text: Hello!
             ello!
             lo!
             o!

问题是我并不完全知道自己想要什么。我不知道如何创建这样的算法,甚至不知道什么是确定它是否是一个好的算法的标准。但我想大体的想法很清楚,所以我想听听你的想法。

您不必在答案中给出完整的解决方案。也欢迎对方向的提示,或者只是对问题的随机想法。

4

2 回答 2

3

糟糕但有趣的(imo)解决方案:

通过语音合成器运行输入以生成波形。通过声音处理库中的回声发生器运行该波形。然后通过语音识别程序运行生成的波形。

于 2009-12-21T20:35:12.993 回答
1

您可以创建一个字符数组,然后对字符列表进行交互,每次迭代使用不同的起点。

例如在 C# 中

string Mystring = "Is There an Echo in Here?";
        char[] charArray = Mystring.ToCharArray();
        int k = 0;
        string Echo = "";
        for (int i = 0; i < (charArray.Length / 3) + 1; i++)
        {
            for (int j = k; i < charArray.Length; i++)
            {
                Echo += charArray[j];
            }
            Echo += Environment.NewLine;
            k += 3;
        }

应该产生类似这样的输出
这里有回声吗?
这里有Echo吗?
这里有回声吗?
回声在这里?
回声在这里?
o 在这里?
n 这里?
是吗?
?

只是一种可能的做事方式,您可以使用这些值来改变回声效果。

另一种解决方案是按单词而不是字符拆分字符串

string Mystring = "Is There an Echo in Here?";
        string[] Words = Mystring.Split(' ');
        int k = 0;
        string Echo = "";
        for (int i = 0; i < Words.Length / 2; i++)
        {
            for (int j = k; i < Mystring.Length; i++)
            {
                Echo += Mystring[j];
            }
            Echo += Environment.NewLine;
            k += 2;
        }

会产生以下内容
Is there an Echo in Here?
回声在这里?
在这里?

于 2009-12-21T20:37:48.697 回答