.


:




:

































 

 

 

 


Yes

?-

 

divd(L,[],L,1):-!.

divd(L,Lb,La):-divd(L,Lb,La,0).

divd([],[],[],0).

divd([H|L],[H|Lb],La,0):-

H\='.',H\=',',divd(L,Lb,La,0),!.

divd([H|L],[],La,0):-(H='.';H=','),divd(L,_,La,1),!.

 

trimlft([],[]).

trimlft([0|L],L1):-trimlft(L,L1).

trimlft([H|L1],[H|L1]):-H\=0.

 

lst([L],L,[]).

lst([H|L],K,[H|L1]):-lst(L,K,L1),!.

trimrght([],[]).

trimrght(L,L1):-lst(L,E,R),E=0,trimrght(R,L1),!.

trimrght(L,L1):-lst(L,E,R),E\=0,L1=L,!.

 

trns(L,K,N):-int_text(N,N1),trns(L,K,N1),!.

trns([0,0,0,0],_,'0').

trns([0,0,0,1],_,'1').

trns([0,0,1,0],_,'2').

trns([0,0,1,1],_,'3').

trns([0,1,0,0],_,'4').

trns([0,1,0,1],_,'5').

trns([0,1,1,0],_,'6').

trns([0,1,1,1],_,'7').

trns([1,0,0,0],_,'8').

trns([1,0,0,1],_,'9').

trns([1,0,1,0],l,'a').

trns([1,0,1,1],l,'b').

trns([1,1,0,0],l,'c').

trns([1,1,0,1],l,'d').

trns([1,1,1,0],l,'e').

trns([1,1,1,1],l,'f').

trns([1,0,1,0],u,'A').

trns([1,0,1,1],u,'B').

trns([1,1,0,0],u,'C').

trns([1,1,0,1],u,'D').

trns([1,1,1,0],u,'E').

trns([1,1,1,1],u,'F').

 

apnd([],L,L):-!.

apnd([H|L1],L2,[H|L3]):-apnd(L1,L2,L3),!.

 

trns([],_,[]):-!.

trns(L,K,[H|Lst]):-trns(F1,K,H),trns(F2,K,Lst),apnd(F1,F2,L).

 

 

main(I,R):-

divd(I,Bf,Af),trns(Bb,K,Bf),trns(Ab,K,Af),trimlft(Bb,Bt),trimrght(Ab,At),

(Bt=[],Br=[0];Bt\=[],Br=Bt),(At=[],R=Br;At\=[],apnd(Br,['.'],Q),apnd(Q,At,R)),!.

 

 

4: (17) , , .

?- pred([a,b,c,d,e],4,X).

X = [a,b,c,e]

Yes

?-

 

.

delete([],_,[]).

delete([_|T],1,T).

delete([H|T],K,[H|T1]):-K>1,!,

K1 is K-1,

delete(T,K1,T1).

 

.

des([],[]).

des([A|B],[A1|B1]):-

A1 is A-1,

des(B,B1).

 

pred(List1,[],List1).

pred(List1,[D|L],List2):-

delete(List1,D,List3),

des(L,L1),

pred(List3,L1,List2),!.

 

5: (33) ( ) . . , .

 

?- pred( !,X).

X = !

Yes

?-

Name .

pred(Text,X):-name(Text,T),fStr(T,T1,_),name(X,T1).

 

:

fStr([H|[]],[H],[]):-!.

fStr([H|T],[A|B],L):-isSpase(H),fStr(T,[A|B],L),isSpase(A),!.

fStr([H|T],[A|B],L):-fStr(T,[A|B],L),notSpase(L),H =A,!.

fStr([H|T],[H|[A|B]],A):-fStr(T,[A|B],L).

 

isSpase(X):-name(' ',[X]).

notSpase(X):-name(' ',[Z]),Z \= X.

 

6: (48) , , , , , .

?-pred(a(b(d,e),c(f,g(h,k))),[0,2],X).

X=[ [a,3], [d,0],[e,0],[f,0],[g,0] ]

pred(Tree,N,X):-find(Tree,N,X).

 

find(Tree,[H|[]],X):-findOnLevel(Tree,H,X).

find(Tree,[H|T],X):-find(Tree,T,X1),findOnLevel(Tree,H,X2),f(X2,X1,X).

 

.

findOnLevel(Tree,X,[]):-atomic(Tree),X>0.

findOnLevel(Tree,0,[[Tree,0]]):-atomic(Tree).

findOnLevel(Tree,0,[[H,Z]]):-Tree=..[H,O],count(Tree,Z1),Z is Z1-1.

findOnLevel(Tree,0,[[H,Z]]):-Tree=..[H,L,R],count(Tree,Z1),Z is Z1-1.

findOnLevel(Tree,N,X):-N1 is N-1,Tree=..[H,O],findOnLevel(O,N1,X).

findOnLevel(Tree,N,X):-N1 is N-1,Tree=..[H,L,R],findOnLevel(L,N1,XL),findOnLevel(R,N1,XR),f(XL,XR,X).

 

- .

count(Tree,0):-atomic(Tree).

count(Tree,X):-Tree=..[H,O],count(O,OX),X is OX+1.

count(Tree,X):-Tree=..[H,L,R],count(L,LX),count(R,RX),X is RX+LX+1.

 

.

f([],[],[]).

f([H|[]],A,[H|A]):-!.

f([H|T],A,[H|X]):-f(T,A,X).

 

7: (55) . , ().( ).

?- pred(s(f(w(b(u(i,o),v),k),a),t(r,g)),w,r,X).

X = [w,f,s,t,r] ->;

Yes

?- pred(s(f(w(b(u(i,o),v),k),a),t(r,g)),i,o,X).

X = [i,u,o]

Yes

?-

 

pred(Tree,A,B,X):-f(Tree,A,AX),f(Tree,B,BX),split(AX,BX,X).

 

f(Tree,H,[Tree]):-atomic(Tree),H = Tree.

f(Tree,H,[H]):-Tree=..[H,L,R].

f(Tree,A,[H|Y]):-Tree=..[H,L,R],(f(L,A,Y);f(R,A,Y)).

f(Tree,A,[H|Y]):-Tree=..[H,O],f(L,O,Y).

 

%

append([],A,A).

append([H|[]],A,[H|A]):-!.

append([H|T],A,[H|X]):-append(T,A,X).

 

split([H|[A|T1]],[H|[A|T2]],X):-split([A|T1],[A|T2],X).

split([H|[A|T1]],[H|[B|T2]],X):-B\=A,invert([A|T1],T),append(T,[H|[B|T2]],X).

 

%

invert([],[]).

invert([H|T],X):-invert(T,Y),addLast(Y,H,X).

 

%

addLast([],B,[B]).

addLast([H|T],B,[H|X]):-addLast(T,B,X).

 

8: (75) () .

?- pred(s(f(b(m,k),a),t(a,g),j(u)),2,X).

X = s(f,t,j)

Yes

?- pred(s(f(b(m,k),a),t(a,g),j(u)),3,X).

X = s(f(b,a),t(a,g),j(u))

Yes

?-

 

pred(Tree,B,X):-f(Tree,B,X).

 

f(Tree,N,Tree):-atomic(Tree),!.

f(Tree,1,H):-Tree=..[H|N],!.

f(Tree,N,X):-Tree=..[H|T],M is N -1,q(T,M,Y),X=..[H|Y].

 

q([H|[]],N,[X]):-f(H,N,X).

q([H|T],N,[X|Y]):-q(T,N,Y),f(H,N,X).

 

9: (84) ( ).

 

?- pred(a(f(a(m,k),r),n(i,o,v(x))),X).

X = [a,f,a,m] ->;

X = [a,f,a,k] ->;

X = [a,f,r] ->;

X = [a,n,i] ->;

X = [a,n,o] ->;

X = [a,n,v,x] ->;

No

?-

 

 

pred(Tree,X):-scan(Tree,X,L).

scan(Tree,[Tree]):-atomic(Tree).

scan(Tree,[H|P]):-Tree=..[H|T],sc(T,P).

 

sc([H|T],A):-scan(H,A).

sc([H|T],A):-sc(T,A).

 

10: - .( ).

?- leaf_N(a(f(a(m,k),r),n(i,o,v(x))),X).

X = 6

Yes

?-

 

leaf_N(Tree,1):- atomic(Tree),!.

leaf_N(Tree,R):-

Tree=..[Name,SubTree],

leaf_N(SubTree,R),!.

leaf_N(Tree,R):-

Tree=..[Name,Left|Tail],

New=..[Name|Tail],

leaf_N(Left,R1),

leaf_N(New,R2),

R is R1+R2,!.

 

11: , (). , ..

?- pred([[1,2,3],[4,5,6],[7,8,9]],X).

X = [[1,4,7],[2,5,8],[3,6,9]]

Yes

?-

 

pred([H|T],X):-transporate([],[H|T],X).

 

transporate(A,[H|[]],X):-strToCol(A,H,X).

transporate(A,[H|T],X):-strToCol(A,H,Z),transporate(Z,T,X).

 

strToCol([],[A|[]],[H1]):-addLast([],A,H1).

strToCol([H|[]],[A|[]],[H1]):-addLast(H,A,H1).

strToCol([],[A|B],[H1|T1]):-addLast([],A,H1),strToCol([],B,T1).

strToCol([H|T],[A|B],[H1|T1]):-addLast(H,A,H1),strToCol(T,B,T1).

 

addLast([],B,[B]).

addLast([H|T],B,[H|X]):-addLast(T,B,X).

 

 

12: , ( ). .

?- pred([[1,2],[4,5]],X).

X = -3

Yes

?-

 

pred([[X11,X12],[X21,X22]],X):-X is X11*X22-X12*X21,!.

22

.

 

pred([A|B],X):-pr(A,B,1,1,X).

22

"pr"

 

pr([A|[]],C,Y,K,X):-g(C,Y,F),pred(F,Z),X is Z*A*K,!.

"" ""

""

 

pr([A|B],C,Y,K,D):-g(C,Y,F),pred(F,Z),pr(B,C,Y+1,K*(-1),X),D is Z*A*K+X.

""

(F)

"Y", (Z) ""

, .

-1

 

g([A|[]],Y,[Q]):-f(A,Y,Q),!.

"Y"

 

g([A|B],Y,[Q|H]):-f(A,Y,Q),g(B,Y,H).

"Y", -

 

f([A|T],1,T):-!.

1 ,

f([A|T],Y,[A|F]):-E is Y-1,f(T,E,F).

"Y" 1

 

pred([[X11,X12],[X21,X22]],X):-X is X11*X22-X12*X21,!.

pred([A|B],X):-pr(A,B,1,1,X).

pr([A|[]],C,Y,K,X):-g(C,Y,F),pred(F,Z),X is Z*A*K,!.

pr([A|B],C,Y,K,D):-g(C,Y,F),pred(F,Z),pr(B,C,Y+1,K*(-1),X),D is Z*A*K+X.

g([A|[]],Y,[Q]):-f(A,Y,Q),!.

g([A|B],Y,[Q|H]):-f(A,Y,Q),g(B,Y,H).

f([A|T],1,T):-!.

f([A|T],Y,[A|F]):-E is Y-1,f(T,E,F).

 

13: - .( ).

?- pred(a(b(d(h,k),e(l(n,o),m)),c(f,g(r,p))),X).

X=[1,2,4,6,2]à

Yes

?-

pred(Tree,X):-getMaxLen(Tree,ML),findOnAllLevels(Tree,ML,[],X).

 

findOnAllLevels(Tree,0,A,A):-!.

findOnAllLevels(Tree,ML,A,X):-getCountOnLevel(Tree,ML,C),N is ML-1,findOnAllLevels(Tree,N,[C|A],X).

 

getCountOnLevel(Tree,1,1):-!.

getCountOnLevel(Tree,N,0):-atomic(Tree),N>=1.

getCountOnLevel(Tree,N,X):-Tree=..[H,O],M is N-1,getCountOnLevel(O,M,X).

getCountOnLevel(Tree,N,X):-Tree=..[H,L,R],M is N-1,getCountOnLevel(L,M,LX),getCountOnLevel(R,M,RX),X is RX+LX.

 

getMaxLen(Tree,1):-atomic(Tree).

getMaxLen(Tree,X):-Tree=..[H,O],getMaxLen(O,OX),X is OX+1.

getMaxLen(Tree,X):-Tree=..[H,L,R],getMaxLen(L,LX),getMaxLen(R,RX),ifthenelse(LX>RX,X is LX+1,X is RX+1).

14: .

?- pred([a,b,c,d,e],X).

X = [a,b] ->;

X = [a,c] ->;

X = [a,d] ->;

X = [a,e] ->;

X = [b,c] ->;

X = [b,d] ->;

X = [b,e] ->;

X = [c,d] ->;

X = [c,e] ->;

X = [d,e] ->;

No

?-

pred([H|T],[A,B]):-any([H|T],A,T1),any(T1,B,T2).

 

any([H|T],H,T).

any([H|T],X,Y):-any(T,X,Y).

 

15: (78) .( ).

?- pred(s (f(b(m,k),a),t(a)),1,X).

X = 1

Yes

?- pred(s(f(b (m,k), a),t(a)),3,X).

X = 3

Yes

?- pred(s(f(b(m, k),a),t(a)),4,X).

X = 2

Yes

?-

 

pred(A,N,X):-f(A,N,X).

 

f(Tree,1,1):-!.

f(Tree,N,0):-atomic(Tree),!.

f(Tree,N,X):-M is N-1,Tree=..[H|T],a(T,M,X).

 

a([H|[]],N,X):-f(H,N,X).

a([H|T],N,X):-a(T,N,Y),f(H,N,Z),X is Z+Y.



<== | ==>
 |
:


: 2015-10-01; !; : 368 |


:

:

, .
==> ...

1930 - | 1751 -


© 2015-2024 lektsii.org - -

: 0.073 .