Помогите, пожалуйста, с функцией объединения 2-x списков
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Помогите, пожалуйста, с функцией объединения 2-x списков

Помогите, пожалуйста, с функцией объединения 2-x списков

Ответ
Поиск в этой теме
Непрочитано 27.02.2023, 12:48 #1
Помогите, пожалуйста, с функцией объединения 2-x списков
Shiromi
 
Регистрация: 27.02.2023
Сообщений: 2

Здравствуйте, только начал изучать лисп и встал о задачку, перебрал кучу вариантов, даже не знаю какой приложить . Звучит она следующим образом :написать функцию , которая объединяет 2 списка таким образом , что
Вход (1 2 3 4 5) (4 5 6 7 8)
Выход (1 2 3 4 5 6 7 8) .
Использовать можно только базовый функционал. Т.е нельзя операторы циклов,функции прямого доступа к элементам список и т. д.

Заранее спасибо

Код:
(defun lsp(x y)
((null x)y)
((null y)x)
((member(car x)y)x)
(t(lsp(cdr x) y ))))
Просмотров: 860
 
Непрочитано 27.02.2023, 15:10
#2
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,290


Цитата:
Сообщение от Shiromi Посмотреть сообщение
Использовать можно только базовый функционал. Т.е нельзя операторы циклов,функции прямого доступа к элементам список и т. д.
А разве циклы не относятся к базовому функционалу?

Я так делал:
Пусть есть 2 списка:
(setq l1 (list 1 2 3 4 5))
(setq l2 (list 4 5 6 7 8))

Код:
[Выделить все]
 (defun ListAppend (l1 l2 / l3 v1)
(foreach v1 (append l1 l2) (if (not (member v1 l3))(setq l3 (cons v1 l3))))
(reverse l3))

Последний раз редактировалось Pilot, 27.02.2023 в 15:18.
Pilot вне форума  
 
Автор темы   Непрочитано 27.02.2023, 15:24
#3
Shiromi


 
Регистрация: 27.02.2023
Сообщений: 2


Цитата:
Сообщение от Pilot Посмотреть сообщение
А разве циклы не относятся к базовому функционалу?

Я так делал:
Пусть есть 2 списка:
(setq l1 (list 1 2 3 4 5))
(setq l2 (list 4 5 6 7 8))

Код:
[Выделить все]
 (defun ListAppend (l1 l2 / l3 v1)
(foreach v1 (append l1 l2) (if (not (member v1 l3))(setq l3 (cons v1 l3))))
(reverse l3))
Хм, я не совсем верно выразился. Можно использовать только eq eql или member. То ,что заменяет базовые if else.
Shiromi вне форума  
 
Непрочитано 27.02.2023, 17:09
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,378


Offtop: Что за диалект лиспа?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Помогите, пожалуйста, с функцией объединения 2-x списков



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Геометрически изменяемая система (SCAD) MaximZ SCAD 547 22.04.2025 14:45
Помогите определить серию дома пожалуйста EvilBraiN Поиск литературы, чертежей, моделей и прочих материалов 0 15.05.2016 04:20
Помогите, пожалуйста, с узлом сопряжения балок. Двутавр 55Б1 в 45Б2 Житель леса Металлические конструкции 31 18.02.2014 15:04
Несущая способность складских полов. Помогите пожалуйста. Сергей Шуршалин Архитектура 21 20.02.2007 17:34