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

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


%  
%  ?- 階段を上がる(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.
%  ?- 
%