このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1250204272/483
# [1] 授業単元:C++ STLの使い方
# [2] 問題文(含コード&リンク):
# http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9954.txt
# STLのvectorとlistを使い、以下の文章操作を行いなさい。
# (Hint:list, vector >の様に使用する)
#
# a) 文章中の一行の文字をlistに挿入し、そしてそのlistはvectorの各インデック
# スに挿入されるものとする。
# b) listとvectorのそれぞれの中にあるデータを出力できる。
# c) 2つの行番号を入力し、その行を繋げる関数を作成しなさい。
# (line:1, line:2, result: 1と2の連結、line2は空となりresultはline1になる)# d) 行番号を入力すると、その行の逆順序のものが出力される関数を作成しなさい。
# e) 文字列を与えると、その文字列の含まれるすべての行番号を出力する関数を
# 作成しなさい。
t705_a(File) :-
get_liens(File,Lines),
述語vectorの定義(1,Lines).
述語vectorの定義(_,[]).
述語vectorの定義(N,[A|R]) :-
atom_chars(A,L),
assertz(vector(N,L)),
N2 is N + 1,
述語vectorの定義(N2,R).
t705_b(vector) :-
listing(vector).
t705_b(list,_行番号) :-
vector(_行番号,L),
atom_chars(_行,L),
write_formatted('%t\n',[_行]).
t705_c(_行番号1,_行番号2) :-
vector(_行番号1,L1),
vector(_行番号2,L2),
retract(vector(_行番号1,L1)),
retract(vector(_行番号2,L2)),
append(L1,L2,L3),
assertz(vector(_行番号1,L3)),
assertz(vector(_行番号2,[])),!.
t705_d(_行番号,_行の逆順) :-
vector(_行番号,L1),
reverse(L1,L2),
concat_atom(L2,_行の逆順).
t705_e(_検索文字列,_行番号ならび) :-
atom_chars(_検索文字列,L1),
findall(_行番号,(vector(_行番号,L),append(_,L1,_,L)),_行番号ならび).