Наиболее часто встречаемое слово - Lisp
Формулировка задачи:
Для текстового файла определить самое часто встречающееся слово
Помогите пожалуйста написать программу на Common Lisp
Решение задачи: «Наиболее часто встречаемое слово»
textual
Листинг программы
- (defun abundant-word (s)
- (word-max (string-list s)))
- (defun word-max (w
- &aux
- (v (remove-duplicates w))
- (m (loop for a in v maximize (count a w))))
- (loop for a in v when (= (count a w) m) collect a))
- (defun string-list (s)
- (read-from-string
- (concatenate
- 'string "(" (delete-if-not #'(lambda (x)
- (or (alpha-char-p x)
- (equal x #\space)
- (equal x #\-)))
- s) ")")))
- > (abundant-word "aaa aaa bbb bbb ccc")
- (AAA BBB)
Объяснение кода листинга программы
В данном коде реализуется функция abundant-word
, которая принимает строку s
и возвращает наиболее часто встречающиеся слова.
- В первой функции
string-list
строкаs
преобразуется в список строк, где все символы, которые не являются буквами или пробелами, удаляются. - Во второй функции
word-max
из списка словv
, полученного из строкиs
, удаляются дубликаты. Затем с помощью циклаloop
и функцииcount
подсчитывается количество каждого слова в списке. Слово с максимальным количеством повторений сохраняется в переменнойm
. - В функции
abundant-word
создается пустой списокv
, который будет заполняться словами из строкиs
. Затем с помощью циклаloop
и условия=
, проверяется каждое слово из спискаv
. Если количество повторений слова в строкеs
равноm
, то это слово добавляется в результат. В итоге функция возвращает список наиболее часто встречающихся слов. Таким образом, при вызове функцииabundant-word
с аргументомaaa aaa bbb bbb ccc
, будет возвращен список(AAA BBB)
, так как словаAAA
иBBB
встречаются наиболее часто.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д