List 序言未以我想要/需要的方式显示输出

List 序言未以我想要/需要的方式显示输出,list,prolog,List,Prolog,我对Prolog很陌生,需要解决一个任务。所以我需要比较两个列表,检查它们是否有相同的长度,是否包含奇数个元素。我只允许使用以下内置操作符:!然后失败 到目前为止,代码仍然有效,但当我想从Prolog获得以下内容时: guu([a,b,c],X). 我明白了: X = [_900, _906, _912] 但我想要的是: X = [a, b, c] 或: 到目前为止,我的代码是: guu([_],[_]):- !. guu([_,_],[_,_]):- fail, !. guu([],[

我对Prolog很陌生,需要解决一个任务。所以我需要比较两个列表,检查它们是否有相同的长度,是否包含奇数个元素。我只允许使用以下内置操作符:!然后失败

到目前为止,代码仍然有效,但当我想从Prolog获得以下内容时:

guu([a,b,c],X).
我明白了:

X = [_900, _906, _912] 
但我想要的是:

X = [a, b, c]
或:

到目前为止,我的代码是:

guu([_],[_]):- !.
guu([_,_],[_,_]):- fail, !.
guu([],[]):- fail, !.
guu([],[_]):- fail, !.
guu([_],[]):- fail, !.
guu([_,_|Tail1], [_,_|Tail2]):- guu(Tail1,Tail2).
我想我把“u”操作符搞砸了,但是idk:/

修正了它:

guu([H|T],[H|T]):-!. 
guu([_],[_]):- !.
guu([_,_],[_,_]):- fail, !.
guu([],[]):- fail, !.
guu([],[_]):- fail, !.
guu([_],[]):- fail, !.
guu([_,_|Tail1], [_,_|Tail2]):- guu(Tail1,Tail2),!.
guu([H|T],[H|T]):-!. 
修正了它:

guu([H|T],[H|T]):-!. 
guu([_],[_]):- !.
guu([_,_],[_,_]):- fail, !.
guu([],[]):- fail, !.
guu([],[_]):- fail, !.
guu([_],[]):- fail, !.
guu([_,_|Tail1], [_,_|Tail2]):- guu(Tail1,Tail2),!.
guu([H|T],[H|T]):-!. 

每一个
\uu
都是唯一的。当你说
guu([[uu],[u])
时,你实际上是在说任何两个单项目列表都是由guu关联的。你的意思可能是
guu([X],[X])。
同样适用于
的其他用法。保留
\u
用于您真正认为该变量与任何其他变量之间没有关系的情况。感谢您的澄清。我已经让它工作:)如果你有一个解决方案,请随意张贴并接受它下面。