このディレクトリの索引

# C/C++の宿題片付けます 132代目 #354 # [1] 授業単元: プログラミング実習 # [2] 問題文(含コード&リンク): # (1)http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10174.txt # 次のように各0番目の列要素にテストの点数を初期設定にしてある大きさ # 10×2の配列がある。この配列の1番目の列要素に点数の高い順から順位を格納するプログラムを作成しなさい。 # #   [0] [1] # [0] 67 # [1] 43 # [2] 56 # [3] 97 # [4] 30 # [5] 88 # [6] 76 # [7] 55 # [8] 66 # [9] 78 :- set_prolog_flag(answer_write_options,[quoted(true), portray(true), max_depth(10000000), attributes(portray)]). ならび([[67,_],[43,_],[56,_],[97,_],[30,_],[88,_],[76,_],[55,_],[66,_],[78,_]]). の(_). 'ならびの各要素は二要素のならびである。各要素の第一要素に点数が入っていて、二番目の要素の初期値は変数になっている。点数の降順順位をこの二番目の要素に格納する'(_ならび) :- 'ならびの各要素は二要素のならびである。各要素の第一要素に点数が入っていて、二番目の要素の初期値は変数になっている。'(_ならび), '点数の降順順位をこの二番目の要素に格納する'(_ならび). 'ならびの各要素は二要素のならびである。各要素の第一要素に点数が入っていて、二番目の要素の初期値は変数になっている。'(_ならび) :- ならびの(_ならび), '各要素の第一要素に点数が入っていて、'(_ならび), '二番目の要素の初期値は変数になっている。'(_ならび). ならびの(_ならび) :- ならび(_ならび), の(_). '各要素の第一要素に点数が入っていて、'(_ならび) :- forall(member([_点数,_],_ならび),点数(_点数)). 点数(_点数) :- integer(_点数), between(0,100,_点数). '二番目の要素の初期値は変数になっている。'(_ならび) :- forall(member([_,_変数],_ならび),変数(_変数)). 変数(_変数) :- var(_変数). '点数の降順順位をこの二番目の要素に格納する'(_ならび) :- 降順整列した点数ならび(_ならび,_降順整列した点数ならび), 第二要素に順位をセット(_ならび,_降順整列した点数ならび). 降順整列した点数ならび(_ならび,_降順整列した点数ならび) :- 順位付け(_ならび,[],_降順整列した点数ならび). 順位付け([],X,X). 順位付け([[_甲,_]|R1],Y1,X) :- 挿入(_甲,Y1,Y2), 順位付け(R1,Y2,X). 挿入(_甲,[],[A]). 挿入(_甲,[_乙|R],[_甲,_乙|R]) :- _甲 @> _乙,!. 挿入(_甲,L1,L2) :- より後方に挿入する(_甲,L1,L2). より後方に挿入する(_甲,[_乙|R1],[_乙|R2]) :- _甲 @=< _乙, 挿入(_甲,R1,R2). 第二要素に順位をセット([],_). 第二要素に順位をセット(_ならび,_降順整列した点数ならび) :- ならびの第二要素に順位ならびの同位置の順位を単一化して行く(_ならび,_降順整列した点数ならび). ならびの第二要素に順位ならびの同位置の順位を単一化して行く([[_点数,_順位]|R],_降順整列した点数ならび) :- nth1(_順位,_降順整列した点数ならび,_点数), 第二要素に順位をセット(R,_降順整列した点数ならび).