Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с задачей 
V
    Опции темы
Bananza
Дата 17.6.2010, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем доброго дня. Помогите с задачкой на Lisp.
Можно решить двумя способами в рекурсивном варианте и в  итерационном варианте.

А вот и сама задача.
Заменять все отрицательные элементы списка значением 0. 
 
Пример:
 >(name ‘(1 -5 6 -7 8 -9 -4))  
(1 0 6 0 8 0 0)  

Вот моё решение, но оно не работает. smile 
(defun name (1 -5 6 -7 8 -9 -4))
(cond ((> name 0) 0)
)
)
PM MAIL   Вверх
VH_
Дата 17.6.2010, 17:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

(defun F (L)
 (cond
  ((null L) nil)
  ((minusp (car L)) (cons 0 (F (cdr L))))
  (T (cons (car L) (F (cdr L))))))

PM MAIL   Вверх
k0rvin
Дата 17.6.2010, 18:04 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

(defun f (lst)
  (do ((xs lst (cdr xs)) acc)
      ((null xs) (reverse acc))
    (push (if (minusp (car xs))
              0 (car xs))
          acc)))



--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Bananza
Дата 18.6.2010, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо Вам большое ребята. Неожидал, что так быстро ответят на мой вопрос.
PM MAIL   Вверх
wwall
Дата 25.6.2010, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



#lang racket
(define newList '(1 -5 6 -7 8 -9 -4))

(map (lambda(x) (max x 0)) newList)

(define (rec-work x)
  (printf "~a" x)
  (if (null? x)
      null
      (append (list (max 0 (car x))) (rec-work (cdr x)))))


(rec-work newList)

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


Шустрый
*


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

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



как вариант:
Код

(defun minus-0 (w &aux (a (car w)))
  (when w (cons (if (minusp a) 0 a) (minus-0 (cdr w)))))

> (minus-0 '(-1 2 -3 4 -5 7))
(0 2 0 4 0 7)

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

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

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


 




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


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

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