このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 132代目 #72 # [1]授業単元:プログラミング演習 # [2] 1から100000までの数を列挙する。 # nまで書き終わった時点でそれぞれの数字dがtimes[d] (0<=d<=9)回使われていたとする。 # times[d]が小さい順にdを並べて順列を作る。(同じ回数の場合dが大きいほうが後)この順列が最初からそれまでに累積何回変わったか # nが1000の倍数毎に表にして出力(100000まで) # 回数と順位を要素とする構造体配列を使うこと # 整数の文字表現が増えると累計順位が変化する(_n個まで,_順位交代回数) :- 整数の文字表現が増えると累計順位が変化する(1,100000,[[0,'0'],[1,'1'],[0,'2'],[0,'3'],[0,'4'],[0,'5'],[0,'6'],[0,'7'],[0,'8'],[0,'9']],['0','2','3','4','5','6','7','8','9','1'],0,_n個まで,_順位交代回数). 整数の文字表現が増えると累計順位が変化する(Max,Max,_,_,_順位交代回数,Max,_順位交代回数) :- !. 整数の文字表現が増えると累計順位が変化する(N,Max,_,_,_順位交代回数,N,_順位交代回数) :- 0 is N mod 1000. 整数の文字表現が増えると累計順位が変化する(N,Max,LL1,_順位ならび_1,_順位交代回数_1,_n個まで,_順位交代回数) :- 整数の文字表現が増えると累計順位が変化して行く(N,Max,LL1,_順位ならび_1,_順位交代回数_1,_n個まで,_順位交代回数). 整数の文字表現が増えると累計順位が変化して行く(N,Max,LL1,_順位ならび_1,_順位交代回数_1,_n個まで,_順位交代回数) :- 整数の文字表現が増えると(N,N_2,_次の数字ならび), 最新の順位ならび(_次の数字ならび,LL1,LL2,_順位ならび_2), 累計順位が変化して行く(N_2,Max,LL2,_順位ならび_1,_順位ならび_2,_順位交代回数_1,_n個まで,_順位交代回数). 整数の文字表現が増えると(N,N_2,_次の数字ならび) :- succ(N,N_2), number_chars(N_2,_次の数字ならび). 最新の順位ならび(_次の数字ならび,LL1,LL2,_順位ならび_2) :- 'select/4を使った標本値の出現度数加算(但し、[_度数,_標本値]の順に管理される)'(_次の数字ならび,LL1,LL2), 順位ならび(LL2,_順位ならび_2). 'select/4を使った標本値の出現度数加算(但し、[_度数,_標本値]の順に管理される)'([],LL,LL). 'select/4を使った標本値の出現度数加算(但し、[_度数,_標本値]の順に管理される)'(_標本値ならび,LL1,LL) :- 'select/4で鍵管理して標本値の出現度数を加算して行く(但し、[_度数,_標本値]の順に管理される)'(_標本値ならび,LL1,LL). 'select/4で鍵管理して標本値の出現度数を加算して行く(但し、[_度数,_標本値]の順に管理される)'([_標本値|R],LL1,LL) :- 'select/4で鍵管理して標本値の出現度数を加算(但し、[_度数,_標本値]の順に管理される)'(_標本値,LL1,LL2), 'select/4を使った標本値の出現度数加算(但し、[_度数,_標本値]の順に管理される)'(R,LL2,LL). 'select/4で鍵管理して標本値の出現度数を加算(但し、[_度数,_標本値]の順に管理される)'(_標本値,LL1,LL2) :- select([_度数_1,_標本値],LL1,[_度数_2,_標本値],LL2), succ(_度数_1,_度数_2). 順位ならび(_度数標本値ならび,_順位ならび) :- '度数・標本値順に整列する'(_度数標本値ならび,_整列した度数標本値ならび), 整列された度数標本値ならびから標本値の順位を取り出す(_整列した度数標本値ならび,_順位ならび). '度数・標本値順に整列する'(_度数標本値ならび,_整列した度数標本ならび) :- sort(_度数標本値ならび,_整列した度数標本ならび). 整列された度数標本値ならびから標本値の順位を取り出す(_整列した度数標本値ならび,_順位ならび) :- findall(_標本値,member([_,_標本値],_整列した度数標本値ならび),_順位ならび). 累計順位が変化して行く(N_2,Max,LL2,_順位ならび_1,_順位ならび_2,_順位交代回数_1,_n個まで,_順位交代回数) :- 順位に変化があった場合だけ順位交代回数を更新する(_順位ならび_1,_順位ならび_2,_順位交代回数_1,_順位交代回数_2), 整数の文字表現が増えると累計順位が変化する(N_2,Max,LL2,_順位ならび_2,_順位交代回数_2,_n個まで,_順位交代回数). 順位に変化があった場合だけ順位交代回数を更新する(_順位ならび_1,_順位ならび_2,_順位交代回数_1,_順位交代回数_2) :- '順位に変化があった場合、交代回数が更新される'(_順位ならび_1,_順位ならび_2,_順位交代回数_1,_順位交代回数_2),!. 順位に変化があった場合だけ順位交代回数を更新する(_,_,_順位交代回数,_順位交代回数). '順位に変化があった場合、交代回数が更新される'(_順位ならび_1,_順位ならび_2,_順位交代回数_1,_順位交代回数_2) :- '順位に変化があった場合、'(_順位ならび_1,_順位ならび_2), 交代回数が変化する(_順位交代回数_1,_順位交代回数_2). '順位に変化があった場合、'(_順位ならび_1,_順位ならび_2) :- \+(sort(_順位ならび_1,_順位ならび_2)). 交代回数が変化する(_順位交代回数_1,_順位交代回数_2) :- succ(_順位交代回数_1,_順位交代回数_2).