Поиск:

Ответ в темуСоздание новой темы Создание опроса
> определить функцию 
:(
    Опции темы
InKaterina
Дата 7.12.2010, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 7.12.2010

Репутация: нет
Всего: нет



Извиняюсь за поздний визит, но больше нет сил.за lisp села только сегодня, что то он мне не дается. задача такая:

Определить функцию, прибавляющую заданное число к каждому элементу (на всех уровнях) указанного списка.

Заранее спасибо
PM MAIL   Вверх
Ryukzak
Дата 7.12.2010, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 12.9.2006

Репутация: нет
Всего: 1



(defn list-inc [lst] 
  (cond (list? lst) (map list-inc lst)
  :else (+ 1 lst))
Работает так:
Усли в шункцию подак не список - то делает предположение, что это число, и возвращается его инкремент. В случае если это список (list? lst), то ко всем его элементам (map) рекурсивно применяется функция инкремента.

Диалект - clojure, в случае scheme, если не ошибаюсь, будет так:
(defun list-inc (lst) 
  (cond ((list? lst) (map list-inc lst))
  (:t (+ 1 lst)))
Но точно не уверен.
PM MAIL   Вверх
VH_
Дата 7.12.2010, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 182
Регистрация: 31.10.2006

Репутация: 10
Всего: 11



Код
(defun F (L N)
 (if L
  (cons
   (cond
    ((numberp (car L)) (+ (car L) N))
    ((atom (car L)) (car L))
    (T (F (car L) N)))
   (F (cdr L) N))))

PM MAIL   Вверх
InKaterina
Дата 7.12.2010, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 7.12.2010

Репутация: нет
Всего: нет



спасибо за ответ! смысл поняла, дальше разберусь!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума LISP
Void
  • Пожалуйста, создавайте темы с содержательными названиями.
  • Lisp — это целое семейство языков. Всегда указывайте в теме используемый диалект (Common Lisp, Scheme и т.д.).
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LISP | Следующая тема »


 




[ Время генерации скрипта: 0.0613 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.