임의의 단어를 생성하는 방법에는 여러 가지가 있습니다. 세트에서 임의 음절을 가져와 n- 튜플, 아마도 신경망 (무엇을 할 수 없습니까?), 자음과 모음 사이를 번갈아 사용할 수 있습니다.이 도전의 기반이되는 방법은 훨씬 최악 . 임의의 단어를 생성하기 위해 Markov 체인을 사용합니다. 친숙한 Markov 체인이라면 아마도이 방법이 왜 그렇게 끔찍한 지 알 것입니다.
Markov 체인에 대해 읽으려면 여기를 클릭하십시오 .
프로그램은 가중 마르코프 체인의 방법을 통해 하나 이상의 단어를 입력하고 임의의 단일 단어를 생성합니다. 아마도 나 외에는 아무도 이해가되지 않기 때문에 다음과 같은 입력으로 Markov 체인의 그림을 사용하여 설명합니다 abba
.
(가장자리 가중치는 모든 그림에서 동일합니다.) 프로그램은 입력 텍스트를 기준으로 Markov 체인을 통해 경로를 출력합니다. 보시다시피, 1/2 확률 a
, 1/8 확률 aba
, 1/16 확률 abba
, 1/32 확률 ababa
등이 있습니다.
Markov 체인의 다른 예는 다음과 같습니다.
yabba dabba doo
wolfram
supercalifragilisticexpialidocious
더 많은 예제를 원하면 this를 사용 하십시오 . (나는 너무 열심히 일했다)
도전의 세부 사항 :
- 입력은 문자열 목록 또는 공백, 쉼표 또는 줄 바꾸기로 구분 된 문자열로 취할 수 있습니다.
- 구두점없이 모든 단어가 완전히 소문자라고 가정 할 수 있습니다 (ASCII 97-122)
- 프로그램이나 함수를 작성할 수 있습니다
- 테스트하기 위해 예제를 입력하고 모든 입력이 Markov 체인과 일치하는지 확인할 수 있습니다.
이것은 코드 골프이므로 프로그램의 점수는 바이트입니다.
이것의 어떤 부분이 불분명한지 알려 주시면 더 이해하도록 노력하겠습니다.
b
없으므로 double을 생성 할 수 없습니다 b
. 또한 도달하면 b
불가능합니다) start
다른 단어를 생산하기 위해로 돌아갑니다 ). 나는 당신이 요구 사항을 명확히해야한다고 생각합니다 ...
yabba dabba doo
는 사고입니다. 최대한 빨리 수정하겠습니다. 다시 시작할 수 없다는 것에 관해서 는 주어진 단어 세트 에서 하나의 단어 만 생성 합니다. 그것이 명확합니까?