Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 07.06.2011, 00:08   #1 (permalink)
ksu9304
Новичок
 
Регистрация: 04.06.2011
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Надо построчно объяснить какие действия происходят

(defun work-word (word)
(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))))
ksu9304 вне форума   Ответить с цитированием

Старый 07.06.2011, 00:08
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Может быть такое, что вопрос уже решен в похожих топиках

Непонятные действия компьютера
Паскаль. Действия над матрицами
Вентиляторы. Какие хорошие, а какие даже в руки брать не стоит?
Какие параметры надо знать при покупке оперативной памяти?

Старый 07.06.2011, 01:17   #2 (permalink)
kreol
Member
 
Аватар для kreol
 
Регистрация: 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))
kreol вне форума   Ответить с цитированием
Старый 13.06.2011, 16:02   #3 (permalink)
yokoneshi
Новичок
 
Регистрация: 13.06.2011
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

а для чего объединять с нулем?
yokoneshi вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 10:37.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.