#  このディレクトリの索引
#  JavaScriptでこのような二次元配列があります 
#  [ 
#  ["d", true], 
#  ["a", false], 
#  ["e", true], 
#  ["c", false], 
#  ["b", true], 
#  ]; 
#  
#  この配列を以下のようにソートする方法を教えてください 
#  b 
#  d 
#  e 
#  a 
#  c 


'このような二次元配列があります
[
["d", true],
["a", false],
["e", true],
["c", false],
["b", true],
];

この配列を以下のようにソートする方法を教えてください
b
d
e
a
c'(LL1,A) :-
        '第二引数true,false,第一引数辞書順で整列する'(LL1,LL2),
        member([A,_],LL2).

'第二引数true,false,第一引数辞書順の順で整列する'([],[]).
'第二引数true,false,第一引数辞書順の順で整列する'([[A,B]|R1],LL) :-
        分割([A,B],R1,LL1,LL2),
        '第二引数true,false,第一引数辞書順の順で整列する'(LL1,LL3),
        '第二引数true,false,第一引数辞書順の順で整列する'(LL2,LL4),
        append(LL1,[[A,B]|LL4],LL).

分割(_,[],[],[]).
分割([A,B],[[C,D]|R2],L1,L2) :-
        '第二引数はtrue,false順に分割する'([A,B],[C,D],L1,L2,L12,L22),
        分割([A,B],R2,L12,L22).

'第二引数はtrue,false順に分割する'([A,true],[C,true],[C|R1],R2,R1,R2) :-
        A >=@ C,!.
'第二引数はtrue,false順に分割する'([A,true],[C,true],R1,[C|R2],R1,R2) :-
        A @=< C,!.
'第二引数はtrue,false順に分割する'([A,false],[C,false],[C|R1],R2,R1,R2) :-
        A >=@ C,!.
'第二引数はtrue,false順に分割する'([A,false],[C,false],R1,[C|R2],R1,R2) :-
        A @=< C,!.
'第二引数はtrue,false順に分割する'([A,false],[C,true],[C|R1],R2,R1,R2) :- !.
'第二引数はtrue,false順に分割する'([A,true],[C,false],R1,[C|R2],R1,R2) :- !.