나는 다가오는 시험을 위해 공부하고있는 과거의 시험에 나갈 것이고, 몇 가지 질문을 마친 후에 나는 풀 수없는 하나의 질문을 마쳤습니다.하스켈에있는 단어 카운트 프로그램
문자열 (또는 [Char])을 취해 String에있는 영어 단어 수의 Int를 반환하는 함수가 필요합니다. 그것은 isWord가 문자열을 취하고 단어가 참인지 거짓인지에 따라 부울을 반환하는 가설적인 함수라고 말합니다. 단어는 왼쪽에서 오른쪽으로 연속되어야합니다. 주어진 예제는 "catalogre"입니다. 그래서, "카탈로그", "귀신"과 "로그" "에서" "고양이", 함수는 범퍼는 그냥, 분명히 늘 일을 생각하고 무엇을 보여주고있다 5.
wordsInString :: [Char] -> Int
wordsInString [] = 0
wordsInString x
| isWord (take 1 x)
| isWord (take 2 x)
반환해야합니다.
이것은 내가 시작한 방법이며 take
함수를 사용하여 한 번에 각 문자를 증가시킨 다음 시작 문자를 []
까지 옮길 수 있다고 생각했지만 그 재귀를 구현하는 방법을 잘 모르겠습니다. 바르게. 누구든지 아이디어가 있거나 나에게 길을 보여줄 수 있다면, 좋을 것입니다.
나는 또한 그렇게 생각했지만, 서브 시퀀스가 반드시 연속적 일 필요는없고, 연속적인 서브 시퀀스 만 필요로한다. –
이것은'서브 시퀀스 (subsequences) '가 아니며 연속 된 서브 시퀀스 만 필요로합니다. – Carl
'하위 시퀀스'를 가져옵니다. 다른 것들 중에서''hi ''(h가 처음 나오는 단어 하나, 두 번째 단어가있는 단어 하나)에 두 가지 결과가 표시되며 결국 한 단어 대신 두 단어가 계산됩니다. –