このディレクトリの索引

# 出典 :: スレ立てるまでもない質問はここで 99匹目 #950 # 表A # 開始日    終了日 # -------------------- # 2009/9/1  2009/9/2 # 2009/9/2  2009/9/5 # 2009/9/2  2009/9/3 # # 表B # 基準日 9/1 9/2 9/3 9/4 9/5 # 開始日  1  3  3  3  3 # 終了日  0  1  2  2  3 # # 表Aの開始日と終了日をカウントして、基準日に該当する件数を書き出したいのですが、 # 関数はVLOOKUPを使えばいいのでしょうか? # 件数は累計を表示したいのですが、どの関数を使えばいいのでしょうか? '表Aの開始日と終了日をカウントして、基準日に該当する件数を書き出したいのですが、 関数はVLOOKUPを使えばいいのでしょうか? 件数は累計を表示したいのですが、どの関数を使えばいいのでしょうか?' :- 表Aをならびとして取得(_表Aならび,_基準日ならび), 表Bの出力(_基準日ならび,_表Aならび). 表Aをならびとして取得(_表Aのならび,_基準日ならび) :- 行ならび入力('表A.txt',[_,_|LinesA]), 行ならびを基準日順に整列して表Aならびとする(LineA,_表Aのならび). 行ならびを基準日順に整列して表Aならびとする(LineA,_表Aのならび) :- findall([_日付1,_日付2],( '行を取り出し、日付1,日付2に分解する'(LineA,_日付1,_日付2)),LL), '平らな整列した日付ならびとする'(LL,_基準日ならび). '平らな整列した日付ならびとする'(LL,_基準日ならび) :- flat(L1,L2), sort(L2,_基準日ならび),!. '行を取り出し、日付1,日付2に分解する'(LinesA,_日付1,_日付2) :- member(_行,LinesA), 項目区切り(_行,[' '],[_日付1,_日付2]). 表Bの出力(_基準日ならび,L) :- 基準日見出しの表示(_基準日ならび), 開始日カウント(_基準日ならび,L), 終了日カウント(_基準日ならび,L). 基準日見出しの表示(_基準日ならび) :- write(基準日), forall(member(_/_月/_日,_基準日ならび),基準日表示(_月,_日,_基準日ならび)), write('\n'). 基準日表示(_月,_日,_基準日ならび) :- swritef(S,'%w',[_月/日]), writef('%w',[S]). 開始日カウント(_基準日ならび,_表Aならび) :- write(開始日), forall(member(_基準日,_基準日ならび),開始日カウント表示(_基準日,_表Aならび)), write('\n'). 開始日カウント表示(_基準日,_表Aならび) :- 度数(member([_基準日,_],_表Aならび),_カウント), writef(' %w',[_カウント]). 終了日カウント(_基準日ならび,_表Aならび) :- write(終了日), forall(member(_基準日,_基準日ならび),(度数(member([_,_基準日],_表Aならび),_カウント))), write('\n'). 度数(_目標,_度数) :- findall(_,_目標,L), length(L,_度数). 行ならび入力(_ファイル,_行ならび) :- open(_入力ファイル,read,_入力), findall(_行,(reapeat,(at_end_of_stream(_入力),!,fail; 行入力(_入力,_行))),_行ならび), close(_入力). 行入力(_入力,end_of_stream) :- at_end_of_stream(_入力),!. 行入力(_入力,_行) :- read_line_to_codes(_入力,_コードならび), atom_codes(_行,_コードならび). 項目区切り(_文字列,_区切り文字列ならび,_区切られた文字列ならび) :- 項目区切り(_文字列,_区切り文字列ならび,_使われている区切り文字ならび,_区切られた文字列ならび). 項目区切り(_文字列,_区切り文字列ならび,_使われている区切り文字ならび,_区切られた文字列ならび) :- 先頭から区切り文字列で区切って行く(_文字列,_区切り文字列ならび,_使われている区切り文字ならび,_区切られた文字列ならび),!. 項目区切り(_文字列,_,[],[_文字列]). 先頭から区切り文字列で区切って行く(_文字列,_区切り文字列ならび,[_区切り文字列|R1],[_前文字列|R2]) :- '区切り文字列で前文字列、後文字列に区切る'(_文字列,_区切り文字列ならび,_前文字列,_区切り文字列,_後文字列), 項目区切り(_後文字列,_区切り文字列ならび,R1,R2). '区切り文字列で前文字列、後文字列に区切る'(_文字列,_区切り文字列ならび,_前文字列,_区切り文字列,_後文字列) :- 副文字列(_文字列,_前文字列,_区切り文字列,_後文字列), member(_区切り文字列,_区切り文字列ならび). 副文字列(_文字列,_前文字列,_副文字列,_後文字列) :- atom_concat(_前文字列,_残り文字列,_文字列), atom_concat(_副文字列,_後文字列,_残り文字列). 文字列ならびの中で数値に変換可能なものは変換する(_文字列ならび,_項目ならび) :- findall(_項目,( 文字列を取り出し数値に変換可能なものは変換する(_文字列ならび,_項目)),_項目ならび). 文字列を取り出し数値に変換可能なものは変換する(_文字列ならび,_項目) :- member(_文字列,_文字列ならび), 数値に変換可能なものは変換する(_文字列,_項目). 数値に変換可能なものは変換する(_文字列,_項目) :- atom_number(_文字列,_項目),!. 数値に変換可能なものは変換する(_文字列,_文字列).