!"#$!%&'#(%")%*+,-.)#/+,#%0+%1% +( +(+( +( +( +12 3#!!+(2 41""+56)66+6) 2 )1+,!%- !0+%-'7#8"'!7"+%9#% 3%:;<+#8"'!%=%>?!-@&A+,#%B#9!%CD+, )1+,!%E )1+,!%)1+,!%FFG )1+,!% E )1+,!% )1+,!% E )1+,!% )"==+7,H+,%#+#"!7I+,- ,%J=%"7"+%9#%!%+%'!7"+%9#% )"==+7(( )"==+7(()"==+7(( )"==+7 )"==+7(2K (2K )"==+7 2L%J=MMN!0-@&!<+#8"7"+%9#%( ,%=+O( ,%=+O((( ,%=+O(2K ,%=+O((P (P ,%=+O(K( QLR (QLRK ,%=+O(( QLP ( QLP QLP (QLK QLPQLK ,%=+O(PKRPK R ,%=+O( P9=%@+!S%T7"+%9#%( )M(( )M()M( )M )M )M )M )M2P( (2P (2P (2P K3%U+MMN!0V!W!+,7"+%9#%( )M(( )M()M( +!+(()M( +!+(2( (2 (2 (2 (2 +!+(2K2 K +!+((2X (2X 2 (X (2X X (2 +!+(PX( QLEE (QLEEPX QLEE (PQLEEX QLEE (PQLEEX QLEE (PXQLEE QLEE (PXQLEE XM->+,CY#7"+%9#%(#9#=%@+!S!%MN!0!Z"&-[+!C\# M M(M(#+#"!(( M( ( M( ( R="1+7+ !"]7"+%9#%#$-*]^+,%*+, M M(M(#+#"!(( ="1+7+(M(( ="1+7+ ="1+7+ E=1"#!%")!%[+%B+,=%@+!S#$,9!N1]!%+%,9!N1!+,7"+%9#%( =1"#_ =1"#_(_(=1"#_(( =1"#_((=1"#_(( =1"#( ( =1"#2( (2 =1"#( ( 71!"11]9!V!#>#9#=%@+!S#$,9!NA+,]!+,7"+%9#%( 71!"11 71!"11((71!"11(( 71!"11((71!"11(( 71!"112PK( (2PK 71!"11( ( 71!( 71!"11( ( 71!"112P( (2P 71!"112P2P #&+!7M-[#9#=%@+!S!+,7"+%9#%#%"%[!#% #&+!7M_E #&+!7M_(7_E #&+!7M_(F FG #&+!7M_(7_`E #&+!7M_( #&+!7M E #&+!7M #&+!7M2K E #&+!7M2P 77&!0+%!a+,#9#H1b!+,7"+%9#%( 77&E 77&(7 77&(F FG 77&(7E 77&( 77& E 77&P E 77&2 R 77&2PKX 2 77&2R M+#&+!-[!V!#>#9#H#%c+#$!+,7"+%9#%( M+#&+!E M+#&+!(7E M+#&+!(F FG M+#&+!(7`E M+#&+!( M+#&+! E M+#&+!2K E M+#&+!2 M+#&+!PX 2 M+#&+!2P M+#&+!P 2d+"## OE O Ode Od Od ddGd Od d OEd d O O2f fX O2X O2K PO"#!0+%+g O"#E O"#deE F O"#Fd dhd O"#E O"# O"# O"# P O"#2 E O"#K 2EE O"#2E O"#2E K=5!0+%" + =5iE =5i4eE F =5iF4 44hi =5E =5 =5 X =5P P =5P jkklki,&+!"+!&OO#+!1)+!"+!"!7 j]#=!+KQLKeE#= =5iX jkklki,&+!"+!&OO#+!1)+!"+!"!7 mj]#=!+RQLXhQLE#= =5X =5 X#!0+%-N+%!%^#3+ #_dn_ 5!616 #E # #_d __ #_d #_d ddGd #d 1 dQLXX #Ed d #d d #d d #2d dE +[&E%o#+ 3+G3+M\%9# [...]... 2) ? creep 21.Hàm sumlist tính tổng các phần tử của một danh sách sumlist([],0) sumlist([X|L],N):-sumlist(L,M), N is M+X ?- sumlist([],N) N=0 Yes ?- sumlist([],0) Yes ?- sumlist([2],N) N=2 Yes ?- sumlist([2,3,4,5],N) N = 14 Yes ?- sumlist([1,2,3,4,5],15) Yes ?- sumlist([2,5,3],2) No 22.Hàm subset là hàm kiểm tra tập hợp này có phải là tập con của tập kia subset([],L) subset([X|T],L):-member(X,L), subset(T,L)... subset([1,2,3],[]) No ?- subset([1,2],[4,2,5,6,1]) Yes ?- subset([1,2],[3,4,5,6,1]) No ?- subset(L,[1,2,3,4,5,6]) L = [] Yes ?- subset(L,[1,2,3,4,5,6]) L = [] ; No 23.Hàm sumlist kiểm tra danh sách này có phải là danh sách con của danh sách kia không concat([],L,L) concat([H|T],L,[H|L1]):-concat(T,L,L1) sublist(T,L):-concat(L1,L2,L),concat(T,L3,L2) ?- sublist([],[]) Yes ?- sublist([],[1,2,3]) Yes ?- sublist([1,2,3],[])... sequence([1,2],[2,3,1]) No ?- sequence([1,2],[3,4,1,2]) No ?- sequence([1,2],[1,2,3,4]) Yes ?- sequence([1,2],[1,2]) Yes ?- sequence([1,2],[1,2,3]) Yes ?- sequence([1,2],[1,1,2]) No 25.Hàm countk đếm số phần tử k trong danh sách L(k là ký tự hoặc chữ số) countk(K,[],0) countk(K,[K|L],N):-countk(K,L,M), N is M+1 countk(K,[X|L],N):-countk(K,L,N) ?- countk(a,[a,b,c,d],N) N=1 Yes ?- countk(a,[a,b,c,d,a,b,c,d],N) N=2 Yes