Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Lisp
Перезагрузить страницу Xlisp. Работа со списками
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
G11k2 G11k2 вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.12.2012
По умолчанию Xlisp. Работа со списками - 09.12.2012, 12:38

Пожалуйста помогите реализовать задачу:
Все отрицательные элементы списка заменить на произведение соседних элементов(кроме 1 и последнего)
Ответить с цитированием
  (#2 (permalink)) Старый
korvin korvin вне форума
Member
 
Аватар для korvin
 
Сообщений: 337
Сказал(а) спасибо: 1
Поблагодарили 15 раз(а) в 15 сообщениях
Регистрация: 25.01.2010
По умолчанию 10.12.2012, 08:57

lisp Код:
(defun f (list)
  (if (null (cddr list))
      list
    (let ((xs       list )
          (ys (cdr  list))
          (zs (cddr list))
          (result nil))
      (loop :for x :in xs
            :for y :in ys
            :for z :in zs
            :do (push (if (< y 0) (* x z) y) result)
            :finally (push z result))
      (cons (car list) (nreverse result)))))


Object-oriented design is the roman numerals of computing. — Rob Pike
Ответить с цитированием
  (#3 (permalink)) Старый
CatsTail CatsTail вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщениях
Регистрация: 08.06.2012
По умолчанию 29.01.2013, 19:26

Рекурисия:

lisp Код:
(defun task (lst &optional z)
  (cond ((<= (length lst) 2) lst)
        ((< (car lst) 0) (cons (* z (cadr lst)) (task (cdr lst) nil)))
        ((< (cadr lst) 0) (cons (car lst) (cons (* (car lst) (caddr lst)) (task (cddr lst) (cadr lst)))))
        (t (cons (car lst) (task (cdr lst) nil)))))

==> task

(task '(1 -1 5 6 7 -8 -5 6 -1))

==> (1 5 5 6 7 -35 -48 6 -1)

(task '(1 -1 5 6 7 -8 22 -5 6 -1))

==> (1 5 5 6 7 154 22 132 6 -1)
Ответить с цитированием
Ads
Ответ

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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со списками ELEKTRI4KA Prolog 3 07.06.2011 01:22
Работа со списками. BLACKRIDER Prolog 3 10.05.2010 12:34
работа со списками Novichok92 Prolog 8 25.11.2009 12:11
работа со списками Novichok92 Prolog 1 10.11.2009 19:15
работа со списками ShokoLad Prolog 18 24.07.2009 02:53
работа со списками из_семи Prolog 12 04.05.2009 01:22
Работа со списками MastaK Prolog 0 06.02.2009 13:34
Работа со списками wert30 Prolog 2 24.01.2009 16:04
Работа со списками Михаил_1987 Prolog 3 19.01.2009 09:18
Работа со списками. status Prolog 17 01.11.2008 13:06
Работа со списками NRGize Prolog 2 25.05.2007 00:43
Работа с списками ViL Prolog 1 15.04.2006 08:51



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов