2016-06-06 4 views
-3

У меня есть следующий текст: "Hello world! I love this world", и мне нужно знать, сколько раз в тексте повторяется слово «мир». Как я могу это сделать с Haskell?Как я могу узнать, сколько раз повторяется слово?

+1

Написать код. Мы не делаем этого для вас. Мы (возможно) попробуем помочь исправить код, который вы написали. –

+0

Что такого трудного? Вам нужны только логика и синтаксис. Если вы знаете синтаксисы и логику, вы можете написать свою программу :) (логика простая: поиск слова, и если она найдена, добавьте переменную, простую, как это) – dpaul1994

ответ

0

Глупым способом является просмотр каждой позиции в списке и проверка, является ли это началом "world". Подсчитайте позиции, которые есть, и вы закончили.

Data.List> length . filter ("world" `isPrefixOf`) . tails $ "Hello world! I love this world" 
2 
+0

может быть, 'слова' вместо' хвостов' тоже здесь (и, может быть, проще для новичков) – Carsten

+0

@ Карстен Возможно. Это зависит от того, какое поведение желательно и для этого. Надеюсь, что кто-то, кто наткнется на это и потратит время на то, чтобы понять этот фрагмент, сможет либо изменить его по мере необходимости для своего поведения, либо уметь написать четко сформулированный последующий вопрос. –

+0

@Carsten 'words' может не работать на некотором входе, например' world, world' – klappvisor

1
import Data.List.Split(splitOneOf) 

wordcount w = length . filter (==w) . splitOneOf ";.,! " 

> wordcount "world" "Hello world! I love this world" 
2 
Смежные вопросы