Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Многоуровневый список, найти максимум в многоуровневом списке 
:(
    Опции темы
симпопон
Дата 19.12.2010, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нужно найти максимум в многоуровневой списке. но при этом не делая из него одноуровневый.
из начально я сделала так:
Код


(defun odno (x)
(cond ((eq x nil) nil)
      ((atom (car x)) (cons (car x) (odno (cdr x))))
      (t (append (odno (car x)) (odno (cdr x))))))
ODNO
CL-USER 2 > 
(odno '(2 (3 (4 5) 6) 7 (8 9) 10 (11 (12 13) 14) 15))
(2 3 4 5 6 7 8 9 10 11 12 13 14 15)


Код

(defun max1 (x)
                           (cond ((and (atom (car x)) (null (cdr x))) (car x))
                                     ((> (car x) (max1 (cdr x))) (car x))
                                     (t (max1 (cdr x)))))
MAX1

CL-USER 6 : 2 > 
(max1 '(2 3 4 5 6 7 8 9 10 1 2 3 4))
10

оказалось это слишком простой вариан.
теперь думаю нужно написать 1 функцию примерно такую:
Код

(defun max1 (x y) 
(cond ((> x y) x)
      (t y)))
MAX1

а потом
Код

(defun max2 (x)
(cond ((and (atom (car x)) (atom (cadr x))) (cons (max1 (car x) (cadr x)) (max2 (cdr x)))) 
      (t 0)))

а вот что за место нуля??? голову сломала уже. помогите пожалуйста.

PM MAIL   Вверх
VH_
Дата 19.12.2010, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код
(defun F (L)
 (if L
  ((lambda (elem result)
    (cond
     ((null result) elem)
     ((> elem result) elem)
     (T result)))
   ((lambda (elem)
     (if (atom elem) elem (F elem)))
    (car L))
   (F (cdr L)))))

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


Новичок



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

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



Спасибо!=))

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

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

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


 




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


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

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