Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5_laba_po_Lispu.doc
Скачиваний:
9
Добавлен:
09.11.2019
Размер:
69.63 Кб
Скачать

Задание 4.

“Частотный словарь”. Написать программу, которая по заданному тексту

строит список пар : (<слово> <частота встречаемости в тексте>)

;Проверяет,а не встречалось ли это слово до этого в списке - x и y списки

;z - позиция искомого слова,n - позиция рассматриваемого сейчас слова

(define (uno x y z n)

(cond

((= n z)0)

((= x (first y))1)

(true (uno x (rest y) z (+ n 1)))

)

)

;Считает количество использований слов в тексте, x и y списки, z - количество исп-й

(define (do x y z)

(cond

((null? y)(cons x z))

((= x (first y))(do x (rest y) (+ z 1)))

(true (do x (rest y) z))

)

)

;Если слово не встречалось - смотрим количество использований. Иначе берем следующее слово

(define (tres x y z)

(cond

((null? x)'())

((= (uno (first x) y z 0) 0)(cons (do (first x) (rest x) 1) (tres (rest x) y (+ z 1))))

(true (tres (rest x) y (+ z 1)))

)

)

;Стартер

(define (quatro x)

(tres x x 0))

> (quatro '(angry angry cat eating little little mouse))

((angry 2) (cat 1) (eating 1) (little 2) (mouse 1))

Вывод: проделав эту лабораторную работу, я научился более глубокой работе с текстами в LISP’е.

7