> 1 <

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

spartaque

Members


Статус

2 сообщений

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

#6719   2012-11-01 22:59 GMT+3 часа(ов)      
Здравствуйте! Помогите пожалуйста решить такую задачу в операторном стиле:
Преобразовать матрицу, оставив в списках, которые являются элементами(каждый элемент матрицы - это список, в общем подсписок 3-го уровня) этой матрицы, только первые элементы этих списков(точнее подсписков). mapcar и т.п. желательно не использовать.
Заранее огромное спасибо!

spartaque

Members


Статус

2 сообщений

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

#6720   2012-11-01 23:41 GMT+3 часа(ов)      
Есть такой вариант, но что-то тут не правильно...
(defun transform(matrix)(do '(lambda (row) 
(do '(lambda(item)(rplacd item nil))
((= item 0) row)))
((= row 0) matrix)))
 
(transform '(((1 2)(3 4))((5 6) (7 8))))

Aoloa

Members


Статус

37 сообщений

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

#6721   2012-11-02 16:56 GMT+3 часа(ов)      
Цитата
Есть такой вариант, но что-то тут не правильно...

Если честно, я не понимаю Ваш код. Объясните, пожалуйста, чего вы хотите добиться.

Особенно смущают заапострофенные лямбды. '(lambda ...) — это не код, это же данные! Надо писать либо #'(lambda ...), либо (lambda ...).

Цитата
mapcar и т.п. желательно не использовать.

Как узнать, что значит «и т.п.»? Что вообще можно использовать?

Можно написать, например, вот так:
(defun transform (matrix)
(loop for row
in matrix
collect (loop for element
in row
collect (car element))))

Но откуда же мне знать, может, loop у Вас тоже входит в «и т.п.»?
With iTeX* your entire life can be encapsulated into a dynamic hyperdocument, downloadable by anybody you designate (Donald E. Knuth, An Earthshaking Announcement)
> 1 <


Онлайн :

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