Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
1 / 1 / 1
Регистрация: 22.11.2015
Сообщений: 139
1

Проверить, состоят ли два списка из одних и тех же атомов

22.11.2015, 13:26. Показов 2072. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, задача на общую рекурсию .Преподавателю не нравится мое решение , путем обхода одного из списков и удаления из него элементов . Подскажите варианты решения.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.11.2015, 13:26
Ответы с готовыми решениями:

Состоят ли два списка из одних и тех же элементов
Пожалуйста, помогите решить задачу!!! Заранее спасибо!!! Состоят ли два списка из одних и тех же...

Проверить, состоят ли списки из одних и тех же фамилий
Даны два списка фамилий, в каждом из которых указано по 10 человек. Все фамилии, естественно,...

Проверить, состоят ли наборы из одних и тех же слов
6 Даны два набора по 12 слов в каждом. Проверить, состоят ли эти наборы из одних и тех же слов.

Состоят ли два числа из одних и тех же цифр
Дано два числа A и B Определить, состоят ли они из одних и тех же цифр? Иными словами, можно ли...

7
621 / 941 / 150
Регистрация: 10.08.2015
Сообщений: 5,013
22.11.2015, 14:11 2
такое решение не нравится преподавателю?
Lisp
1
2
3
4
(defun test (v w)
  (if (null v)
      (null w)
      (test (remove (car v) v) (remove (car v) w))))
2
1 / 1 / 1
Регистрация: 22.11.2015
Сообщений: 139
22.11.2015, 14:33  [ТС] 3
К сожалению , можно использовать только определенный перечень функций ,в который не входит remove. Можно использовать функции-предикаты и функции обработки списков - car , cdr , cons ,append , list .
0
4699 / 4394 / 380
Регистрация: 12.05.2012
Сообщений: 3,096
22.11.2015, 16:59 4
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(defun same-atoms (w v)
  (null (our-set-exclusive-or w v)))
 
(defun our-set-exclusive-or (w v)
  (nconc (unique w v) (unique v w)))
 
(defun unique (w v)
  (cond ((null w) nil)
        ((member (car w) v) (unique (cdr w) v))
        ((cons (car w) (unique (cdr w) v)))))
 
> (same-atoms '(a) '(a))
T
> (same-atoms '(a) '(b))
NIL
> (same-atoms '() '())
T
> (same-atoms '(a b) '(b a))
T
2
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,637
Записей в блоге: 13
22.11.2015, 17:01 5
Лучший ответ Сообщение было отмечено Jexio как решение

Решение

Цитата Сообщение от Jexio Посмотреть сообщение
К сожалению , можно использовать только определенный перечень функций
- но никто не запрещает реализовать remove самому. Напр. так:

Lisp
1
2
3
4
(defun remove (a lst)
  (if (null lst) nil 
      (if (eq a (car lst)) (remove a (cdr lst))
                           (cons (car lst) (remove a (cdr lst))))))
1
4699 / 4394 / 380
Регистрация: 12.05.2012
Сообщений: 3,096
22.11.2015, 17:05 6
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(defun same-atoms (w v)
  (null (our-set-exclusive-or w v)))
 
(defun our-set-exclusive-or (w v)
  (append (unique w v) (unique v w)))
 
(defun unique (w v)
  (cond ((null w) nil)
        ((member (car w) v) (unique (cdr w) v))
        ((cons (car w) (unique (cdr w) v)))))
 
> (same-atoms '(a b) '(b a))
T
> (same-atoms '(a b) '(b c))
NIL
2
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,637
Записей в блоге: 13
22.11.2015, 17:07 7
Еще вариант (HomeLisp):

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
(defun task (l1 l2)
 (apply 'and (append (mapcar #'(lambda (x) (member x l2)) l1)
                     (mapcar #'(lambda (x) (member x l1)) l2))))
 
==> task
 
(task '(1 2 3 4) '(1 2 3 1 2 3 4))
 
==> T
 
(task '(1 2 3 4) '(1 2 3 1 2 3))
 
==> NIL
2
1 / 1 / 1
Регистрация: 22.11.2015
Сообщений: 139
22.11.2015, 18:54  [ТС] 8
Всем большое спасибо за оперативность.
0
22.11.2015, 18:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2015, 18:54
Помогаю со студенческими работами здесь

Определить, состоят ли два числа из одних и тех же цифр
Помогите пожалуйста с решением. В теории вроде понимаю как это сделать.Разделить каждое число на...

Определить, состоят ли два числа из одних и тех же цифр
Будем называть два числа дружными, если они состоят из одних и тех же цифр. Например, числа 1132 и...

Проверить, состоят ли две заданных последовательности из одних и тех же чисел
Даны две последовательности а1, а2,…,аn и b1,b2,…,bn. Проверить, состоят ли эти последовательности...

Определить состоят ли два заданных линейных массива из одних и тех же элементов
Даны дыа линейных массива. Состоят ли они из одних и тех же элементов?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru