このディレクトリの索引

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)),_行番号ならび).