%%   知識情報処理実習 r11の練習問題 解答例

% 基本プログラムコース
q5(a,1).
q5(b,0).
q5(t(L,T),N) :- q5(L,N0),  q5(T,N1), N is N0+N1.
q5(t(L,T1,T2),N) :- 
    q5(L,N0),  q5(T1,N1), q5(T2,N2), N is N0+N1+N2.

q5(K) :- q5( t(a,t(a,b,a),t(a,b)), K ). 

% 応用プログラムコース
% 1.
same_elements([A|L]) :- same_e(A,L).

same_e(_,[]).
same_e(A,[A|L]) :- same_e(A,L).

test11_1_1 :- same_elements([a,a,a]).
test11_1_2 :- same_elements([a,b,a]).

% 2.
increase([]).
increase([_]).
increase([X,Y|Z]) :- X =< Y, increase([Y|Z]).

test11_2_1 :- increase([1,3,6]).
test11_2_2 :- increase([1,6,3]).