このディレクトリの索引

# 出典 :: SQL質疑応答スレ 9問目 #321 # # スコアランキングで、自分の上下4人を含めた9人分の情報を取ってきたいのですが、どのようにすればよいでしょうか? # (自分が1位などの場合は自分と下位8人分を取得します) # 'スコアランキングで、自分の上下4人を含めた9人分の情報を取る'(_自分,L,[_1,_2,_3,_4,_5,_6,_7,_8,_9]) :- _自分 = _5, append([L1,[_1,_2,_3,_4,_5,_6,_7,_8,_9],L2],L),!. 'スコアランキングで、自分の上下4人を含めた9人分の情報を取る'(_自分,[_1,_2,_3,_4,_5,_6,_7,_8,_9|L2],[_1,_2,_3,_4,_5,_6,_7,_8,_9]) :- '自分が最上位から4名以内にいる場合'(_自分,[_1,_2,_3,_4]),!. 'スコアランキングで、自分の上下4人を含めた9人分の情報を取る'(_自分,L,[_1,_2,_3,_4,_5,_6,_7,_8,_9]) :- '自分が最下位から4名以内にいる場合'(_自分,L,[_1,_2,_3,_4,_5,_6,_7,_8,_9]),!. 'スコアランキングで、自分の上下4人を含めた9人分の情報を取る'(_自分,L,L) :- 'Lが9人に達していなくて、しかもその中に自分が存在する'(_自分,L). '自分が最上位から4名以内にいる場合'(_自分,[_1,_2,_3,_4]) :- member(_自分,[_1,_2,_3,_4]). '自分が最下位から4名以内にいる場合'(_自分,L,[_1,_2,_3,_4,_5,_6,_7,_8,_9]) :- append([L1,[_1,_2,_3,_4,_5,_6,_7,_8,_9]],L), member(_自分,[_6,_7,_8,_9]). 'Lが9人に達していなくて、しかもその中に自分が存在する'(_自分,L) :- member(_自分,L).