このディレクトリの索引

http://pc12.2ch.net/test/read.cgi/tech/1247438792/811 
#  [1] 授業単元:プログラミング演習 
#  [2] 問題文(含コード&リンク): 
#  入力として与えられた文字列のアナグラム(anagram)を出力するプログラムanagram.c
# を作成せよ。 
# 
#  % ./a.out 
#  String: abc 
#  abc acb bac bca cab cba 
#  % 
# 
# 入力する文字数が増えると計算時間はどのように変化していくかを考えよ。
# プログラムの実行時間は、「time」コマンドを使用して計測せよ。
# timeコマンドの結果のうち、ユ ーザ時間がプログラムの実行時間になります。 
# 
#  % time ./a.out 
#  String: abc 
#  abc acb bac bca cab cba 
# 
#  real 0m0.002s 
#  user 0m0.000s 
#  sys 0m0.001s 

root#  time prologuexxx -query0 't617(abc)'

real    0m0.111s
user    0m0.072s
sys     0m0.040s

root# time prologuexxx -query0 't617(abcdef)'

real    0m0.116s
user    0m0.072s
sys     0m0.044s

root# time prologuexxx -query0 't617(abcdefghi)'

real    0m3.298s
user    0m2.880s
sys     0m0.416s

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

t617(Atom) :-
    anagram(Atom,Anagram),
    halt,!.

anagram(Atom,Anagram) :-
    atom_chars(Atom,Chars),
    length(Chars,Len),
    findall(S,(順列(Chars,Len,L),concat_atom(L,S)),X),
    concat_atom(X,' ',Anagram).