【发布时间】:2018-06-25 08:29:47
【问题描述】:
列表的不同案例。如果这些案例(a)直到(h)有效。如果有效,那么应该给出结果。我所做的是
(a) ?- [s,u,b,s,t,i,t,u,t,e]=[H1,H2|T].
My answer is H1=[s] ,H2=[u,b,s,t,i,t,u,t], T=[e]
(b)?- [substitute]=[H1|T].
My answer is wrong it cant be done
(c) ?- [[substitute]]=[H1|T].
My answer is H1=[substitute] T=[]
(d)?- [[s,u,b,s],[t,i,t,u,t,e]=[H1|T].
My answer is H1=[s,u,b,s] and T=[t,i,t,u,t,e]
(e)?- [[s,u,b,s], t,i,t,u,t,e]=[H1|T].
My answer is wrong the tail has issues
(f) ?- [[s,u,b,s],[t,i,t,u,t,e]]=[H1,H2|T].
My answer is H1=[s,u,b,s] H2=[t,i,t,u,t,e] T=[]
(g) ?- [[s,u,b,s],[t,i,t,u,t,e]]=[[H1,H2],H3|T].
My answer is wrong
(e)?- f1(a,Y,,f(Z,2))=f1[a,[1,2],f(1,Y)).
first time i see something like this i don't know
(h)?- f2(A,B,C)=f2(a,[1,2,f(1,Y)]).
same as here
【问题讨论】:
-
您可以通过在 prolog 解释器中键入查询来轻松检查您的答案。当您有具体疑问时,我们可以帮助您澄清。
-
是的,但我会用铅笔写,所以我不能
-
(a) 不正确,(b) 不正确,(c) 正确,(d) 表达式是语法错误,(e) 不正确,(f) 正确,(g) 不正确,(e ) [第二个(e)] 表达式是语法错误,(h) Prolog 术语统一
f2(...)与f2(...)统一,如果您可以统一参数。他们必须在你的课堂上涵盖基本的 Prolog 术语。 -
为什么不正确?
-
有时您正确地解释了列表语法,有时却没有。仔细检查你的清单。请注意
[H1, H2|T]是一个列表,其前两个元素是H1和H2,然后T是一个列表,它是“列表的其余部分”。另请注意,如果您有[[a,b], [c], d, e, [f,g,h]],那是一个包含 5 个元素的列表。这些元素是[a,b]、[c]、d、e和[f,g,h]。你应该能够从那里弄清楚。[[H1,H2],H3|T]是一个列表,其前两个元素是[H1,H2]和H3。[H1,H2]是 2 个元素的列表。
标签: list prolog pattern-matching unification