2009-12-21 4 views
1

특정 웹 사이트의 채팅 상자에서 재미있는 일을 마친 후 재미있는 생각이 들었습니다. 어떤 입력 텍스트가 주어지면, 그것으로부터 "echo"텍스트를 생성하는 알고리즘이 무엇일까? 즉, 큰 빈 동굴에서 입력 텍스트를 외쳤다면 듣게 될 에코를 생성합니다. 예 :주어진 입력에서 "에코 텍스트"를 생성하는 알고리즘에 대한 아이디어가 필요합니다.

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

문제는 내가 원하는 것을 정확히 알지 못합니다. 나는 그런 알고리즘을 만드는 법이나 좋은 알고리즘인지를 결정하는 기준이 무엇인지 전혀 모른다. 그러나 일반적인 생각이 분명하다고 생각합니다. 그래서 나는 당신의 생각을 듣고 싶습니다.

답변에 완전한 해결책을 제시 할 필요는 없습니다. 방향에 대한 힌트가 너무 많거나 문제에 대한 무작위적인 생각도 환영합니다.

+1

문자열의 문자를 알고리즘으로 반복하여 호출하고 있습니까? –

+0

좋은 생각! 1 질문 - 채팅 중이면 완전한 문장을 말하십시오. 문장의 마지막 단어 또는 모든 문장의 단어 또는 문장의 길이에 따라 문장의 단어가 없습니다. 에코가 완료되어야합니다 –

+0

Shantanu. 좋은 질문! :) 나는 소리가 나올지 전혀 몰랐다. 다른 접근법을 시도해보십시오. –

답변

3

나쁜하지만 재미 (IMO) 솔루션 :

는 파형을 생성하는 음성 합성 장치를 통해 입력을 실행합니다. 사운드 프로세싱 라이브러리의 에코 생성기를 통해 해당 파형을 실행하십시오. 그런 다음 음성 인식 프로그램을 통해 결과 파형을 실행하십시오.

+0

명성을 얻으려고 명성을 얻었지만, 원격으로 사용할 수있는 어떤 것이라도 의심 스럽습니다. : P –

+0

@ jball- 음성 합성기에 대한 간단한 아이디어를 제공 할 수 있습니까? 나는 그것에 대해 모른다. 실제 사운드 파형 즉 모든 사운드 파일을 생성합니까? –

+0

사용되는 라이브러리에 따라 다르지만 일반적으로 재생하거나 파일에 저장하거나 조작 할 수있는 파형을 메모리에 생성합니다. 다음은 몇 가지 예입니다. Java http://freetts.sourceforge.net/docs/index.php 또는 MS http://www.microsoft.com/downloads/details.aspx?FamilyID=5e86ec97-40a7-453f-b0ee -6583171b4530 & displaylang = ko – jball

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; 
     } 


같은 출력 무언가가 여기에 거기에 에코가 발생 하는가 예를 들면?
여기에 에코가 있습니까?
여기에 에코가 있습니까?
여기에 에코가 있습니까?
여기에 에코가 있습니까?
여기에?
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; 
     } 

여기에 거기에 에코를인가하여 문자열을 분할하는 것?
여기에 에코가 있습니까?
여기에?

+0

그리고 각 반복마다 시작점을 어떻게 결정합니까? 그리고 각 반복에서 나는 무엇을 할 것인가? –