このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1308749241/158
#  [1] 授業単元:べき乗計算の関数  
#  [2] 問題文(含コード&リンク):  
#  この問題では、全て正の整数の入力にのみ対応することとする。  
#  べき乗(nのk乗)を求める関数int power(int n, int k)を作成し、テスト用のmainプログラムを作成して、  
#  咲き制した関数の動作確認を行いなさい。  
#  

ならび冪乗(_n,_k,_冪乗) :-
        integer(_冪乗),
        length(_ならび冪乗,_冪乗),
        上限付きlength(Ln,_ならび冪乗,_n),
        上限付きlength(Ln1,_ならび冪乗,_n),
        上限付きlength(Lk1,_ならび冪乗,_k),
        Lk1 = [_|Lk],
        ならび冪乗(Ln,Ln1,Lk,_ならび冪乗).
ならび冪乗(_n,_k,_冪乗) :-
        var(_冪乗),
        length(Ln,_n),
        length(Ln1,_n),
        length(Lk1,_k),
        Lk1 = [_|Lk],
        ならび冪乗(Ln,Ln1,Lk,_ならび冪乗),
        length(_ならび冪乗,_冪乗).

ならび冪乗(Ln,Ln1,[],Ln).
ならび冪乗(Ln,Ln1,[_|Lk],_ならび冪乗) :-
        findall(Ln1,(
                   append(_,[_|_],Ln)),LLn),
        flatten(LLn,Ln2),
        ならび冪乗(Ln2,Ln1,Lk,_ならび冪乗).

'上限付きlength'(L,MaxL,Len) :-
        length(L,Len),
        length(MaxL,Max),
        (
            Len > Max,
            !,
            fail
        ;
            true
        ).