Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Lisp
Перезагрузить страницу LISP - удаление повторов в матрице по рядма и колоннам
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
tums tums вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.10.2015
По умолчанию LISP - удаление повторов в матрице по рядма и колоннам - 08.10.2015, 14:13

Привет ,

появился такой вопрос выполняя лабараторку .

Стоит задача , есть массив например
( (1 -4 3 2 2)
(3 0 3)
( 2 1 1 2))

Из нее надо получить два результата.
1) улдалить все ллубликаты по рядам оставляя первый элемент чтоб получилось :
(( 1 -4 3 2)
(3 0 )
(2 1))

2) удалить дубликаты по колонам чтоб остались первые . Например :
( ( 1 -4 3 2 2)
( 3 0 )
( 2 1 1 ))

если по рядам +- как то понимаю , но по колонам не понимаю . Как быть если значение удалится и с разным количеством элементов в списке ?
Ответить с цитированием
  (#2 (permalink)) Старый
tums tums вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.10.2015
По умолчанию 19.10.2015, 01:00

Вот работающий вариант но надо сделать чтобы удалялись вторые дубликаты, а остался только первый исходник. Есть идеи как сделать?

(defun FindLastList(L)(
cond ((null L) nil)
((null (cdr L)) (car L))
(T (FindLastList(cdr L)))
)
)

(defun FindLastAtom(L)(
cond ((null L) nil)
((null (cdr L)) (
cond((atom (car L)) (car L))
(T (FindLastAtom (car L)))
))
(T (FindLastAtom(cdr L)))
)
)

(defun NoLast(L)(
cond((null (cddr L)) (List(car L)))
(T (cons (car L) (NoLast (cdr L))))
)
)

(defun DelDup (L x)(
cond( (null (cdr L)) (
cond((atom (car L))(
cond((equal(car L) x) nil)
(T L)
))
(T (List(DelDup (car L) x)))
) )
((atom(car L))(
cond((equal(car L) x)(DelDup(cdr L) x))
(T (append (List(car L)) (DelDup (cdr L) x)))
))
(T (append (List(DelDup (car L) x))(DelDup(cdr L)x)))
)
)

(defun Lab (L)(
cond((null (cdr L)) L)
((atom(FindLastList L)) (append (lab(DelDup (NoLast L)(FindLastAtom L))) (List(FindLastList L))))
(T (append (lab (DelDupList (NoLast L) (FindLastList L))) (List(lab(FindLastList L )))))
)
)

(defun delDupList(L L1)(
cond((null (cdr L1))
(
cond ((atom (car L1)) (DelDup L (car L1)))
(T (DelDupList L (car L1)))
))
(T
(
cond ((null(atom (car L1))) (DelDupList (DelDupList L (car L1)) (cdr L1) ) )
(T (DelDupList (DelDup L (car L1)) (cdr L1)))
))
)
)

(defun invers (L) ( cond ( (null (getfirst L) ) nil )
(T (cons (getfirst L) (compose (getrest L) )) )
))



(defun getfirst (L) ( cond ((atom (car L)) (car L) )
(T (cons (getfirst (car L)) (getfirst (cdr L) )) )
))

(defun getrest (L) ( cond ((atom (car L)) (cdr L) )
(T (cons (getrest (car L)) (getrest (cdr L) )) )
))

(defun lab2_row(L)(
cond((NULL(CAR (CDR L)))(LIST (LAB (CAR L))))
(T(CONS (LAB (CAR L)) (LAB2(CDR L))))
)
)

(defun lab2_col(L)(
lab2_row(invers L)
)
)
Ответить с цитированием
  (#3 (permalink)) Старый
AD AD вне форума
Member
 
Сообщений: 575
Сказал(а) спасибо: 7
Поблагодарили 3 раз(а) в 3 сообщениях
Регистрация: 15.07.2009
По умолчанию 26.10.2015, 23:21

Попробуйте разобрать каждую строчку приведенного Вами же кода, уверен, тогда поймете смысл задачи, а раз, поймете смысл - половина дела сделана. Вторая половина - дописать немного код. На мой взгляд, код будет более читабелен, если сделать отступы и самому написать комментарий к каждой функции и разобрать каждую строчку кода.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мониторы на e-IPS матрице nertus Мониторы 266 16.11.2012 20:47
запись повторов в новый список BlackYul Prolog 3 03.12.2011 13:20
Удаление повторов слов в строке as1212 Pascal 0 08.11.2011 21:55
вопросы по матрице sanchoflat Pascal 0 25.10.2011 19:58
Помогите с макросом в Excel-удаление повторов Alex1985 Вопросы начинающих программистов 1 23.10.2011 16:25
Удаление столбца в матрице m1Xtape Assembler 0 22.05.2011 23:01
Поиск элементов в матрице imported__Sergey_ Алгоритмы 2 03.06.2009 23:28
Ввести строку символов и подсчитать количество повторов каждой буквы OlkaGrim Вопросы начинающих программистов 2 12.05.2007 02:12
Удаление повторов в списке Youllia Prolog 2 26.11.2006 21:36
Подсчитать число повторов элементов в различных подсписках заданного списка Isav Lisp 3 31.10.2006 00:01
Удаление символов и удаление строки в коде MuSiC_4_lOvE Вопросы начинающих программистов 5 13.10.2006 21:23
Удаление записей помеченные на удаление в связке BCB-dbf mr_Driver C++ Builder 1 05.09.2003 10:31



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов