> 1 <

Автор Сообщение

bagum

Members


Статус

1 сообщений

Где: Latvia
Род занятий:
Возраст:

#5312   2011-12-12 01:59 GMT+3 часа(ов)      
Доброе время суток!
Необходимо сделать функцию, которая при вводе стороки, состоящий из нескольких подстрок, сотрировать ( сначала все отрицательные, а потом положительные числа) и вывести новый список. Пример: ((1 2 1)(-1 -2 -3)(-2 -3)) -> по столбцам ((-1 -2 1)(-2 -3 2)(-3 1)) и по строкам ((1 2 1)(-1 -2 -3) (-2 -3) (если рассматривать строки как матрицу).

Код позволяющий сотрировать 1 простую строку - ( 2 -1 3 5 -6 ) -> (-1 -6 2 3 5)
(defun main(N)
(cond
((NULL N) NIL)
(T (setq p '())
(setq g '())
(setq rez '())
(poz N)
(neg N)
(exch(app p g))
(progn rez)
)))

(defun exch(v)
(cond
((NULL V) NIL)
(T (setq x (CAR V))
(setq rez (cons x rez))
(exch(CDR V)))))

(defun poz(N)
(cond
((NULL N) NIL)
(T (setq x (CAR N))
(cond
(( > x -1) (setq p (cons x p))))
(poz(CDR N))
)))

(defun neg(n)
(cond
((NULL N) NIL)
(T (setq x (car N))
(cond
(( < x 0 ) (setq g (cons x g))))
(neg(CDR N))
)))

(DEFUN APP (L M)
(COND
((NULL L) M)
(T (CONS (CAR L) (APP (CDR L) M) ))
))


Получилось сделать со строками, а вот со столбцами не получается...
Код с обраткой по строкам:

(defun ROWS (L)
(mapcar 'main L))

Заранее большое спасибо!

отредактировал(а) bagum: 2011-12-13 03:10 GMT+3 часа(ов)
> 1 <


Онлайн :

0 пользователь(ей), 43 гость(ей) :