このディレクトリの索引

http://pc12.2ch.net/test/read.cgi/tech/1245853701/733
# [1] 授業単元: プログラミングC 
# [2] 問題文(含コード&リンク):  
# キーボードから半角英数で文字列を入力し、これを数字(0→9)、大文字(A→Z)、 
# 小文字(a→z)の順に並べ替えるプログラムを作成せよ。 
# ヒント:並べ替えアルゴリズムは、バブルソート(隣接交換法)を使うと簡単だろう。 
#     文字列長はstrlen命令を使うとよい。みたいです。

t388 :-
  get_line(Line),
  atom_chars(Line,Chars),
  バブルソート(Chars,_整列した文字ならび),
  atom_chars(Line2,_整列した文字ならび),
  write_formatted('%t\n',[Line2]).

バブルソート(L,X) :-
  整順が崩れるまで(L,L2),
  バブルソート(L2,X),!.
バブルソート(L,L).

整順が崩れるまで([A],[A]) :- !,fail.
整順が崩れるまで([A,B|R1],[A|R2]) :-
  A @=< B,
  整順が崩れるまで([B|R1],R2).
整順が崩れるまで([A,B|R1],[B,A|R1]) :-
  A @> B.