このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1311089619/512
#  [1] 授業単元:ポインタ&配列 
#  [2] 問題文(含コード&リンク):http://ime.nu/codepad.org/cr9HeX77 http://ime.nu/codepad.org/KRbWMvrc 
#  [3.1] OS:WindowsXP 
#  [3.2] コンパイラ名とバージョン: Visual Studio 2008 
#  [3.3] 言語:C 
#  [4] 期限:7/ 27 15:00までです。  
#  全く分からなくてほんとに困っています。誰か分かる方宜しくお願いします。 
#   
#  テキストがhttp://ime.nu/codepad.org/cr9HeX77で
#  問題がhttp://ime.nu/codepad.org/KRbWMvrcです。 
# 
# 
#  テキストをファイルから読み込んで、その行を辞書式順序に並べ替えて
#  出力するプログラムを書け.
#  プログラムは、下記のプログラムを書き直して提示せよ。
#  
#  ヒント:文字列の例題を参考にして,まずテキストを配列に読み込む.
#  文字列の配列を渡すとそれをソートする関数を書いて,それを用いればよい.
#  ファイルから読むためには、入力のリダイレクト(切り替え)を用いる.
#  そのためには、コマンドプロンプトで
#  prog< file.txt のように、コマンド名のあとに“<”
#  とそれに続けてファイル名を与える.英単語のファイルでテストするとよい


'テキストをファイルから読み込んで、その行を辞書式順序に並べ替えて出力する' :-
        get_split_lines('file.txt',['\n',' ',','],_語彙ならび),
        辞書順クイックソート(_語彙ならび,_辞書順に整列した語彙ならび),
        出力する(_辞書順に整列した語彙ならび).

辞書順クイックソート([],[]) :- !.
辞書順クイックソート(_ならび1,_ならび2) :-
        _ならび1 = [A|R],
        辞書順クイックソート(A,R,_ならび2).

辞書順クイックソート(A,R,_ならび2) :-
        辞書順分割(A,R,L1,R1),
        辞書順クイックソート(L1,L2),
        辞書順クイックソート(R1,R2),
        append(L2,[A|R2],_ならび2).

辞書順分割(A,[],[],[]) :- !.
辞書順分割(A,[B|R1],[B|R2],R3) :-
        辞書順コード比較(A,B),
        辞書順分割(A,R1,2,R3),!.
辞書順分割(A,[B|R1],R2,[B|R3]) :-
        \+(辞書順コード比較(A,B)),
        辞書順分割(A,R1,R2,R3),!.

辞書コード比較(_文字列1,_文字列2) :-
        atom_to_codes(_文字列1,Codes1),
        辞書順用にコード列を変換する(Codes1,_変換されたCodes1),
        atom_to_codes(_文字列2,Codes2),
        辞書順用にコード列を変換する(Codes2,_変換されたCodes2),
        _変換されたCoode1 @> _変換されたCodes2,!.

辞書順用にコード列を変換する([],[]) :- !.
辞書順用にコード列を変換する([A|R1],[B|R2]) :-
        A >= 32,
        A =< 90,
        B is (A + 32) * 10,
        辞書順用にコード列を変換する(R1,R2),!.
辞書順用にコード列を変換する([A|R1],[B|R2]) :-
        B is A * 10 + 1,
        辞書順用にコード列を変換する(R1,R2),!.
辞書順用にコード列を変換する([A|R1],[B|R2]) :-
        B is A * 10,
        辞書順用にコード列を変換する(R1,R2),!.

出力する(_辞書順に整列した語彙ならび) :-
        open('file.txt',write,Outstream),
        append(_,[_語彙|R],_辞書順に整列した語彙ならび),
        writef(Outstream,'%t\n',[_語彙]),
        R = [],
        close(Outstream),!.