The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"помощь в ЛИСПе"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"помощь в ЛИСПе"  
Сообщение от nikolayk (ok) on 21-Авг-06, 19:03 
Мне нужно написть данные функции:
1.  Функция которая получает список и возвращает его в обратном порядке.
2.  Функция которая получает список чисел и возвращает его сумму.
3.  Функция которая получает два списка и возвращает элементы находящиеся в обеих списках.
4.  Функция которая получает список и возвращает упорядоченный список с атомами в начале и числами в конце.
5.  Функция которая получает элемент и список подсписков и отвечает находится ли данный элемент в списке.
6.  Функция которая получает аргумент и возвращает количество списков в нем с помощью MAPCAR.
7.  Функция которая получает список и возвращает данный список но без дупликатов.
8.  Функция которая получает два списка и объединяет их в один список.
9.  Функция которая получает два *отсортированных* списка и возвращает элементы находящиеся в обеих списках.
10. Функция которая получает список и элемент и возвращает глубину элемента в списке.
Спасибо за помощь!
Колян
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "помощь в ЛИСПе"  
Сообщение от zhekaz (ok) on 21-Авг-06, 19:32 
>Мне нужно написть данные функции:
>1.  Функция которая получает список и возвращает его в обратном порядке.
>
>2.  Функция которая получает список чисел и возвращает его сумму.
>3.  Функция которая получает два списка и возвращает элементы находящиеся в
>обеих списках.
>4.  Функция которая получает список и возвращает упорядоченный список с атомами
>в начале и числами в конце.
>5.  Функция которая получает элемент и список подсписков и отвечает находится
>ли данный элемент в списке.
>6.  Функция которая получает аргумент и возвращает количество списков в нем
>с помощью MAPCAR.
>7.  Функция которая получает список и возвращает данный список но без
>дупликатов.
>8.  Функция которая получает два списка и объединяет их в один
>список.
>9.  Функция которая получает два *отсортированных* списка и возвращает элементы находящиеся
>в обеих списках.
>10. Функция которая получает список и элемент и возвращает глубину элемента в
>списке.
>Спасибо за помощь!
>Колян

Превед товарисч!
Тяжелая у тебя жизнь, учись пока я жив:

1:
(defun myReverse-aux (lst l-res)
    (if (null lst) l-res
        (myReverse-aux (cdr lst) (cons (car lst) l-res))
    )
)

2:
(defun sum (lst)
    (if (null lst) 'Not_defined
        (sum-aux lst 0)
    )
)
(defun sum-aux (lst res)
    (if (null lst) res
        (sum-aux (cdr lst) (+ res (car lst)))
    )
)

3:
(defun dupl (l1 l2)
    (cond
        ((null l1) '())
        ((myMember (car l1) (cdr l1)) (dupl (cdr l1) l2))
        ((myMember (car l1) l2) (cons (car l1) (dupl (cdr l1) l2)))
        (t (dupl (cdr l1) l2))
    )
)

4:
(defun sep (lst)
    (cond
        ((null lst) '())
        ((numberp (car lst)) (append (sep (cdr lst)) (list (car lst))))
        (t (cons (car lst) (sep (cdr lst))))
    )
)


5:
(defun myMember (e l)
    (cond
        ((null l) nil)
        ((equal (car l) e) t)
        (t (myMember e (cdr l)))
    )
)

6:
(defun NumOfLists (item)
    (cond
        ((not (listp item)) 0)
        ((null item) 1)
        (t (+ 1 (apply #'+ (mapcar #'NumOfLists item))))
    )
)

7:
(defun rq (l)
    (cond
        ((null l) '())
        ((myMember (car l) (cdr l)) (rq (cdr l)))
        (t (cons (car l) (rq (cdr l))))
    )
)

8:
(defun union (l1 l2)
    (rq (append l1 l2))
)
(defun rq (l)
    (cond
        ((null l) '())
        ((myMember (car l) (cdr l)) (rq (cdr l)))
        (t (cons (car l) (rq (cdr l))))
    )
)

9:
(defun inter (l1 l2)
    (cond
        ((or (null l1) (null l2)) '())
        ((< (car l1) (car l2)) (inter (cdr l1) l2))
        ((> (car l1) (car l2)) (inter l1 (cdr l2)))
        ((= (car l1) (car l2)) (cons (car l1) (inter (cdr l1) (cdr l2))))
    )
)

10:
(defun depth (lst e)
    (cond
        ((equal lst e) 0)
        ((null lst) nil)
        ((listp lst) (if (check e (car lst)) (+ 1 (depth (car lst) e)) (depth2 (cdr lst) e)))
    )
)

(defun depth2 (lst e)
    (if (null lst) nil
        (if (check e (car lst)) (+ 1 (depth (car lst) e)) (depth2 (cdr lst) e))
    )
)

(defun check (e lst)
    (cond
        ((equal e lst) t)
        ((null lst) nil)
        ((listp lst) (if (check e (car lst)) t (check2 e (cdr lst))))
    )
)


(defun check2 (e lst)
    (if    (null lst) nil
        (if (check e (car lst)) t (check2 e (cdr lst)))
    )
)

Я надеюсь что поможет но если есть ошибки то я невиноват!

Жека

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру