このディレクトリの索引

# [1] 授業単元: 基礎プログラミング # [2] 問題文(含コード&リンク): # いま、要素数Nのならび(リスト)に整数がセットされている。 # # 1) 直前・直後の要素が存在し、それら2つの値の平均よりも大きな値を # 持つ要素をすべて印字する。 # 2) ならびからi番目(i=0,1,2,...,N-1)の要素と、末尾からi番目の要素の値が # 等しいとき、iをを印字する。 # ただし出力される要素位置は重複しないこと。 '直前・直後の要素が存在し、それら2つの値の平均よりも大きな値を持つ要素をすべて印字する'(_ならび) :- forall('直前・直後の要素が存在し、それら2つの値の平均よりも大きな値を持つ要素をすべて'(_ならび,_現在の要素), 印字する(_現在の要素)). '直前・直後の要素が存在し、それら2つの値の平均よりも大きな値を持つ要素をすべて'(_ならび,_現在の要素) :- append(_,[_直前の要素,_現在の要素,_直後の要素|_],_ならび), _現在の要素 * 1.0 > (_直前の要素 + _直後の要素) / 2 * 1.0. 印字する(_現在の要素) :- writef('%t\n',[_現在の要素]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 'ならびの先頭からi番目(i=0,1,2,...,N-1)の要素と、末尾からi番目の要素の値が等しいとき、それらの要素の添え字のうち小さな方を印字する'(_ならび) :- forall('ならびの先頭からi番目(i=0,1,2,...,N-1)の要素と、末尾からi番目の要素の値が等しいとき、'(_ならび,_i番目,_j番目), それらの要素の添字の小さな方を印字する(_i番目,_j番目)). 'ならびの先頭からi番目(i=0,1,2,...,N-1)の要素と、末尾からi番目の要素の値が等しいとき、'(_ならび,_i番目) :- 'ならびの先頭からi番目(i=0,1,2,...,N-1)の要素と、'(_ならび,_i番目,_要素の値), '末尾からi番目の要素の値が等しいとき、'(_ならび,_i番目,_要素の値). 'ならびの先頭からi番目(i=0,1,2,...,N-1)の要素と、'(_ならび,_i番目,_値) :- append(L1,[_値|_],_ならび), length([_|L1],_i番目). '末尾からi番目の要素の値が等しいとき、'(_ならび,_i番目,_j番目,_値) :- append(L1,[_値|L2],_ならび), length([_|L2],_i番目), length([_|L1],_j番目). それらの要素の添字の小さな方を印字する(_i番目,_j番目) :- min(_i番目,_j番目,_小さい方), writef('%w\n',[_小さい方]).