Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Замена элементов в списке 
:(
    Опции темы
BCworm
Дата 25.5.2009, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Привет всем. Нашел здесь код и попробовал переделать под свои нужды. Есть исходный список  из отрицательных и положительных чисел. Мне необходимо функция которая перед каждым отрицательным числом ставит символ *. 
Код подправил вот так

Код

 (defun myfunc (a x)
 (cond ((null x) nil)
 ((< (car x) 0) (cons a (myfunc a (cdr x))))
 (T (cons (car x) (myfunc a (cdr x))))))


Здесь в качестве параметров передается значение (символ) на который будет заменен отрицательный элемент и собственно переменная связанная с листом а мне нужно чтоб в качестве параметра передавалась только переменная-лист
(myfunc x) и в результате работы перед каждым отрицательным элементом должен быть знак * т.е вместо -1 должно стоять *-1 вот собственно как-то так.

Помогите а?


PM MAIL   Вверх
_sg
Дата 22.12.2012, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

(defun cons* (n)
  (intern (concatenate 'string "*" (write-to-string n))))

(defun *minus (w)
  (cond ((null w) nil)
        ((minusp (car w)) (cons (cons* (car w)) (*minus (cdr w))))
        ((cons (car w) (*minus (cdr w))))))

> (*minus '(-1 0 1))
(*-1 0 1)

--------------------
vk.com/ansicommonlisp
PM MAIL   Вверх
Catstail
Дата 14.1.2013, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Или так:

Код

(defun task (lst)
  (iter (for i in lst) (when (minusp i) (collect '*)) (collect i))) 

==> task

(task '(1 2 3 -1 7 -8))

==> (1 2 3 * -1 7 * -8)


PM MAIL   Вверх
_sg
Дата 25.4.2014, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

(defun insert-asterisc (w &aux (a ( car w)) (d ( cdr w)))
  (when w (if (minusp a)
              (cons '* (cons a (insert-asterisc d)))
              (cons a (insert-asterisc d)))))

> (insert-asterisc '(-1 2 -3 -4 -5 -6 7 8 9))
(* -1 2 * -3 * -4 * -5 * -6 7 8 9)

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

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

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


 




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


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

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