> 1 <

Автор Сообщение

Дуська

Members


Статус

21 сообщений

Где: Ukraine
Род занятий:
Возраст:

#6977   2013-03-30 01:18 GMT+3 часа(ов)      
Дан текст. Найти длину самой длинной последовательности повторяющихся подряд идущих элементов этой строки. (Рекомендуется сначала написать вспомогательную функцию, возвращающую количество одинаковых элементов в начале списка, а затем применить MAPLIST).

Файфель Б.Л.

Members


Статус

61 сообщений
http://homelisp.ru
Где: Russia Саратов
Род занятий: Программист
Возраст: 66

#6982   2013-03-30 21:45 GMT+3 часа(ов)      
 
(defun count-eq (lst &optional (c 0) (p (car lst)))
(cond ((null lst) c)
((eq p (car lst)) (count-eq (cdr lst) (+ 1 c) p))
(t c)))
==> count-eq
;; Проверка
(count-eq '(a a a b c d))
==> 3
(count-eq '(a a b c d))
==> 2
(count-eq '(a b c d))
==> 1
(count-eq '(a a a))
==> 3
;; решение задачи
(defun task (lst)
(apply 'max (maplist #'count-eq lst)))
==> task
(task '(aa aa ab ac ac ac ad ae af af af af aa aw))
==> 4
 
> 1 <


Онлайн :

0 пользователь(ей), 38 гость(ей) :