Задание 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