Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2010, 12:14   #1
hunter03
Форумчанин
 
Регистрация: 05.05.2009
Сообщений: 244
По умолчанию Задача на LISPe

Здравствуйте, помогите пожалуйста решить задачу:
Есть список вида:
((1(2 3)4)(5 6 (7 8 9))(10 (11 12 13)(14 15 16)))
необходимо его преобразовать в вид:
((1(2)4)(5 6(7))(10(11)(14)))

Вот что вышло, помогите исправить ошибки...
Код:
defun vvod() (progn (setq x (progn (princ "input matrix as one list") (terpri) (read)))))

(defun res () (progn 
(setq y x)
(setq x ())
(setq f ())
b1

(setq z (car y))
(go b2)

b2 
(cond ( (not (atom(car z))) (progn ( setq f (append f (list (caar z)))) (setq z (cdr z)) (cond ((not (null z)) (go b2))) )))
( cond ((not (null z)) (progn (setq f (append f (list(car z)))) (setq z (cdr z)) (cond ((not (null z)) (go b2))) ))) 
(t (go m1))

m1

(setq x (append x f))
(setq f ())
(setq y (cdr y))

(cond ((not (null y)) (go b1))) ))

Последний раз редактировалось Stilet; 28.12.2010 в 13:36.
hunter03 вне форума Ответить с цитированием
Старый 28.12.2010, 13:44   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Честно говоря, не понял, что тут написано. Старайтесь оформлять код, ибо такое читать совершенно невозможно. И вообще, по-моему, можно сделать проще:
Код:
(defun input-list ()
    (format t "~a" "Input matrix as one list: ")
    (read))

(defun transform (in-list)
  (let ((out-list nil))
    (dolist (sublist in-list)
      (let ((out-sublist nil))
	(dolist (element sublist)
	  (if (atom element)
	      (push element out-sublist)
	      (push (list (car element)) out-sublist)))
	(push (reverse out-sublist) out-list)))
    (reverse out-list)))

Последний раз редактировалось netrino; 28.12.2010 в 13:55.
netrino вне форума Ответить с цитированием
Старый 28.12.2010, 18:37   #3
hunter03
Форумчанин
 
Регистрация: 05.05.2009
Сообщений: 244
По умолчанию

пишет ошибки на "dolist" и "sublist"
hunter03 вне форума Ответить с цитированием
Старый 28.12.2010, 22:30   #4
Kingdom_Reborn
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 130
По умолчанию

Код:
(DEFUN V (L)
	(COND
		((ATOM L) NIL)
		((NOT (ATOM (CDAR L))) (CONS (LIST (CAAR L)) (V (CDR L))))
		(T (CONS (CAAR L) (V (CDR L))))))
(DEFUN W (L)
	(COND
		((ATOM L) NIL)
		(T (CONS  (V (CAR L)) (W (CDR L))))))	
(SETQ L '((1 (2 3) 4)(5 6 (7 8 9))(10 (11 12 13)(14 15 16))))
(PRINT (W L))
Kingdom_Reborn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача 1 UnLimited Помощь студентам 1 13.10.2010 19:26
Задача ksandrj Помощь студентам 0 23.09.2010 14:29