PDA

Просмотр полной версии : Язык программирования Лисп


Тарифы: МТС, Билайн, МегаФон
Выгодные непубличные тарифы МТС, Билайн, МегаФон, Безлимитный интернет ✅
Тайминг
14-12-2010, 14:18
кто нить может помочь с ЛИСПом?!

Kolos
14-12-2010, 14:24
ужыс то какой. где его проходят то?

Тайминг
14-12-2010, 14:26
УГНТУ....разбираешься в нем?!

Kolos
14-12-2010, 14:35
это было давно и неправда. а чо надо то?

Тайминг
14-12-2010, 14:36
Например есть два списка

L1 (AB) и L2 (12)

надо сделать функцию чтоб на выходе получалось (А1В2)

Тайминг
14-12-2010, 14:58
ааааааааап

Тайминг
14-12-2010, 18:16
апппппппппп

OsminogPauli
14-12-2010, 18:21
(DEFUN MERGE (L1 L2)
(COND ((AТОМ L1) L2)
((ATOM L2) L1)
(Т (LET ((L NIL))
(COND ((< (CAR L1) (CAR L2))
(SETQ L L1) (POP L1))
(T (SETQ L L2) (POP L2)))
(DO ((P L (CDR P)))
((OR (ATOM L1) (ATOM L2))
(COND ((ATOM L1) (RPLACD P L2))
(T (RPLACD P L1)))
L)
(COND ((< (CAR L1) (CAR L2))
(RPLACD P L1) (POP L1))
(T (RPLACD P L2) (POP 12)))) ))))
(DEFUN MSORT (X1 N)
(COND ((<= N 1) X1)
(T (DO (X2
(N2 (TRUNCATE N 2))
(K 1 (+ K 1))
(P X1 (CDR P)))
((= К N2)
(SETQ X2 (CDR P))
(RPLACD P NIL)
(SETQ X1 (MSORT X1 K))
(SETQ X2 (MSORT X2 (- N K)))
(MERGE X1 X2))) )))
(DEFUN MERGESORT (L) (MSORT L (LENGTH L)))

хз уже не помню :(

Тайминг
14-12-2010, 19:01
тут многовато друг(((по другому как то

Тайминг
14-12-2010, 22:05
ааппп

OsminogPauli
15-12-2010, 10:49
(defun lab (x y)
(cond ((null x) y) ((null y) x) ((lab1 x y))))
(defun lab1 (x y)
(when x (cons (car x) (lab1 y (cdr x)))))>(lab '(1 2 3) '(a b c))
(1 a 2 b 3 c)

Может так?

Тайминг
15-12-2010, 16:07
во это вроде верноооо!!!!! спасибо...надеюсь ОНО!!!

Тайминг
15-12-2010, 16:23
блин ошибку выдает

Тайминг
15-12-2010, 16:25
Undefined Function Break: (when x (cons (car x) (lab1 y (cdr x))))

OsminogPauli
15-12-2010, 17:44
(defun lab (x y)
(cond ((null x) y) ((null y) x) ((lab1 x y))))
(defun lab1 (x y)
(if x (cons (car x) (lab1 y (cdr x)))))>(lab '(1 2 3) '(a b c))
(1 a 2 b 3 c)

или так

OsminogPauli
15-12-2010, 17:46
(defun lab (x y)
(cond ((null x) y) ((null y) x) ((la x y))))
(defun la (x y)
(cond (x (cons (car x) (la y (cdr x))))))
> (lab '(1 2 3) '(a b c))
(1 A 2 B 3 C)
(lab '(1 2 3) '())
> (1 2 3)
CL-USER> (lab '() '(a b c))
> (A B C)

kycok
15-12-2010, 17:48
Дружинская преподает?

OsminogPauli
15-12-2010, 17:50
все мозг взорвался...

OsminogPauli
15-12-2010, 17:51
она до сих пор преподает? :eek::D

kycok
15-12-2010, 17:53
самому интересно. В той же желтой кофточке? :D

Тайминг
15-12-2010, 18:45

да да)))она))

Тайминг
15-12-2010, 18:49
спасибо большое..на днях пойду сдавать скажу результат))а так заработала прога

OsminogPauli
15-12-2010, 18:51
попробуй еще 2 версию)

Saw
15-12-2010, 18:51
Гг:D Вот они где ПОшнеги:D

на матизке катается?

OsminogPauli
15-12-2010, 18:52
только бить нас не надо :D

Saw
15-12-2010, 18:53
Да ладно, я сам у Буренина диплом писал :rolleyes:

Тайминг
15-12-2010, 18:57
вторая тоже работает))))спасибо)))

Тайминг
15-12-2010, 18:58
про машину не знаю))))

Тайминг
15-12-2010, 19:00
не осталось копии диплома?!))

Saw
15-12-2010, 19:02
Нее, давно все отформатировано. Годы прошли ужо))

Тайминг
15-12-2010, 19:02
сам писал проги на диплом?!?!или помогали?! учился заочно или очно!?!

Saw
15-12-2010, 19:22
Очно, сам, с другом:D. У меня не стока программирование, скока админка)

Тайминг
15-12-2010, 19:53
ПО была специальность?!

Saw
15-12-2010, 19:55
Да, а что?))

transmaster
16-12-2010, 09:28
вроде на ПО все проги пишут на диплом...или не ОБЯЗАТЕЛЬНО!?

Saw
16-12-2010, 15:08
обязательно)))
я и не говорил, что не писал.

Tims
16-12-2010, 15:32
линуксоида зовите он лисп наизусть знает :D

Тайминг
17-12-2010, 19:49
да он вроде сам приходит всегда..а тут нету..значит не шарит

Saw
18-12-2010, 12:42
ну мы апнуть можэм:)

severus
18-12-2010, 19:13
Задача 1.
Определяет принадлежность элемента к заданному списку
Решение:
(defun prinad (el sp)
(cond ((null sp) nil)
((eq el (car sp)) t)
(t (prov el (cdr sp)))))
Пример работы:
> (prinad 2 '(1 2 3 4))
T
Задача 2.
Находит последний четный (нечетный) элемент списка
Решение:
(defun poselch (sp)
(setf sp (reverse sp))
(cond
((null sp) nil)
((= (mod (car sp) 2) 0) (car sp))
(t (poselch (reverse (cdr sp))))))
(defun poselnech (sp)
(setf sp (reverse sp))
(cond
((null sp) nil)
((not(= (mod (car sp) 2) 0)) (car sp))
(t (poselnech (reverse (cdr sp))))))
Пример работы:
> (poselch '(1 2 3 4 5))
4
> (poselnech '(1 2 3 4 5 6))
5
Задача 3.
Удаляет последний элемент списка
Решение:
(defun udalposel (sp)
(cond ((null sp) nil)
((null (cdr sp)) nil)
(t (cons (car sp) (udalposel (cdr sp))))))
Пример работы:
> (udalposel '(1 2 3 4))
(1 2 3)
Задача 4.
Вычисляет число элементов, совпадающих с данным элементом
Решение:
(defun kolelsov (el sp sov)
(cond ((null sp) sov)
((eql el (car sp)) (setf sov (+ sov 1)) (kolelsov el (cdr sp) sov))
(t (kolelsov el (cdr sp) sov))))
Пример работы:
> (kolelsov 2 '(1 2 3 2 4 5 2) 0)
3
Задача 5.
Удаляет первое вхождение заданного элемента из списка
Решение:
(defun udalper (el sp)
(cond
((null sp) nil)
((eql el (car sp)) (cdr sp))
(t (cons (car sp) (udalper el (cdr sp))))))
Пример работы:
> (udalper 3'(1 2 3 4 5 3))
(1 2 4 5 3)
Задача 6.
Удаляет элементы, стоящие на четных (нечетных) позициях
Решение:
(defun chetpoz (sp)
(cond
((null (cdr sp)) sp)
(t (cons (car sp) (chetpoz (cdr (cdr sp)))))))

(defun nechetpoz (sp)
(cond
((null (cdr (cdr sp))) (cdr sp))
(t (cons (cadr sp) (nechetpoz (cdr (cdr sp)))))))
Пример работы:
> (chetpoz '(1 2 3 4 5 6 7))
(1 3 5 7)
> (nechetpoz '(1 2 3 4 5 6 7))
(2 4 6)
Задача 7.
Удаляет все вхождения заданного элемента из списка
Решение:
(defun udalvse (el sp)
(cond
((null sp) nil)
((eql el (car sp)) (udalvse el (cdr sp)))
(t (cons (car sp) (udalvse el (cdr sp))))))

Пример работы:
> (udalvse 3 '(1 2 3 5 3 4 4 8 2 3))
(1 2 5 4 4 8 2)
Задача 8.
Заменяет элементы, совпадающие с заданным на новые
Решение:
(defun zamena (el zam sp)
(cond
((null sp) nil)
((eql el (car sp)) (setf sp (cons zam (cdr sp)))(zamena el zam sp))
(t (cons (car sp) (zamena el zam (cdr sp))))))
Пример работы:
> (zamena 4 8 '(1 2 4 5 3 6 7 4 8 2 4))
(1 2 8 5 3 6 7 8 8 2 8)
Задача 9.
Проверяет список на одноуровневость
Решение:
(defun prov (sp)
(cond
((null sp) t)
((not (atom (car sp))) nil)
(t (prov (cdr sp)))))
Пример работы:
> (prov '(1 2 (3)))
NIL
> (prov '(1 2 3))
T


Задача 10.
Обращает список
Решение:
(defun obrat (sp)
(cond
((null sp) nil)
(t (append (obrat (cdr sp))(cons (car sp) nil)))))
Пример работы:
> (obrat '(1 2 3 4 5))
(5 4 3 2 1)
Задача 11.
Переводит список (a b c) в списки (((с) b) a), (a (b (c))) и (((a) b) c)
Решение:
(defun preob1 (sp)
(cond
((null (cdr sp)) sp)
(t (list (preob1 (cdr sp)) (car sp)))))

(defun preob2 (sp)
(cond
((null (cdr sp)) sp)
(t (list (car sp)(preob2 (cdr sp))))))

(defun preob3 (sp)
(setf sp (reverse sp))
(cond
((null (cdr sp)) sp)
(t (list (preob3 (reverse(cdr sp)))(car sp)))))

Пример работы:
> (preob1 '(a b c))
(((C) B) A)
> (preob2 '(a b c))
(A (B (C)))
> (preob3 '(a b c))
(((A) B) C)
Задача 12.
Соединяет списки (a b c…) и (1 2 3…) в список (a 1 b 2 c 3 …)
Решение:
(defun preob4 (sp1 sp2)
(cond
((null sp1) nil)
((null sp2) nil)
(t (append (list (car sp1) (car sp2)) (preob4 (cdr sp1) (cdr sp2))))))
Пример работы:
> (preob4 '(a b c) '(1 2 3)))
(A 1 B 2 C 3)
Задача 13.
Объединяет два списка
Решение:
(defun obeddva (sp1 sp2)
(cond
((null sp1) sp2)
((null sp2) nil)
(t (append (list (car sp1)) (obeddva (cdr sp1) sp2)))))
Пример работы:
> (obeddva '(1 2 3 4) '(a d f))
(1 2 3 4 A D F)

в прошлом году изучали лисп... вот че нарыл авось автору пригодится))

Saw
18-12-2010, 19:25
прикольный язык, мозг поломать отлично подходит)))

Тайминг
20-12-2010, 12:44
блин...не правильно...надо одной функцией это сделать(((

Тайминг
20-12-2010, 12:46
(defun L (l1 l2)
( cond ((null l1) l2)
((null l2) l1)
(t
(cons (list (car l1) (car l2)) (L (cdr l1) (cdr l2)) )
)
)
)

(L '(a b) '(1 2))

(A 1) (B 2)

поучается...а надо чтоб получалось (А 1 В 2)....как доделать а?!?