List 模式匹配一些列表--不同的情况
不同的案例列表。如果这些案例(a)到(h)有效与否。如果有效,则应给出结果。我所做的是List 模式匹配一些列表--不同的情况,list,prolog,pattern-matching,unification,List,Prolog,Pattern Matching,Unification,不同的案例列表。如果这些案例(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=[substit
(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
统一是指匹配术语的相应部分
(a) ?- [ s , u , b,s,t,i,t,u,t,e ] =
[ s , u | [b,s,t,i,t,u,t,e] ] =
[ H1, H2 | T ]
(b) ?- [ substitute ] =
[ substitute | [] ] =
[ H1 | T ]
(c) ?- [ [substitute] ] =
[ [substitute] | [] ] =
[ H1 | T ]
(d) ?- [ [s,u,b,s] , [t,i,t,u,t,e] ] =
[ [s,u,b,s] | [ [t,i,t,u,t,e] ] ] =
[ H1 | T ]
(e) ?- [ [s,u,b,s] , t,i,t,u,t,e ] =
[ [s,u,b,s] | [t,i,t,u,t,e] ] =
[ H1 | T ]
(f) ?- [ [s,u,b,s] , [t,i,t,u,t,e] ] =
[ [s,u,b,s] , [t,i,t,u,t,e] | [] ] =
[ H1 , H2 | T ]
(g) ?- [ [s , u , b, s ], [t,i,t,u,t,e] ] =
[ [s , u , b, s ], [t,i,t,u,t,e] | [] ] =
[ [H1,H2 ] , H3 | T ] % fails!
(e) ?- f1( a, Y , f(Z, 2)) =
f1( a, [1,2], f(1, Y))
(h) ?- f2( A, B , C) =
f2( a, [1,2,f(1,Y)] ) % fails!
您可以通过在prolog解释器中键入查询来轻松检查答案。是的,但我会用铅笔写,这样我就不会(a)不正确,(b)不正确,(c)正确,(d)表达式是语法错误,(e)不正确,(f)正确,(g)不正确,(e)[第二(e)]表达式是语法错误,(h)序言术语统一
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]
是一个包含两个元素的列表。