このディレクトリの索引
#  
#  @ft4613_ac
#  if(n段上れる)step_1(N-n,S) みたいな再帰がかけない
#  


階段を上がる(_n段上がる,_階段,_既に登った階段,_現在の段,_残りの階段) :-
        length(_駆け上がり段数ならび,_n段上がる),
        length(_階段,_階段の段数),
        length([_最初の段|_残り段数の変数ならび],_階段の段数),
        階段を上がる(_駆け上がり段数ならび,_残り段数の変数ならび,_階段,_既に登った階段,_現在の段,_残りの階段).

階段を上がる(_,_残りの階段,_階段,_既に登った段,_現在の段,_残りの階段) :-
        append(_既に登った階段,[_現在の段|_残りの階段],_階段).
階段を上がる(_駆け上がり段数ならび,_残り段数の変数ならび,_階段,_既に登った階段,_現在の段,_残りの階段) :-
        append(_駆け上がり段数ならび,_駆け上がった後の残り段数の変数ならび,_残り段数の変数ならび),
        階段を上がる(_駆け上がり段数ならび,_駆け上がった後の残り段数の変数ならび,_階段,_既に登った階段,_現在の段,_残りの階段).


%  
%  ?- 階段を上がる(3,[0,1,2,3,4,5,6,7],_既に登った階段,_現在の段,_残りの階段).
%  
%  _既に登った階段 = [],
%  _現在の段 = 0,
%  _残りの階段 = [1,2,3,4,5,6,7];
%  _既に登った階段 = [0,1,2],
%  _現在の段 = 3,
%  _残りの階段 = [4,5,6,7];
%  _既に登った階段 = [0,1,2,3,4,5],
%  _現在の段 = 6,
%  _残りの階段 = [7];
%  no.
%  ?- 
%