用 (1,2), (1,-2), (-1,2), (-1,-2), (2,1), (2,-1) 统一 X,Y 的优雅方式是什么, (-2,1), (-2,-1)?
这样做似乎容易出错且乏味:
foo(1,2).
foo(1,-2).
foo(-1,-2).
...
...
...
而且这种方式似乎太贵了:
foo(X,Y) :-
L = [1,-1,2,-2],
member(X,L),
member(Y,L),
abs(X,X1), abs(Y,Y1),
X1 =\= Y1.
最佳答案
关于评论内容的进一步发展:
generate_pairs_foo(X,Y) :-
L = [1,-1,2,-2],
member(X,L),
member(Y,L),
abs(X,X1), abs(Y,Y1),
X1 =\= Y1.
assert_all_foo([]).
assert_all_foo([(X,Y)|T]) :-
assert(foo(X,Y)), assert_all_foo(T).
find_all((X,Y),generate_pairs_foo(X,Y),L), assert_all_foo(L).
嗯嗯...看,只写所有案例更容易和更短xD
关于prolog - 用 (1,2), (1,-2), (-1,2), (-1,-2), (2,1), (2,-1) 统一 X,Y 的优雅方式是什么, (-2,1), (-2,-1)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1525622/