このディレクトリの索引

#  http://d.hatena.ne.jp/E_Mattsan/20130211/1360590408
#  「E.Mattsan氏のブログ 20130211より」
#  
#  設問
#  
#  まず、パタンマッチングの部分だけが見やすくなるように、「どう書く」の問題からいろいろ取り去ってより簡単な問題を作りました。
#  
#  
#  要素を格納する順序付きのコンテナを考える。先頭の位置は0とする。
#  コンテナ中にある指定された要素が3つ連続している場所がある場合、最初の3つ連続した要素の最初の要素の位置を返す。
#  要素が3つ連続した場所がない場合、要素が2つ連続している最初の場所の最初の要素の位置を返す。
#  要素が2つ連続した場所がない場合、最初の要素の位置を返す。
#  要素がコンテナ中に見つからない場合、-1を返す。
#  

'要素を格納する順序付きのコンテナを考える。先頭の位置は0とする。
コンテナ中にある指定された要素が3つ連続している場所がある場合、最初の3つ連続した要素の最初の要素の位置を返す。
要素が3つ連続した場所がない場合、要素が2つ連続している最初の場所の最初の要素の位置を返す。
要素が2つ連続した場所がない場合、最初の要素の位置を返す。
要素がコンテナ中に見つからない場合、-1を返す。'(_コンテナ,_指定された要素,_最初の場所の最初の要素の位置) :-
        search(_指定された要素,_コンテナ,_最初の場所の最初の要素の位置).

search(A,L,_nth0) :-
        append(L0,[A,A,A|_],L),
        length(L0,_nth0),!.
search(A,L,_nth0) :-
        append(L0,[A,A|_],L),
        length(L0,_nth0),!.
search(A,L,_nth0) :-
        append(L0,[A|_],L),
        length(L0,_nth0),!.
search(A,L,-1).