对于作业,我被要求以两种不同的方式定义一个置换函数;一个人使用delete(X,L1,L2)
,如果L1=L2\X
则为真,而insert(X,L1,L2)
使用的L2-L1 = [X]
如果join([],L,L).
join([X|L1],L2,[X|L3]) :-
join(L1,L2,L3).
delete(X,L1,L2) :-
join(L3,[X|L4],L1),
join(L3,L4,L2).
insert(X,[],[X]).
insert(X,L1,L2) :-
delete(X,L2,L1).
permutationDelete([],[]).
permutationDelete([H|L1],L2) :-
delete(H,L2,L3),
permutationDelete(L1,L3).
permutationInsert([X|L1],L2) :-
insert(X,L1,L2),
则为真。
到目前为止,除了使用插入函数的置换生成器之外,我已经完成了所有工作。我目前的代码:
SELECT
u.name,
a.address
FROM user u
JOIN appartment a ON u.appartment_id = a.id
UNION
SELECT
name,
NULL AS address
FROM user
WHERE apartment_id IS NULL
;
但我似乎无法找到一个可行的算法来使用插入函数。有什么提示吗?