このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 131代目 #343 # [1] 授業単元: C言語演習 # [2] 問題文(含コード&リンク):http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10014.txt # # 図のような過程を辿るもっとも簡単な整列アルゴリズムを実現せよ # [0] 567,724,23,43,148,72 # [1] 23,724,567,43,148,72 # [2] 23,43,567,724,148,72 # [3] 23.43,72,724,148,567 # [4] 23,43,72,148,724,567 # [5] 23,43,72,148,567,724 /* 挙動([0],[567,724,23,43,148,72]). 挙動([1],[23,724,567,43,148,72]). 挙動([2],[23,43,567,724,148,72]). 挙動([3],[23.43,72,724,148,567]). 挙動([4],[23,43,72,148,724,567]). 挙動([5],[23,43,72,148,567,724]). */ 交換整列([],[]). 交換整列([A|R1],L2) :- 'R1の最小値がAより小さいならば二つを交換し交換した先頭要素まで確定しそれ以降を整列する。 最小値がなければAまでは整列済みでR1から後を整列する。'([A|R1],L2). 'R1の最小値がAより小さいならば二つを交換し交換した先頭要素まで確定しそれ以降を整列する。 最小値がなければAまでは整列済みでR1から後を整列する。'([A|R1],L2) :- 'R1の最小値がAより小さいならば二つを交換し交換した先頭要素まで確定しそれ以降を整列する。'([A|R1],L2),!. 'R1の最小値がAより小さいならば二つを交換し交換した先頭要素まで確定しそれ以降を整列する。 最小値がなければAまでは整列済みでR1から後を整列する。'([A|R1],L2) :- '最小値がなければAまでは整列済みでR1から後を整列する。'([A|R1],L2). 'R1の最小値がAより小さいならば二つを交換し交換した先頭要素まで確定しそれ以降を整列する。'([A|R1],[B|R3]) :- 'AとR1の最小値を交換する'([A|R1],B,R2), 交換整列(R2,R3). 'AとR1の最小値を交換する'([A|R1],B,R2) :- 'AとBを交換してR2とする'(A,B,R1,R2), 'R2の最小値がB'(R2,B). 'AとBを交換してR2とする'(A,B,R1,R2) :- select(B,R1,A,R2). 'R2の最小値がB'(R2,B) :- forall(member(C,R2),C @>= B). '最小値がなければAまでは整列済みでR1から後を整列する。'([A|R1],[A|R2]) :- 交換整列(R1,R2).