> 1 <

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

Добрый_Утконос

Members


Статус

15 сообщений

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

#4767   2011-10-05 23:36 GMT+3 часа(ов)      
Добрый вечер.
Как можно перевести строки массива в колонны?
То есть перевернуть массив?
Например: из
Mas(
(2 3 4 -1)
(3 0)
(-1 2 9)
) получить
Mas2(
(2 3 -1)
(3 0 2)
(4 9)
(-1)
)

joba

Members


Статус

157 сообщений

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

#4768   2011-10-06 00:15 GMT+3 часа(ов)      
А зачем это надо? Например, (
(2 3 4 -1)
(3 0)
(-1 2 9)
)
и
(
(2 3 4 -1)
(3 0 9)
(-1 2)
)
после этой операции преобразуются в одно и то же. Т.е. это не биективная функция. В общем, странная фигня. Ты уверен, что правильно условие записал?

Добрый_Утконос

Members


Статус

15 сообщений

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

#4769   2011-10-06 00:54 GMT+3 часа(ов)      
Joba,
нет, это я сам такое условие выдумал.
Задание другое:
В ообщем благодаря megamanx у меня получилась функция, которая берёт список [ напр. (2 4 -2 1 2 -3 1 3 0 2 2 2 2)], находит пару противоположных элементов, уничтожает вторые по счёту из этих пар и возврощает назад [напр. (2 4 1 2 -3 1 0 2 2 2 2)] список без этих уничтоженных элементов.

Теперь задание, реализовать эту функцию для строчек массива и для колонн этого же массива.(Но массив не обязательно равномерный!!!!!!)
Например:
Мас (
(1 2 3)
(-2 3 2 2)
(-1 5)
)
Такая функция по рядам выдаст ( (1 2 3) (-2 3 2) (1 5) )
И по колоннам – ( (1 -2) (2 3 5) (3 2) (2) ).

С первой задачей я справился (отцепливаю строку, пропускаю через уничтожающую отрицательные значения функцию, остаток пропускаю рекурсивно, потом всё сцепливаю обратно):

(defun Funkcija_po_rjadam (L) (COND
((NULL L) L)
(T (CONS (FUNKCIJA_Kotoraja_vozvrashjaet_stroku_bez_udalennih_elementov (CAR L)) (Funkcija_po_rjadam (CDR L))))
))

И вот зародилась идея сделать тоже самое с колоннами, то есть перевернуть их и работать точно так же, как со строками. Вот вся история.

joba

Members


Статус

157 сообщений

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

#4770   2011-10-06 02:02 GMT+3 часа(ов)      
Ну просто берешь первую колонку: (mapcar #'car list).
Пусть list это
(
(2 3 4 -1)
(3 0)
(-1 2 9)
)
т.е. ты получишь список (2 3 -1).
Все, что осталось, оставляешь: (map #'cdr list)
т.е. получишь уже
(
(3 4 -1)
(0)
(2 9)
)
Дальше, опять берешь первую колонку, получишь (3 0 2).
Опять оставляешь, все, что осталось, получишь
(
(4 -1)
NIL
(9)
)
Убираешь по ходу этот NIL на фиг. Получишь
(
(4 -1)
(9)
)
Опять берешь первую колонку, получишь (4 9).
Ну и т.д. Короче, суть ты должен был понять.

Добрый_Утконос

Members


Статус

15 сообщений

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

#4771   2011-10-06 03:36 GMT+3 часа(ов)      
Joba
спасибо! Получилось!!!
> 1 <


Онлайн :

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




Реклама на сайте: