このディレクトリの索引

ヒストグラムを出力する(_標本ならび) :- ヒストグラムの用意(_標本ならび,LL1), 転置して出力する(LL1). ヒストグラムの用意(_標本ならび,LL1) :- '標本の最大値要素数のリストを作る'(_標本ならび,L1), findall(L1,( 星のリストに変換(_標本ならび,L1)),LL1). '標本の最大値要素数のリストを作る'(_標本ならび,L1) :- 最大値(_標本ならび,_最大値), length(L1,_最大値). 星のリストに変換(_標本ならび,L1) :- member(_標本値,_標本ならび), length(_星のリスト,_標本値), 空白リストと星のリスト(_星のリスト,L1). 空白リストと星のリスト(_星のリスト,L1) :- append(_空白リスト,_星のリスト,L1), all(_空白リスト,' '), all(_星のリスト,*). 転置して出力する(LL1) :- 転置(LL1,LL2), 出力する(LL2). 出力する(LL) :- forall( ならび要素を文字列に変換して(LL,_出力行文字列), writef('%w\n',[_出力行文字列])). ならび要素を文字列に変換して(LL,_出力行文字列) :- member(L,LL), atomic_list_concat(L,_出力行文字列). 転置([[]|_],[]) :- !. 転置(L,[L1|R2]) :- 転置(L,L2,L1), 転置(L2,R2). 転置([],[],[]) :- !. 転置([[A|R1]|R2],[R1|R3],[A|R4]) :- 転置(R2,R3,R4). all([],_). all([V|R],V) :- all(R,V). 最大値([A|R],_最大値) :- 最大値(R,A,_最大値). 最大値([],_最大値,_最大値). 最大値(_ならび,_最大値_1,_最大値) :- '_ならびの先頭要素の値によって_最大値_1を置き換えて行く'(_ならび,_最大値_1,_最大値). '_ならびの先頭要素の値によって_最大値_1を置き換えて行く'(_ならび,_最大値_1,_最大値) :- '_ならびの先頭要素が_最大値_1より大きい場合、_最大値_1を置き換える'(_ならび,_最大値_1,_最大値). '_ならびの先頭要素の値によって_最大値_1を置き換えて行く'(_ならび,_最大値_1,_最大値) :- '_ならびの先頭要素が_最大値_1と等しいか小さい場合、_最大値_1を置き換えない'(_ならび,_最大値_1,_最大値). '_ならびの先頭要素が_最大値_1より大きい場合、_最大値_1を置き換える'([_先頭要素|R],_最大値_1,_最大値) :- _先頭要素 @> _最大値_1, 最大値(R,_先頭要素,_最大値). '_ならびの先頭要素が_最大値_1と等しいか小さい場合、_最大値_1を置き換えない'([_先頭要素|R],_最大値_1,_最大値) :- _先頭要素 @=< _最大値_1, 最大値(R,_最大値_1,_最大値).