|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
07.06.2011, 00:08 | #1 (permalink) |
Новичок
Регистрация: 04.06.2011
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Надо построчно объяснить какие действия происходят
(defun word-cycle (rest-word prev count) (if (null rest-word) (if (= count 0) '() (cons (+ 1 count) '())) (if (eq (car rest-word) prev) (word-cycle (cdr rest-word) prev (+ count 1)) (if (= 0 count) (cons (car rest-word) (word-cycle (cdr rest-word) (car rest-word) 0)) (cons (+ 1 count) (cons (car rest-word) (word-cycle (cdr rest-word) (car rest-word) 0))))))) (word-cycle word '() 0)) (defun work-proc (text) (mapcar '(lambda (sentence) (mapcar '(lambda (word) (pack (work-word (unpack word)))) sentence)) text)) (prin1 (work-proc '((aaabb ccccddd) (eeefggg hhkl)))) |
07.06.2011, 00:08 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Может быть такое, что вопрос уже решен в похожих топиках Непонятные действия компьютера Паскаль. Действия над матрицами Вентиляторы. Какие хорошие, а какие даже в руки брать не стоит? Какие параметры надо знать при покупке оперативной памяти? |
07.06.2011, 01:17 | #2 (permalink) |
Member
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
|
(объявить функцию work-word (с аргументом word) тело функции:
(объявить функцию word-cycle (с аргументом rest-word prev count) тело функции: если аргумент rest-word пустой ( то если count=0 вернуть пустой список если не равно нулю, то увеличить count на 1 и объединить с пустым списком ) если аргумент rest-word не пустой то если (первый элемент - атом) списка rest-word равен prev то рекурсивно вызываем исполняемую функцию word-cycle с аргументами (список rest-word кроме первого элемента - хвост) prev и count увеличиный на единицу если (первый элемент - голова) списка rest-word не равен prev то если count=0 то объединить (первый элемент - голова) списка rest-word и то, что вернет функция word-cycle с аргументами (список rest-word кроме первого элемента - хвост) (первый элемент - атом) списка rest-word и 0 иначе если count не равно 0 то объединить count+1 с объединением((первый элемент - атом) списка rest-word и функция word-cycle с параметрами хвост списка rest-word голова списка rest-word и 0) вызвать функцию word-cycle с параметром word пустым списком и 0 определить функцию work-proc с параметром text дальше не уверен,что правильно вызвать для каждого аргумента text анонимную функцию(lambda) функцию с параметром sentence тело функции: для каждого элемента sentence вызвать анонимную функцию с параметром word которая я так понял что упаковать то, что вернет функция work-word с параметром распаковать word напечатать, что ввернет функция work-proc с параметром - список '((aaabb ccccddd) (eeefggg hhkl)) |
13.06.2011, 16:02 | #3 (permalink) |
Новичок
Регистрация: 13.06.2011
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
а для чего объединять с нулем?
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|