[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 05/24 03:32 / Filesize : 373 KB / Number-of Response : 586
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

いろんな言語で宿題 第五編



1 名前:デフォルトの名無しさん [2010/06/19(土) 00:00:38 ]
前スレは512k超えで終了しました。


159 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 19:04:21 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/334
# [1] 授業単元:画像処理
# [2] 問題文(含コード&リンク):16×16サイズの白黒ビットマップ画像を読み込んで、
#                  上下反転させた画像をビットマップで保存するプログラムを作成。
#


160 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 22:57:29 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/335
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):ファイルに保存された会員情報を指定された項目をキーとしてソートするプログラムを作成する.
# 出力形式は,入力データと同じ,つまり1行に1人分のデータを格納し,各項目間はカンマで区切るものとする.
# また,ソート済みのデータはファイルではなく標準出力に出力するものとする.
# 整数型のデータについては数値として,文字列型のデータについては大文字/小文字を区別せずにソートをすること.
# ソートアルゴリズムはこれまでの演習で使用したもの,していないものに関わらず,何を用いてもよい.
#
# また,会員数は最大で20,000人と仮定してもよい.
#
# 会員情報の入ったファイルのファイル名,キーとなる項目,正順か逆順かの指定はプログラム実行時の引数として与える.第一引数が会員情報の入ったファイル名,第二引数が項目番号(表1参照),第三引数がソート方法(0なら昇順,1なら降順)とする.
nt)
# 州 5 文字列(最大で50文字)
# 郡 6 文字列(最大で50文字)#
# 表1: データ型 項目名 項目番号 型
# 会員ID 1 整数(int)
# 姓 2 文字列(最大で50文字)
# 名 3 文字列(最大で50文字)



161 名前:デフォルトの名無しさん mailto:sage [2010/06/29(火) 23:52:14 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/340
# [1] 授業単元: プログラミング開発基礎
# [2] 問題文 複数ありますのでこちらで
# ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10764.txt
# 問題1
# 1 問題1読み込んで,その数が10 で割り切れるかどうかを表示するプログラムを作成
# 整数値を読み込んで,その数が10 で割り切れるかどうかを表示するプログラムを作成せよ.,表示後に,もう一度続けるかの確認を促し,それに応じて何度でも繰り返せる# なお,表示後に,もう一度続けるかの確認を促し,それに応じて何度でも繰り返せるようにすること
# 2 問題2
# 2 問題2数値を読み込んで,その桁数を表示するプログラムを作成せよ.
# 非負の整数値を読み込んで,その桁数を表示するプログラムを作成せよ.と.
# なお,負の値を読み込んだ場合は,再入力を促すメッセージを表示すること.
# 3 問題3
# 3 問題3数値を読み込んで,小さい方の数以上で大きい方の数以下の整数を全て加え
# 二つの整数値を読み込んで,小さい方の数以上で大きい方の数以下の整数を全て加えた値を表示するプログラムを作成せよ.
# 4 問題4読み込むまで次々と整数値を読み込んでいき,合計値および平均値を表示する
# 9999 を読み込むまで次々と整数値を読み込んでいき,合計値および平均値を表示するプログラムを作成せよ.なお,最後に読み込んだ9999 は合計には加えないものとする


162 名前:デフォルトの名無しさん mailto:sage [2010/06/30(水) 00:03:23 ]
pc12.2ch.net/test/read.cgi/tech/1266565626/675
# ../test/read.cgi/tech/1266565626/673
# ・とあるディレクトリd0以下に存在する全てのディレクトリをなぞる。
#
# ・このとき、今位置するディレクトリdnの相対的な深さをdとして、
#  d個のピリオドをディレクトリdnの名前の前に足した文字列 をファイルFに出力する。
#
# ・また、このとき、今位置するディレクトリdnにテキストファイルがあれば、
#  d+1個のピリオドをテキストファイルtnの名前の前に足し、拡張子.txtを除いた文字列 をファイルFに出力する。
# ・さらに、そのテキストファイルtnの内容をそのままファイルFに出力する。
#  テキストファイルtnの内容の各行頭には、ピリオドはつけない。
#  テキストファイルtnの内容のとある行頭にピリオドがある場合は、ピリオドの前に半角空白を入れる。


163 名前:デフォルトの名無しさん mailto:sage [2010/06/30(水) 02:04:53 ]
>>161
% Prolog [1] [2]

'整数値を読み込んで,その数が10 で割り切れるかどうかを表示する' :-
    催促付き整数入力('整数値を入力してください : ',N),
    '10で割り切れるか判定する'(N),
    write('入力を続けますか y or n : '),get_line(Line),
    Line = y,
    '整数値を読み込んで,その数が10 で割り切れるかどうかを表示する'.
'整数値を読み込んで,その数が10 で割り切れるかどうかを表示する'.

'10で割り切れるか判定する'(N) :- 0 is N mod 10,
    write('あなたの入力した数%tは10で割り切れます\n',[N]),!.
'10で割り切れるか判定する'(N) :-
    write('あなたの入力した数%tは10で割り切れません\n',[N]),!.

'非負の整数値を読み込んで,その桁数を表示する' :-
    催促付き整数入力('非負の整数値を入力してください : ',N),N >= 0,
    入力された整数の桁数を表示する(1,N),
    write('入力を続けますか y or n : '),get_line(Line),
    Line = y,
    '非負の整数値を読み込んで,その桁数を表示する'.
'非負の整数値を読み込んで,その桁数を表示する'.

入力された整数の桁数を表示する(M,N) :-
    truncate(10 ^ M) > N,write('入力された非負整数は%桁です\n',[M]),!.
入力された整数の桁数を表示する(M1,N) :- M2 is M1 + 1,入力された整数の桁数を表示
する(M2,N).


164 名前:デフォルトの名無しさん mailto:sage [2010/06/30(水) 07:14:15 ]
>>161
% Prolog 問題3 問題4

二つの整数値を読み込んで,小さい方の数以上で大きい方の数以下の整数を全て加えた値を表示する :-
    write('整数値をカンマで区切り二つ読み込みます : '),
    get_split_line([','],[N1,N2]),
    小さい順に(N1,N2,N3,N4),
    findsum(N,for(N3,N,N4),Sum1),
    Sum is truncate(Sum1),
    write_formatted('%t以上%t以下のすべての整数の和は%tです。\n',[N3,N4,Sum]).

小さい順に(N1,N2,N1,N2) :- N1 =< N2,!.
小さい順に(N1,N2,N2,N1) :- N1 > N2,!.

'9999 を読み込むまで次々と整数値を読み込んでいき,合計値および平均値を表示する':-
    findall(N,(repeat,get_integer(N),(N=9999,!,fail;true)),L),
    length(L,Len),\+(Len=0),
    合計値および平均値(L,Len,0,_合計値,_平均値),
    write_formatted('合計値 = %t, 平均値 = %t\n',[_合計値,_平均値]).

合計値および平均値([],Len,_合計値,_合計値,_平均値) :- _平均値 is _合計値 / Len,!.
合計値および平均値([N|R],Len,_合計値1,_合計値,_平均値) :-
    _合計値2 is _合計値 + N,
    合計値および平均値(R,Len,_合計値2,_合計値,_平均値).


165 名前:デフォルトの名無しさん mailto:sage [2010/06/30(水) 07:30:57 ]
>>163->>164 (>>161)
% Prolog write_formattedであるべきところがwriteになっているところが複数箇所ありました。% 以下サイトに書き直しておきます。
nojiriko.asia/prolog/c137_340.html



166 名前:デフォルトの名無しさん mailto:sage [2010/06/30(水) 11:44:59 ]
pc12.2ch.net/test/read.cgi/tech/1200175247/861
# [1] 授業単元:ファイル操作、2分探索法
# [2] 問題文:学生の身長、体重のデータを読み込みある学籍番号を入力した
# ときにその学生の学籍番号、身長、体重を2分探索法により求め、出力しなさい。
# 学生のデータは、txtファイルでxx yyy zzという風に記載されています。
# (例)出力結果
# 学生番号:xx
# 身長:yyy (cm)
# 体重:zz (kg)


167 名前:デフォルトの名無しさん mailto:sage [2010/06/30(水) 17:07:33 ]
>>166
% Prolog
nojiriko.asia/prolog/ruby2_861.html





168 名前:デフォルトの名無しさん mailto:sage [2010/06/30(水) 17:24:16 ]
pc12.2ch.net/test/read.cgi/tech/1200175247/863
# 【質問テンプレ】
# [1] 授業単元:プログラミング
# [2] 問題文:
# 二分法による平方根の計算。但し、求めたい平方根(自
# 然数)を入力できるようにした上で、プログラムの実行時
# の計算回数を計算・表示できるように、プログラムを作成
# すること。


169 名前:デフォルトの名無しさん mailto:sage [2010/06/30(水) 18:02:30 ]
>>168
% Prolog

二分法による平方根の計算(X,Y) :-
    S1 is X / 2,
    二分法による平方根の計算(1,X,S1,Y).

二分法による平方根の計算(N,X,S1,Y) :-
    Y is X / 2 + S1,
    write_formattd('%t %10.4f\n',[N,Y]),
    0.0001 > abs(Y - S1),!.
二分法よる平方根の計算(N1,X,S1,Y) :-
    S2 is S / 2 + S1,
    N2 is N1 + 1,
    二分法による平方根の計算(N2,X,S2,Y).


170 名前:デフォルトの名無しさん mailto:sage [2010/06/30(水) 20:56:38 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/357
# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):
# ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10767.txt
#
# 登録番号(int no)と名前(char *name)と年齢(int age)を含む構造体person型のポインタ変数を宣言し,
# 登録人数分だけの動的メモリ確保をせよ. そして, データをファイルから入力せよ. (malloc関数を使用すること)
# ファイルの形式は, 先頭に登録する人数とし, そのあとに人数分のデータを登録番号,名前, 年齢の順に書いていく
# (下の例を参照. 登録番号は入力順に1,2,3,4,5, …とする. そして, 入力した全員データを表示せよ.
#
# (ファイルの例)
# 3
# 1 田中 20
# 2 大田 40
# 3 井上 35



171 名前:デフォルトの名無しさん mailto:sage [2010/06/30(水) 21:54:55 ]
>>170
% Prolog データファイルを作ることも問題のうちなのかな。例によってポインター云々は無視。

ファイル作成(_ファイル名) :-
    write('作成するデータ数を入力してください : '),
    get_integer(N),
    tell(_ファイル名),
    write_formatted('%t\n',[N]),
    for(1,M,N),
    write('名前と年齢をカンマまたはスペース区切りで入力してください : '),
    get_split_line([',',' '],[_名前,_年齢]),
    write_formatted('%t %t %t\n',[N,_名前,_年齢]),
    M = N,
    told.

ファイルから読み取ったデータを登録する(_ファイル名) :-
    get_split_lines(_ファイル名,[' '],LL),
    LL = [_|LL2],
    'この場合、要素数(構造体の数)はいらないから',
    append(_,[[_登録番号,_名前,_年齢]|R],LL2),
    assertz(人物(_登録番号,_名前,_年齢)),
    R = [].

'この場合、要素数(構造体の数)はいらないから'.


172 名前:デフォルトの名無しさん mailto:sage [2010/06/30(水) 22:54:32 ]
>>170
% Prolog >>171はナンセンスで、Prologのプログラマなら、

ファイル作成(_ファイル名) :-
    write('作成するデータ数を入力してください : '),
    get_integer(N),
    tell(_ファイル名),
    for(1,M,N),
    write('名前と年齢をカンマまたはスペース区切りで入力してください : '),
    get_split_line([',',' '],[_名前,_年齢]),
    write_formatted(人物('%q,%q,%q).\n',[N,_名前,_年齢]),
    M = N,
    told.

ファイルから読み取ったデータを登録する(_ファイル名) :-
    consult(_ファイル名).




173 名前:デフォルトの名無しさん mailto:sage [2010/06/30(水) 23:39:49 ]
>>162
% Prolog
nojiriko.asia/prolog/Perl_ni_tsuite43_675.html



174 名前:デフォルトの名無しさん mailto:sage [2010/07/01(木) 05:33:43 ]
pc12.2ch.net/test/read.cgi/tech/1257968644/58
# 二分法とニュートン法で次の非線形方程式の解を求めるプログラムを作成せよ
#
# x=2+logx (x≧1)
#



175 名前:デフォルトの名無しさん mailto:sage [2010/07/01(木) 09:00:30 ]
>>170
% Prolog (その一) 整列と併合を除く外殻だけ。
オンメモリ整列限界数(1000).

ファイルに保存された会員情報を指定された項目をキーとしてソートする(_対象ファイル,_鍵項目番号,_ソート方法) :-
    オンメモリ整列限界数(_オンメモリ整列限界数),
    open(_対象ファイル,read,Input),
    ふたつの仮ファイルの取得と交互からくり生成,
    入力出力ファイルを交互しながらの繰り返し(_,_仮出力ファイル,InputT,OutputT),
    対象ファイルから読み込む(Input,_オンメモリ整列限界数,Lines,_診断),
    鍵・昇降順・指定整列(Lines,_鍵項目番号,_ソート方法,_整列されたLines),
    鍵項目番号とソート方法をしてファイル併合(_整列されたLines,_鍵項目番号,_ソート方法,InputT,OutputT),
    _診断 = end_of_file,close(Input),
    仮出力ファイルの内容を整理しながら標準出力に表示する(_仮出力ファイル,_鍵項目番号).

入力出力ファイルを交互しながらの繰り返し(_仮ファイルA,_仮ファイルB,InputT,OutputT) :-
    仮ファイルからくり(_仮ファイルA,_仮ファイルB),
    open(_仮ファイルA,read,InputT),
    open(_仮ファイルB,write,OutputT).

仮ファイルからくり(X) :- 仮ファイルからくり(X).

ふたつの仮ファイルの取得と交互からくり生成 :-
    tmpnam(_仮ファイル1),open(_仮ファイル1,write,Output1),close(Output1),
    tmpnam(_仮ファイル2),opne(_仮ファイル2,write,Output2),close(Output2),
    asserta(仮ファイルからくり(_仮ファイル2,_仮ファイル1)),
    asserta(仮ファイルからくり(_仮ファイル1,_仮ファイル2)).


176 名前:デフォルトの名無しさん mailto:sage [2010/07/01(木) 11:24:56 ]
>>200
% Prolog

学校のホームページに載っている休講情報に接続して、それから先生の名前と日にちだけ取り出す(URL,_休講情報ならび) :-
    w3c(URL,Lines),
    先生の名前と日にちだけ取り出す(Lines,_休講情報ならび),!.

先生の名前と日にちだけ取り出す(Lines,_休講情報ならび) :-
    append(L0,[A|R1],Lines),
    sub_atom(A,_,2,_,先生),
    月日を取り出す(L0,_月,_日),
    ある日の休講情報ならびを得る([A|R1],_月,_日,_ある日の休講となる情報ならび,_残りならび),
    先生の名前と日にちだけ取り出す(_残りならび,R),
    append(_ある日の休講となる情報ならび,_休講情報ならび),!.
先生の名前と日にちだけ取り出す(_,[]) :- !.

月日を取り出す(Lines,_月,_日) :-
    append(_,[A|_],Lines),sub_atom(A,S,1,_,月),sub_atom(A,0,S,_,_月),
    append(_,[B|_],Lines),sub_atom(A,S,1,_,日),sub_atom(B,0,S,_,_日),!.

ある日の休講情報ならびを得る([],_,_,[],[]) :- !.
ある日の休講情報ならびを得る(['\n'|R],_,_,[],R) :- !.
ある日の休講情報ならびを得る([A|R1],_月,_日,[[_氏名,_月,_日]|R2],_残りならび) :-
    sub_atom(A,_,2,_,先生),
    split(A,[' '],[_姓,_名,先生]),
    concat_atom([_姓,_名],_氏名),
    ある日の休講情報ならびを得る(R1,_月,_日,R2,_残りならび).


177 名前:デフォルトの名無しさん mailto:sage [2010/07/01(木) 11:29:40 ]
>>176 の出題レス番号は >>200 ではなくて >>133 でした。




178 名前:デフォルトの名無しさん mailto:sage [2010/07/01(木) 13:47:49 ]
>>175
これも >>170 ではなくて >>160 だった。


179 名前:デフォルトの名無しさん mailto:sage [2010/07/01(木) 15:45:50 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/390
# [1] 授業単元: プログラミング言語
# [2] 問題文(含コード&リンク): ime.nu/kansai2channeler.hp.infoseek.co. jp/cgi-bin/joyful/img/10772.txt
#
# 演習1
# 再帰呼び出しを用いたフィボナッチ数


180 名前:デフォルトの名無しさん mailto:sage [2010/07/01(木) 16:13:56 ]
>>179
% Prolog

フィボナッチ数(0,1).
フィボナッチ数(1,1).
フィボナッチ数(N,X) :-
    N >= 2,
    N_1 is N - 1,フィボナッチ数(N_1,X1),
    N_2 is N - 2,フィボナッチ数(N_2,X2),
    X is X1 + X2.


181 名前:デフォルトの名無しさん mailto:sage [2010/07/01(木) 19:54:48 ]
>>160
% Prolog
nojiriko.asia/prolog/c137_335.html



182 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 00:20:09 ]
>>131
使用言語:十進BASIC

FUNCTION ack(m,n)
IF m=0 THEN
LET ack=n+1
ELSEIF n=0 THEN
LET ack=ack(m-1,1)
ELSE
LET ack=ack(m-1,ack(m,n-1))
END IF
END FUNCTION
FOR i=0 TO 8
PRINT USING "ask(3,#) = ####":i,ack(3,i)
NEXT I
END

ask(3,0) = 5
ask(3,1) = 13
ask(3,2) = 29
ask(3,3) = 61
ask(3,4) = 125
ask(3,5) = 253
ask(3,6) = 509
ask(3,7) = 1021
ask(3,8) = 2045

183 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 00:21:11 ]
>>131
使用言語:Lua

function ack(m,n)
if m==0 then return n+1
elseif n==0 then return ack(m-1,1)
else return ack(m-1,ack(m,n-1))
end
end

for i=0,8 do print("ack(3,"..i..") = "..ack(3,i))end


ack(3,0) = 5
ack(3,1) = 13
ack(3,2) = 29
ack(3,3) = 61
ack(3,4) = 125
ack(3,5) = 253
ack(3,6) = 509
ack(3,7) = 1021
ack(3,8) = 2045

184 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 00:22:11 ]
>>131
使用言語:Xtal

ack:fun(m,n){
if (m==0) return n+1;
if (n==0) return ack(m-1,1);
return ack(m-1,ack(m,n-1));
}

ix:009>9.times{%f"ack(3,%d)=%d"(it,ack(3,it)).p;};
ack(3,0)=5
ack(3,1)=13
ack(3,2)=29
ack(3,3)=61
ack(3,4)=125
ack(3,5)=253
ack(3,6)=509
ack(3,7)=1021
ack(3,8)=2045
ix:010>

185 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 04:59:37 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/405
# 摂氏から華氏,及び華氏から摂氏に換算する関数を作成して、
# main関数でキーボードから温度とその値が摂氏であるか華氏であるかを
# 入力し,摂氏ならば華氏に,華氏ならば摂氏に換算した値を小数点以下1桁までで出力するプログラムを作成しなさい。
# なお出力は main関数で行うこと。
#



186 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 05:00:56 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/409
# [1] 授業単元:プログラミングC
# [2] 問題文(含コード&リンク):
# 極座標(r,θ)の値を入力すると、直交座標(x,y)に変換するプログラムを作成せよ。
# 但し,θの値はdegree(度)で入力すること。また、πの値は逆三角関数(arctan(x))を使って計算をすること。
#



187 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 05:01:48 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/410
# [1] 授業単元:アルゴリズム論
# [2] 問題文(含コード&リンク):分離連作法と外部ハッシュ法の性能比較
#





188 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 05:04:19 ]
pc12.2ch.net/test/read.cgi/tech/1267796762/215
#
# 【 課題 】
# 課題1
#
# 整数型の変数n1,n及びn3には、数値が格納されている。
# これらの3個の数値の大小比較を行い、最大値を変数maxに、最小値を変数minに格納する手続き部である。
# 最初にn1とn2の大小比較を行い、大きいほうをmaxに入れ、小さい方をmmminに入れる。
# 次に、max及びminとn3を大小比較して、大きいほうをmaxに、小さい方をminに入れて、最終的な最大値および
#
# 最小値を決定する。



189 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 05:21:57 ]
pc12.2ch.net/test/read.cgi/tech/1200175247/877
# [1] 授業単元:2分探索法
# [2] 問題文: nojiriko.asia/jpeg/up10962.jpg にコピーさせていただきました。
#



190 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 05:26:20 ]
pc12.2ch.net/test/read.cgi/tech/1260922392/45
# 以下の条件(仕様)を満たすプログラムを作成し, そのプログラム(Pascalプログラムソースファイル)とともに その解説書を提出すること.
# 逆ポーランド記法で入力された論理式の充足可能性を判定し, その式の値をtrueにする変数値を,通常の表記とともに出力すること.
# 可能な演算は論理積(and), 論理和(or), 否定(not), の3種類として, それぞれ'a','o','n' で表現すること.
# 使用可能な論理変数は x0, x1, ..., x9 の10種類とし, それぞれ '0','1',...,'9' で表現すること.
# 例) (x1∧x2)∨(¬x1∧x3) ⇒  12a1n3ao
# 使用できない文字が含まれる入力に対してエラーの旨を出力すること.
# 入力された論理式の充足可能性を判定, 式の値を true にする変数値を出力した後, 再度入力待ち状態になり, 空の文字列を入力するとプログラムが終了すること.


191 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 06:10:53 ]
>>189
% Prolog 問題B 問題B.1

_学籍番号+_氏名+_誕生_月+_誕生_日 :-
    open('data_b.txt',append,Output),
    write_formatted(Output,'%t %t %t %t\n',[_学籍番号,_氏名,_誕生_月,_誕生_日]),
    close(Output).

'data_b.txtを読み込み、4月1日を年初めとして、誕生日の早いもの順にソートし、その結果を「output_b.txt」ファイルに出力する' :-
    get_split_lines([' '],'data_b.txt',LL),
    鍵項目の付加(LL,LL2),
    整列(LL2,LL3),
    鍵項目を除去しながら出力する(LL3).

鍵項目の付加([],[]) :- !.
鍵項目の付加([[_学籍番号,_氏名,_誕生_月,_誕生_日]|R1],[_誕生_月_2,_誕生_日,_学籍番号,_氏名,_誕生_月,_誕生_日]|R2]) :-
    '1-3月を13-15月に修正'(_誕生_月,_誕生月_2),
    鍵項目の付加(R1,R2).

'1-3月を13-15月に修正'(_誕生_月,_誕生月_2) :- _誕生_月 >= 1,_誕生_月 =< 3,_誕生_月_2 is _誕生_月 + 12,!.
'1-3月を13-15月に修正'(_誕生_月,_誕生月).

鍵項目を除去しながら出力する([]) :- !.
鍵項目を除去しながら出力する([[_,_|L]|R]) :-
    open('out_b.txt',append,Output),
    write_formatted(Output,'%t %t %t月 %t日\n',L),
    close(Output),
    鍵項目を除去しながら出力する(R).


192 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 06:57:45 ]
>>191 (>>189)
% Prolog get_split_lines/3の引数の取り方に誤りがあった。修正。

_学籍番号+_氏名+_誕生_月+_誕生_日 :-
    open('data_b.txt',append,Output),
    write_formatted(Output,'%t %t %t %t\n',[_学籍番号,_氏名,_誕生_月,_誕生_日]),
    close(Output).

'data_b.txtを読み込み、4月1日を年初めとして、誕生日の早いもの順にソートし、その結果を「output_b.txt」ファイルに出力する' :-
    get_split_lines('data_b.txt',[' '],LL),
    鍵項目の付加(LL,LL2),
    整列(LL2,LL3),
    鍵項目を除去しながら出力する(LL3).

鍵項目の付加([],[]) :- !.
鍵項目の付加([[_学籍番号,_氏名,_誕生_月,_誕生_日]|R1],[_誕生_月_2,_誕生_日,_学籍番号,_氏名,_誕生_月,_誕生_日]|R2]) :-
    '1-3月を13-15月に修正'(_誕生_月,_誕生月_2),
    鍵項目の付加(R1,R2).

'1-3月を13-15月に修正'(_誕生_月,_誕生月_2) :- _誕生_月 >= 1,_誕生_月 =< 3,_誕生_月_2 is _誕生_月 + 12,!.
'1-3月を13-15月に修正'(_誕生_月,_誕生月).

鍵項目を除去しながら出力する([]) :- !.
鍵項目を除去しながら出力する([[_,_|L]|R]) :-
    open('out_b.txt',append,Output),
    write_formatted(Output,'%t %t %t月 %t日\n',L),
    close(Output),
    鍵項目を除去しながら出力する(R).


193 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 07:00:34 ]
>>189
% Prolog 問題B.2

'output_b.txtを読み込み、ある誕生日を入力したときに、その学生の学籍番号、氏名、
誕生月、誕生日を二分探索法により出力する'(_誕生_月,_誕生_日) :-
    get_split_lines('output_b.txt',[' ',月,日],LL),
    二分探索法(LL,_誕生_月,_誕生_日,[_学籍番号,_氏名,_誕生_月,_誕生_日]),
    write_formatted('%t %t %t %t月%t日\n',[_学籍番号,_誕生_月,_誕生_日]).

二分探索法(LL,_誕生_月,_誕生_年,[_学籍番号,_氏名,_誕生_月,_誕生_日]) :-
    '1-3月を13-15月に修正'(_誕生_月,_誕生月_0),
    length(LL,Len),
    Len0 is Len // 2,
    append(L0,[[_学籍番号_1,_氏名_1,_誕生_月_1,_誕生_日_1|L1],LL),
    length(L0,Len0),
    '1-3月を13-15月に修正'(_誕生_月_1,_誕生月_10),
    二分探索法(L0,L,L1,_誕生_月_0,_誕生_日,_誕生_月_10,_誕生_日_1,[_学籍番
号,_氏名,_誕生_月,_誕生_日]).

二分探索法(L0,L,L1,_誕生_月,_誕生_日,_誕生_月,_誕生_日,L) :- !.
二分探索法(L0,L,L1,_誕生_月_0,_誕生_日,_誕生_月_10,_誕生_日_1,[_学籍番号,_氏名,
_誕生_月,_誕生_日]) :-
    [_誕生_月_0,_誕生_日] @> [_誕生_月_10,_誕生_日_1],!,
    二分探索法(L0,_誕生_月,_誕生_年,[_学籍番号,_氏名,_誕生_月,_誕生_日]).
二分探索法(L0,L,L1,_誕生_月_0,_誕生_日,_誕生_月_10,_誕生_日_1,[_学籍番号,_氏名,
_誕生_月,_誕生_日]) :-
    [_誕生_月_0,_誕生_日] @< [_誕生_月_10,_誕生_日_1],!,
    二分探索法(L1,_誕生_月,_誕生_年,[_学籍番号,_氏名,_誕生_月,_誕生_日]).



194 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 07:05:19 ]
>>193 (>>189)
% Prolog また、改行ミスがあった。

'output_b.txtを読み込み、ある誕生日を入力したときに、その学生の学籍番号、氏名、誕生月、誕生日を二分探索法により出力する'(_誕生_月,_誕生_日) :-
    get_split_lines('output_b.txt',[' ',月,日],LL),
    二分探索法(LL,_誕生_月,_誕生_日,[_学籍番号,_氏名,_誕生_月,_誕生_日]),
    write_formatted('%t %t %t %t月%t日\n',[_学籍番号,_誕生_月,_誕生_日]).

二分探索法(LL,_誕生_月,_誕生_年,[_学籍番号,_氏名,_誕生_月,_誕生_日]) :-
    '1-3月を13-15月に修正'(_誕生_月,_誕生月_0),
    length(LL,Len),
    Len0 is Len // 2,
    append(L0,[[_学籍番号_1,_氏名_1,_誕生_月_1,_誕生_日_1|L1],LL),
    length(L0,Len0),
    '1-3月を13-15月に修正'(_誕生_月_1,_誕生月_10),
    二分探索法(L0,L,L1,_誕生_月_0,_誕生_日,_誕生_月_10,_誕生_日_1,[_学籍番号,_氏名,_誕生_月,_誕生_日]).

二分探索法(L0,L,L1,_誕生_月,_誕生_日,_誕生_月,_誕生_日,L) :- !.
二分探索法(L0,L,L1,_誕生_月_0,_誕生_日,_誕生_月_10,_誕生_日_1,[_学籍番号,_氏名,_誕生_月,_誕生_日]) :-
    [_誕生_月_0,_誕生_日] @> [_誕生_月_10,_誕生_日_1],!,
    二分探索法(L0,_誕生_月,_誕生_年,[_学籍番号,_氏名,_誕生_月,_誕生_日]).
二分探索法(L0,L,L1,_誕生_月_0,_誕生_日,_誕生_月_10,_誕生_日_1,[_学籍番号,_氏名,_誕生_月,_誕生_日]) :-
    [_誕生_月_0,_誕生_日] @< [_誕生_月_10,_誕生_日_1],!,
    二分探索法(L1,_誕生_月,_誕生_年,[_学籍番号,_氏名,_誕生_月,_誕生_日]).


195 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 07:17:53 ]
>>191->>194 (>>189)
% Prolog もう二ヶ所エラーがあった。書き直しはしません。アーカイブの方を見てください。
nojiriko.asia/prolog/c137_877.html


196 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 08:00:34 ]
>>188
% Prolog
nojiriko.asia/prolog/j69_215.html


197 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 10:33:56 ]
>>185
% Prolog

main :-
    write('温度を入力してください : '),
    get_line(Line),
    atom_to_term(Line,_温度,_),
    write('摂氏または華氏と入力してください : '),
    get_line(_摂氏または華氏),
    摂氏・華氏温度変換(_摂氏または華氏,_温度,_摂氏または華氏の二,_温度の二)
,
    write_formatted('入力された%t%t度は%t%3.1f度です,[_摂氏または華氏,_温度,_摂氏または華氏の二,_温度の二).

摂氏・華氏温度変換(摂氏,_温度,華氏,_華氏) :- 摂氏・華氏変換計算(_温度,_華氏).
摂氏・華氏温度変換(華氏,_温度,摂氏,_摂氏) :- 摂氏・華氏変換計算(_摂氏,_温度).

摂氏・華氏変換計算(_摂氏,_華氏) :- \+(var(_摂氏)),_華氏 is 9 * _摂氏 / 5 + 32,! .
摂氏・華氏変換計算(_摂氏,_華氏) :- \+(var(_華氏)),_摂氏 is 5 * (_華氏 - 32) / 9,!.





198 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 12:22:18 ]
>>131
使用言語:R

ack <- function(m,n){
if (m==0) n+1
else if (n==0) ack(m-1,1)
else ack(m-1,ack(m,n-1))
}

> for(i in 0:8)cat("ack( 3 ,",i,") =",ack(3,i),"\n")
ack( 3 , 0 ) = 5
ack( 3 , 1 ) = 13
ack( 3 , 2 ) = 29
ack( 3 , 3 ) = 61
ack( 3 , 4 ) = 125
ack( 3 , 5 ) = 253
エラー: 評価があまりに深く入れ子になっています。無限の再帰か options(expressions=)?
>

199 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 12:44:54 ]
>>131
使用言語:uwsc

for i=0 to 6
print ack(3,i)
next
function ack(m,n)
if m = 0 then result = n+1
elseif n = 0 then result = ack(m - 1,1)
else result = ack(m - 1,ack(m,n - 1))
fend

5
13
29
61
125
253
509

200 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 17:55:15 ]
>>131
使用言語:Clojure

(defn ack[m n]
(cond (zero? m) (inc n)
(zero? n) (ack (dec m) 1)
:else (ack (dec m) (ack m (dec n)))))

user=> (dotimes [i 9] (printf "(ack 3 %d) -> %d\n" i (ack 3 i)))
(ack 3 0) -> 5
(ack 3 1) -> 13
(ack 3 2) -> 29
(ack 3 3) -> 61
(ack 3 4) -> 125
(ack 3 5) -> 253
(ack 3 6) -> 509
(ack 3 7) -> 1021
(ack 3 8) -> 2045

201 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 17:56:43 ]
>>131
使用言語:Io

Io> ack:=method(m,n,if(m==0,n+1,if(n==0,ack(m-1,1),ack(m-1,ack(m,n-1)))))
Io> 8 repeat(i,ack(3,i)println)
5
13
29
61
125
253
509
1021
==> 1021

202 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 19:05:41 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/414
# [1] 授業単元:C言語
# [2] 問題文(含コード&リンク):switch 文を使用して
# 1. データファイルの新規作成
# 2. データファイルの追加作成
# 3. データファイルの読み込みと表示
# 4. 終了
# をメニュー形式で処理するプログラムを作成せよ。
# ・ ファイル名はキーボードから入力する。
# ・ 1〜4の処理はユーザ関数として定義すること。
# void data_write(void)
# void data_append(void)
# void data_read(void)
# void the_end(void)
# ・1〜4以外の数値が入力されたら再入力させること。


203 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 19:06:31 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/417
# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):
# 正の整数を引数とし、その階乗(n!)を計算して戻り値とする関数
# factを作成して動作を確認せよ。
#



204 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 19:13:16 ]
pc12.2ch.net/test/read.cgi/tech/1267796762/222
# 【 課題 】nojiriko.asia/data/993.html にコピーさせていただきました。
# 【 形態 】1. Javaアプリケーション(main()で開始)
# 【 期限 】7月7日
# 【 Ver  】"1.6.0_20"
# 【 補足 】アップしたファイルに先生が途中まで解答したものが含まれているので、なるべくならそれを使用して下さい。
#



205 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 21:07:45 ]
>>202
% Prolog

switch(N,{N:P}) :- !,call(P).
switch(N,{N:P;_}) :- !,call(P).
switch(N,{P1;P2}) :- switch(N,{P1});switch(N,{P2}).

switch述語を使ってメニューを処理する(N,File) :-
    switch(N,{1:データファイルの新規作成(File);2:データファイルの追加作成(File);3:データファイルの読み込みと表示(File);4:終了}).

データファイルの新規作成(File) :- open(File,write,Output),close(Output).

データファイルの追加作成(File) :-
    write('追加要素を入力しなさい : '),
    get_line(Line),
    open(File,append,Output),
    write_formatted(Output,'%t\n',[Line]),
    close(Output).

データファイルの読み込みと表示(File) :-
    get_lines(File,Lines),
    put_lines(Lines).

終了 :- halt.


206 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 21:12:00 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/420
# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):
# 実数値(xとする)と正の実数値(yとする)を引数としてx^yを戻り値とする
# 関数mypowを作成し、プログラムリストと実行結果を示せ。
# ただし、xとyについてはmain関数でキーボードから入力するようにし、
# 出力結果としては、mypow関数の計算結果と数学関数pow関数の結果を
# 両方表示するようにせよ。また、mypow関数のプロトタイプ宣言も行うこと。
#


207 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 21:13:42 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/421
# [1] 授業単元: プログラム言語
# [2] 問題文(含コード&リンク):
# 10 人の成績を入力し,その順位を成績と共に表示したい。以下の考え方に基づいた
# プログラムを作成せよ。
# 1 ?
# 2次元配列s[10][2] を用意する。
# 2 ?
# i=0〜9 のfor 文を用いてs[i][0] に成績を入力する。
# 3 ?
# s[0][0] とs[j][0],j=0〜9 を比較し,s[0][0] より大きい数値の個数n を数え
#  る。その個数+1 が成績順位になるので,s[0][1] にn+1 を代入する。
# 4 ?
# 同様の操作をs[i][0],i=0〜9 に対して行なえば,その成績順位がs[i][1] とし
#  て求められるので,あとは成績と共に表示すればよい。
#





208 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 22:03:42 ]
>>186
使用言語:J

f=:[:+.[r.(180%~4*_3 o.1)*]

2 f 30
1.73205 1
1 f 45
0.707107 0.707107

209 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 22:38:10 ]
>>203
% Prolog

fact(N,X) :-
    length(L1,N),
    fact(L1,L1,LX),
    length(LX,X) .

fact(L1,[_],L1) :- !.
fact(L1,[_|R2],LX) :-
    findall(L1,member(_,R2),LY),
    flat(LY,LZ),
    fact(LZ,R2,LX).


210 名前:デフォルトの名無しさん mailto:sage [2010/07/02(金) 22:57:09 ]
>>186
使用言語:maxima

f(r,d):=(a:d*4.*atan(1)/180,[float(r*cos(a)),float(r*sin(a))]);

(%i21) f(2,30);
(%o21) [1.732050807568877, 1.0]
(%i22) f(1,45);
(%o22) [0.70710678118655, 0.70710678118655]

211 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 08:02:22 ]
>>207
使用言語:J

a=: 30 50 50 70 50 100 90 70 80 60
f=:>:@(+/"1)@(</~)

a,:f a
30 50 50 70 50 100 90 70 80 60
10 7 7 4 7 1 2 4 3 6

212 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 11:19:52 ]
>>207
% Prolog

'10 人の成績を入力し,その順位を成績と共に表示する' :-
    '要素数10の変数ならびを二本用意する'(L1,L2),
    'L1に成績を入力する'(L1),
    'L1の先頭から順位を対応するL2の位置にセット'(1,10,L1,L2),
    二本のならびを順に表示(L1,L2).

'要素数10の変数ならびを二本用意する'(L1,L2) :-
    length(L1,10),length(L2,10).

'L1に成績を入力する'(L1) :-
    for(1,N,10),get_integer(_点数),list_nth(N,L1,_点数),N=10,!.

'L1の先頭から順位を対応するL2の位置にセット'(N,M,L1,L2) :- N > M,!.
'L1の先頭から順位を対応するL2の位置にセット'(N,M,L1,L2) :-
    list_nth(N,L1,_点数),list_nth(N,L2,_順位),
    count((member(_点数1,L1),_点数1 > _点数),_成績上位者数),_順位 is _成績上位者数 + 1,
    N2 is N + 1,
    'L1の先頭から順位を対応するL2の位置にセット'(N2,M,L1,L2).

二本のならびを順に表示(L1,L2) :-
    for(1,N,10),
    list_nth(N,L1,A),list_nth(N,L2,B),
    write_formatted('%t,%t位\n',[A,B]),
    N=10.


213 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 11:28:49 ]
>>186
使用言語:Io

f:=method(r,d,a:=1 atan*4/180*d;list(a cos*r,a sin*r))

Io> f(2,30)
==> list(1.7320508075688774, 0.9999999999999999)
Io> f(1,45)
==> list(0.7071067811865476, 0.7071067811865475)

214 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 17:26:07 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/441
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):
# UNIXコマンドのgrep(指定したファイルを読み込み、指定した文字列とマッチする行を出力するコマンド)と同じ動作をするプログラムを実装しなさい。
# ただし、オプションなどの副次的な機能はつけなくてもよい。
#



215 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 19:54:29 ]
>>207
使用言語:Lua

a={30,50,50,70,50,100,90,70,80,60}
b={}
for i,v in pairs(a) do
r=1
for j,w in pairs(a) do
if v<w then r=r+1 end
end
b[i]=r
end
for i,v in pairs(b) do
print(a[i]..' '..v)
end


30 10
50 7
50 7
70 4
50 7
100 1
90 2
70 4
80 3
60 6

216 名前:デフォルトの名無しさん mailto:sage [2010/07/03(土) 22:37:10 ]
>>186
% Prolog

'極座標(r,θ)の値を入力すると、直交座標(x,y)に変換する'(_r,_θ,_x,_y) :-
    _x is _r * cos(4 * atan(1) * _θ / 180),
    _y is _r * sin(4 * atan(1) * _θ / 180).


217 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 06:18:13 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/457
# [1] 授業単元:プログラム演習
# [2] 問題文(含コード&リンク):
# 以下のプログラムに、下に示す二つの関数を実装し、組み込みなさい。
# ファイル中に保存するデータはアスキー形式でも、バイナリ形式でもどちらでも構わないものとする。
# ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10778.txt
# ・構造体Employee型のデータが順に保存されているファイルからデータを読み込む 数。
# ・作成したデータをファイルに書き出す関数。
# 例えば、構造体Employeeを下に示すものと同じ定義にしたとする。
# この構造体に従ったASCII形式のデータベースファイルを読み込み、
# 社員の追加や、給与の変更をした後、同様なデータベースファイルとして保存できるようにしなさい(もちろん、バイナリ形式のファイルにしても構わない)。 # [構造体Employeeの例]
# typedef struct {
# char name[16];
# int age;
# int salary;
# } Employee;
#
# [データベースファイルの例]
# TANAKA 32 620
# SUZUKI 25 500
# CHIBA 35 650
# NAKAMURA 50 1000
# IIDA 45 800





218 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 08:26:53 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/461
# [1] 授業単元: プログラミング実験
# [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10780.zip
# 【問題3-01】 50点 高速整列算法の挿入法の効率化
# 半乱順列に対する、クイック・マージ・ヒープの3つの高速整列算法の性能を評価する。再帰法を使った実装でよい。
# 計算量は、処理時間で計測する。データ数nを100〜10000の範囲で変更してみる。両対数グラフを描くとよい。
# 各条件で、10000回以上の試行を行い、平均と分散を求め、度数分布表も作成してみる。
# 必要なプログラムを作成し、データを用意する。シミュレーション実験を行い、実行結果を数表やグラフで示し、考察を述べる。
# (1) 確率指定 p の増大による処理時間 t への影響を調べる。各整列算法について、グラフを描き、増加の傾向を考察する。
# (2) 回数指定 m の増大による処理時間 t への影響を調べる。各整列算法について、グラフを描き、増加の傾向を考察する。
# 【問題3-02】 50点 クイックソートの効率化
# クイックソートの効率化を実装し、実行結果を考察する。
# (1) クイックソートは、振分処理の基準値によって、効率性が大きく変わってしまう。片寄った基準値では、非常に効率が悪くなる。
# そこで、部分列の先頭要素を選ぶのではなく、先頭・中央・末尾の要素の平均値または中央値を基準値にする手法が用いられる。
# この手法によって、平均計算量がどれくらい効率化されるか調べよ。
# (2) クイックソートは、データ数 nに対して、n×log(n) 程度の計算量となる
# データ数 が大きいときは効率的であるが、小さいときはかえって効率が悪くなる。
# そこで、データ数が m 以下になった部分列に対して、単純挿入法に切り替える手法が用いられる。



219 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 08:28:30 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/466
# どなたか教えてください。ずっと考えてたけど、答えがわかりませんorz。
#
# <標準関数>文字列と削除文字列を入力し、文字列中から削除文字列を削除しなさい。
# ※配列の使用は2つだけ。
# 例) 文字列入力→ABCDEFAABCDABC
#    削除文字列→ABC
#    結果文字列→DEFAD
#
# どなたか教えてください、お願いします。



220 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 10:01:14 ]
>>219
使用言語:J

f=:dyad def 'y{~<<<,(i.#x)+/~I.x E.y'

'ABC' f 'ABCDEFAABCDABC'
DEFAD
'ABA' f 'ABABABC'
BC

二番目の例のように検索文字列が重なった場合どこまで消す?

221 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 13:25:52 ]
pc11.2ch.net/test/read.cgi/db/1274791771/243
# プログラム言語で以下の集約を定義しなさい。
# SELECT CASE pref_name
#        WHEN '徳島' THEN '四国'
#        WHEN '香川' THEN '四国'
#        WHEN '愛媛' THEN '四国'
#        WHEN '高知' THEN '四国'
#        WHEN '福岡' THEN '九州'
#        WHEN '佐賀' THEN '九州'
#        WHEN '長崎' THEN '九州'
#        ELSE 'その他' END AS district,
#     SUM(population)
#  FROM PopTbl
#  GROUP BY CASE pref_name
#        WHEN '徳島' THEN '四国'
#        WHEN '香川' THEN '四国'
#        WHEN '愛媛' THEN '四国'
#        WHEN '高知' THEN '四国'
#        WHEN '福岡' THEN '九州'
#        WHEN '佐賀' THEN '九州'
#        WHEN '長崎' THEN '九州'
#        ELSE 'その他' END;


222 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 15:20:36 ]
>>219
% Prolog

文字列中から削除文字列を除去する(_文字列,_削除する文字列,_削除された文字列) :-
    sub_atom(_文字列,A,Len,B,_削除する文字列),
    sub_atom(_文字列,0,A,_,S1),
    sub_atom(_文字列,A+Len,B,_,S2),
    文字列中から削除文字列を削除する(S2,_削除する文字列,S3),
    concat_atom([S1,S3],_削除された文字列).
文字列中から削除文字列を除去する(S,_,S).

% >>220 の第二番目の解釈、挑戦してみたが、結構複雑。


223 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 15:23:07 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/475
# [1] 授業単元:プログラミング
# [2]問題文:
# ファイルseiseki.txt から氏名と点数を読み込んで、成績順に並べ替え、結果を画
# 面に表示するプログラムを作成せよ。
# ・氏名は2次元配列、点数は1次元配列に格納する。
# ・ データの並べ替えには単純挿入法、単純選択法またはバブルソートを使用する。
# ・ 文字列 x[]と文字列y[]の入れ替えは、文字列操作関数strcpy を用いて行う。
# strcpy(z,x); strcpy(x,y); strcpy(y,z);
#



224 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 16:14:09 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/481
# [1] 授業単元:方程式の解
# [2] 問題文(含コード&リンク):方程式exp(-x^2/2)=0.5の解を求める
#



225 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 18:38:36 ]
pc12.2ch.net/test/read.cgi/tech/1267796762/230
# 【 課題 】テキストファイルを読み込み行毎に出現頻度を統計するプログラムを作れ
# 【 形態 】1. Javaアプリケーション(main()で開始)
# 【 GUI  】4. 制限なし
# 【 期限 】7月6日
# 【 Ver  】"1.6.0_20"
# 【 補足 】
# 例:
# ああA1111あa1AAAa
# BBBbいbいbB2
#
# という2行のテキストファイルであれば
#
# 1. 1,5 A,4 あ,3 a,2
# 2. B,4 b,3 い,2 2,1
#
# という風に表示します。


226 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 18:43:07 ]
pc12.2ch.net/test/read.cgi/tech/1267796762/231
# 【 課題 】()が使える電卓に改造しなさい。(再帰メソッド使用)
# 【 形態 】2. Applet
# 【 GUI  】2. Swing
# 【 期限 】7/5
# 【 Ver  】1.6.0_15
# 【 補足 】()以外の部分は完成しているのですが、()の部分をどう作って
# いいかわからず困っています。「再帰メソッド」というのも色々調べてみましたが、
# 上手く理解できません。以下がソースです。
# nojiriko.asia/data/s0.txt にコピーさせていただきました。


227 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 23:31:37 ]
>>225
% Prolog (その一)

テキストファイルを読み込み行毎に出現頻度を統計する(_テキストファイル) :-
    get_lines(_テキストファイル,Lines),
    行毎に出現頻度を統計する(Lines,_行統計ならび),
    行統計ならびを表示する(_行統計ならび).

行毎に出現頻度を統計する([],[]) :- !.
行毎に出現頻度を統計する([_行文字列|R1],[_降順に整列した出現頻度ならび|R2]) :-
    文字毎の出現頻度を調べる(Chars,[],_出現頻度ならび),
    降順に整列(_出現頻度ならび,_降順に整列した出現頻度ならび),
    行毎に出現頻度を統計する(R1,R2).

文字毎の出現頻度を調べる([],_出現頻度ならび,_出現頻度ならび) :-
文字毎の出現頻度を調べる([A|R1],L1,_出現頻度ならび) :-
    \+(member([_,A],L1)),
    文字毎の出現頻度を調べる(R1,[[1,A]|L1],_出現頻度ならび),!.
文字毎の出現頻度を調べる([A|R1],L1,_出現頻度ならび) :-
    append(L0,[[N1,A]|L2],L1),
    N2 is N1 + A,
    append(L1,[[N2,A]|L2],L3),
    文字毎の出現頻度を調べる(R1,L3,_出現頻度ならび),!.




228 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 23:34:57 ]
>>225
% Prolog (その二)

降順に整列(L1,L2) :- sort(L1,L3),reverse(L3,L2).

行統計ならびを表示する(_行統計ならび) :-
    append(L0,[_行統計|L1],_行統計ならび),
    length(L0,Len),
    _行番号 is Len + 1,write('%t.'),
    行の統計を表示する(_行統計),
    L1 = [].

行の統計を表示する([]) :- write('\n'),!.
行の統計を表示する([[N,A]|R]) :-
    write_formatted(' %t,%t',[A,N]),
    行の統計を表示する(R).



229 名前:デフォルトの名無しさん mailto:sage [2010/07/04(日) 23:37:49 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/501
# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):
# 次式の値を返す関数を作成せよ。
# f(x)=e^{-x} cos(2πx)
# その関数を用いて0≦x≦3の間で0.1刻みで計算し、結果をリダイレクトで
# ファイルに記録せよ。その結果をgnuplotでグラフにして示せ。
#



230 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 00:18:05 ]
>>221
% Prolog

地方で集約する(_地方,_人口) :-
    findsetof(_地方,(
          'PopTbl'(_pref_name,_population),
          地方(_地方,_pref_name)),
         L1),
    append(_,[_地方|_],L1),
    findsum(_population,(
          'PopTbl'(_pref_name,_population),
          地方(_地方,_pref_name)),
        _人口).

地方(四国,徳島).
地方(四国,香川).
地方(四国,愛媛).
地方(四国,高知).
地方(九州,福岡).
地方(九州,佐賀).
地方(九州,長崎).


231 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 04:59:32 ]
>>229
% Prolog

program :-
    M is truncate((3 - 0) / 0.1),
    for(0,N,M),
    _x is N * 0.1,
    Y is exp(1) ^ (-1 * _x) * cos(2 * pi * _x),
    write_formatted('%t\n',[Y]),
    N = M .



232 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 05:30:09 ]
>>229
% Prolog

[IF/Prolog]# prolog -c temp.pro >temp.txt
[SWI-Prolog]# pl -s temp.pro >temp.txt

% temp.pro

program :-
    'c137_501:f(x)=e^{-x} cos(2πx) その関数を用いて0≦x≦3の間で0.1刻みで計算'.

'c137_501:f(x)=e^{-x} cos(2πx) その関数を用いて0≦x≦3の間で0.1刻みで計算' :-
    M is truncate((3 - 0) / 0.1),
    for(0,N,M),
    _x is N * 0.1,
    Y is exp(1) ^ (-1 * _x) * cos(2 * pi * _x),
    write_formatted('%t\n',[Y]),
    N = M .


233 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 05:34:16 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/504
# [1]授業単元:プログラミング演習
# [2]問題文;離散探索木(26進)と外部ハッシュ法の比較(探索関数)
#  キー:   文字列
#  使用ファイル: wordE100KR.dat
#  上記ファイルを読み込み、通常の配列に格納する。
#  この配列から要素を読み込み、分離連鎖法および離散探索木(26進)を生成する。
#  格納された要素と同一の要素集合すなわち、配列に格納された用語集合に対して、1万語毎に探索を行い、照合回数、および探索時間を測定する。
#  結果として、照合回数について20個のデータ(2×10)、同様に探索時間について20
個のデータ(2×10)が得られる。
#  これらのデータをExcelに格納し、表、グラフを作成し、分析せよ。



234 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 06:00:39 ]
>>232
% Prolog "-g program " が必要だった。

[SWI-Prolog]# pl -s temp.pro -g program >temp


235 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 12:42:13 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/506
# [1] 授業単元: C言語プログラミング
# [2] 問題文メモリや実行時間の許容範囲内の、最大完全数、最大友愛数、および最大婚約数を算出プログラムを作成
#



236 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 12:46:03 ]
pc12.2ch.net/test/read.cgi/tech/1267796762/233
# 【 課題 】部分一致文字列の探索関数の比較(配列‐二分探索とTrie(26進))
#  作成関数:   追加、探索
#  キー:   文字列
#  使用ファイル: wordE100KR.dat
# ・二分探索法を改良し、前方一致(例: info?)を実現する関数を作成する。
# ・多分探索木の巡回関数に基づき、部分木出力関数をTrie(26進)に適用し、前方一致(例: info?)を実現する関数(部分木巡回‐出力関数)を作成する。
# ・特定の部分文字集合(100)に対し、比較(照合)回数、および出力時間を測定し、これらの結果を、表、グラフに表し、分析する。
# 【 形態 】1. Javaアプリケーション(main()で開始)
# 【 GUI  】4. 制限なし
# 【 期限 】7月12日
# 【 Ver  】1.6.0_15
# 【 補足 】参照ファイルはアップしてあります。


237 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 15:08:39 ]
>>233
% Prolog (その一)

分離連鎖法による文字列の検索(_文字列,_付加情報) :-
    atom_codes(_文字列,Codes),
    加算(Codes,Y),
    _ハッシュ値 is truncate(Y) mod 26,
    分離連鎖(_ハッシュ値,L),
    append(_,[[_文字列|_付加情報]|_],L).

分離連鎖法による文字列の追加(_文字列,_付加情報) :-
    atom_codes(_文字列,Codes),
    加算(Codes,Y),
    _ハッシュ値 is truncate(Y) mod 26,
    retract(分離連鎖(_ハッシュ値,L)),
    asserta(分離連鎖(_ハッシュ値,[[_文字列|_付加情報]|L])).

分離連鎖(0,[]). 分離連鎖(1,[]). 分離連鎖(2,[]).
分離連鎖(3,[]). 分離連鎖(4,[]). 分離連鎖(5,[]).
分離連鎖(6,[]). 分離連鎖(7,[]). 分離連鎖(8,[]).
分離連鎖(9,[]). 分離連鎖(10,[]). 分離連鎖(11,[]).
分離連鎖(12,[]). 分離連鎖(13,[]). 分離連鎖(14,[]).
分離連鎖(15,[]). 分離連鎖(16,[]). 分離連鎖(17,[]).
分離連鎖(18,[]). 分離連鎖(19,[]). 分離連鎖(20,[]).
分離連鎖(21,[]). 分離連鎖(22,[]). 分離連鎖(23,[]).




238 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 15:24:59 ]
>>233
% Prolog 最後一行が千切れてしまった。

分離連鎖(24,[]). 分離連鎖(25.[]).


239 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 15:39:40 ]
>>233
% Prolog

分離連鎖の初期化(_ハッシュ表の長さ) :-
    abolish(分離連鎖/2),
    abolish(ハッシュ表の長さ/1),
    assertz(ハッシュ表の長さ(_ハッシュ表の長さ)),
    M is _ハッシュ表の長さ - 1,
    for(0,N,M),
    assertz(分離連鎖(N,[])),
    N = M,!.

分離連鎖法による文字列の検索(_文字列,_付加情報) :-
    atom_codes(_文字列,Codes),
    加算(Codes,Y),
    ハッシュ表の長さ(_ハッシュ表の長さ),
    _ハッシュ値 is truncate(Y) mod _ハッシュ表の長さ,
    分離連鎖(_ハッシュ値,L),
    append(_,[[_文字列|_付加情報]|_],L).

分離連鎖法による文字列の追加(_文字列,_付加情報) :-
    atom_codes(_文字列,Codes),
    加算(Codes,Y),
    ハッシュ表の長さ(_ハッシュ表の長さ),
    _ハッシュ値 is truncate(Y) mod _ハッシュ表の長さ,
    retract(分離連鎖(_ハッシュ値,L)),
    asserta(分離連鎖(_ハッシュ値,[[_文字列|_付加情報]|L])).


240 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 17:27:48 ]
>>229
使用言語:J

load 'plot'
f=:monad def '(^ -y) * cos 2p1 * y'
smoutput '10.5'(8!:2)(,.f)"0 range 0 3 0.1
exit ''

上のコードをコンソール版で実行すれば、標準出力に下のようなデータが出力される。
(8!:2)のformatは、マイナス符号を変換してくれるようだ。

0.00000 1.00000
0.10000 0.73203
0.20000 0.25300
0.30000 -0.22893
0.40000 -0.54230
:
2.90000 0.04451
3.00000 0.04979


J言語のグラフ機能をつかう場合は
load 'plot'
plot (range 0 3 0.1) ; '(^ -y) * cos 2p1 * y'

241 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 18:18:25 ]
pc12.2ch.net/test/read.cgi/tech/1267796762/241
# 【 課題 】1.B木を実現するプログラムを作成しなさい。ただし、プログラムの
最初で各節点が持つ最大の子の数(m)を入力して、プログラムを開始する。


242 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 21:09:35 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/519
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク): 四則演算と平方根を求める事が出来る電卓プログラムを作成せよ.
#



243 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 04:13:13 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/523
# [1] 授業単元: Visual Studio 入門
# [2] 問題文 3問ほどあるのでリンクを
# ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10782.txt
#
# 問題1
# 下に示すように,非負の整数値を読み込んで,その数を逆順に表示するプログラムを作成せ
# よ.なお,負の値を読み込んだ場合は,再入力を促すメッセージを表示すること.
#
#
# 非負の整数を入力してください: 1963
# 1963 を逆から読むと3691 です.
#



244 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 04:14:05 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/523
# [1] 授業単元: Visual Studio 入門
# [2] 問題文 3問ほどあるのでリンクを
# ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10782.txt
#
# 問題2
# 下に示すように,非負の整数を次々と読み込んでいき,各値の二乗値の和を表示するプログ
# ラムを作成せよ.なお,整数の読み込みは,負の整数を読み込んだ段階で終了するものとし,
# その数の二乗値の和は加算しないものとする.
#
# 整数を入力してください
# 整数1 : 3
# 整数2 : 5
# 整数3 : -1
# 二乗値の合計は34 です.
#



245 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 04:15:18 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/523
# [1] 授業単元: Visual Studio 入門
# [2] 問題文 3問ほどあるのでリンクを
# ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10782.txt
#
# 問題3
# 下に示すように,行数と列数を読み込み,1 行目には1234567890…を列数の個数だけ,2 行
# 目には2345678901…を列数の個数だけ,…と表示するプログラムを作成せよ.
#
# 何行ですか: 7
# 何列ですか: 12
# 123456789012
# 234567890123
# 345678901234
# 456789012345
# 567890123456
# 678901234567
# 789012345678


246 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 04:17:51 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/534
# [1] 授業単元: Visual Studio 入門
# [2] 問題 半乱順列の関数作成



247 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 04:19:01 ]
pc12.2ch.net/test/read.cgi/tech/1276810079/535
# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):data.txtに書かれている氏名と成績を読み込み、氏名を2次元配列、成績を1次元配列に格納せよ。
#





248 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 04:29:25 ]
pc11.2ch.net/test/read.cgi/db/1274791771/248
# TABLE test
# id | data
# ---+------
# 100 | AAA
#
# TABLE hoge
# id | value
# ---+------
# 100 | 10
# 100 | 20
#
# TABLE 100
# id |val1| val2
# ---+---+----
# 100 | 20 | 40
#
# SELECT a.id, test.data, a.cnt + b.cnt + c.cnt
# FROM
# (SELECT id, SUM( aa.val1 ) cnt FROM (SELECT id, val1 FROM `100`)aa)a,
# (SELECT id, SUM( bb.val2 ) cnt FROM (SELECT id, val2 FROM `100`)bb)b,
# (SELECT id, SUM( value ) cnt FROM hoge WHERE id = 100)c,test
# WHERE a.id = c.id AND test.id = 100
#
# 欲しい結果
# id data a.cnt + b.cnt + c.cnt
# ----------------------------
# 100 AAA 180

#


249 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 05:01:23 ]
pc12.2ch.net/test/read.cgi/tech/1247100724/713
# 宿題片づけスレで省られたのでお願いします。
# C言語初級者、画像処理初心者です。
#
# [1] 授業単元:画像処理
# [2] 問題文(含コード&リンク):16×16サイズの白黒ビットマップ画像を読み込んで、
#                  上下反転させた画像をビットマップで保存するプログラムを作成。
#



250 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 06:51:56 ]
>>243
% Prolog

'非負の整数値を読み込んで,その数を逆順に表示する' :-
    催促付き整数入力('非負の整数を入力してください: ',N),
    number_chars(N,L1),
    reverse(L1,L2),
    number_chars(L2,N2),
    write_formatted(' %t を逆から読むと%t です.\n',[N,N2]).

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

'非負の整数値を読み込んで,その数を逆順に表示する' :-
    催促付き整数入力('非負の整数を入力してください: ',N),
    非負の整数値から逆順整数を得る(N,0,N2),
    write_formatted(' %t を逆から読むと%t です.\n',[N,N2]).

非負の整数値から逆順整数を得る(0,X,X).
非負の整数値から逆順整数を得る(N,Y1,X) :-
    Y2 is Y1 * 10 + (N mod 10),
    N1 is N // 10,
    非負の整数値から逆順整数を得る(N1,Y2,X).


251 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 07:08:51 ]
>>244
% Prolog

'非負の整数を次々と読み込んでいき,各値の二乗値の和を表示する' :-
    write('整数を入力してください\n'),
    findsum(S,(非負の整数を次々と読み込んでいき(1,X),(X < 0,!,fail;S is X *X)),_二乗和),
    write_formatted('二乗値の合計は%t です.\n',[_二乗和]).

非負の整数を次々と読み込んでいき(N,X) :-
    write_formatted('整数%t : ',[N]),get_integer(X).
非負の整数を次々と読み込んでいき(N,X) :-
    N2 is N + 1,
    非負の整数を次々と読み込んでいき(N2,X).



252 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 07:59:21 ]
>>245
% Prolog

'行数と列数を読み込み,1 行目には1234567890…を列数の個数だけ,2 行目には2345678901…を列数の個数だけ,…と表示する' :-
    '行数と列数を読み込み(_行数,_列数),
    '1から始める数字循環を生成'(_行数,_列数,L),
    length(L1,_列数),
    append(L0,L2,L),
    行数分表示する(L0,L1,L2).

行数と列数を読み込み(_行数,_列数) :-
    write('行数を入力してください : '),get_integer(_行数),
    write('列数を入力してください : '),get_integer(_列数).

'1から始める数字循環を生成'(_行数,_列数,L) :-
    M is _行数 + _列数,
    '数字循環を生成'(1,M,L).

'数字循環を生成'(N,M,[]) :- N > M,!.
'数字循環を生成'(N,M,[X|R]) :- X is N mod 10,N2 is N + 1,'数字循環を生成'(N2,M,R).

行数分表示する(L0,L0,L2) :- !.
行数分表示する(L0,L1,L2) :-
    append(L1,_,L2),
    concat_atom(L1,S),
    write_formatted('%t\n',[S]),
    fail.


253 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 08:04:52 ]
>>252 (>>245)
% Prolog 行数分表示する/3に誤りがあった。

'行数と列数を読み込み,1 行目には1234567890…を列数の個数だけ,2 行目には2345678901…を列数の個数だけ,…と表示する' :-
    '行数と列数を読み込み(_行数,_列数),
    '1から始める数字循環を生成'(_行数,_列数,L),
    length(L1,_列数),
    append(L0,L2,L),
    行数分表示をする(_行数,L0,L1,L2).

行数と列数を読み込み(_行数,_列数) :-
    write('行数を入力してください : '),get_integer(_行数),
    write('列数を入力してください : '),get_integer(_列数).

'1から始める数字循環を生成'(_行数,_列数,L) :-
    M is _行数 + _列数,
    '数字循環を生成'(1,M,L).

'数字循環を生成'(N,M,[]) :- N > M,!.
'数字循環を生成'(N,M,[X|R]) :- X is N mod 10,N2 is N + 1,'数字循環を生成'(N2,M,R).

行数分表示する(_行数,L0,_,_) :- length(L0,_行数),!.
行数分表示する(_,L0,L1,L2) :-
    append(L1,_,L2),
    concat_atom(L1,S),
    write_formatted('%t\n',[S]),
    fail.


254 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 08:28:59 ]
>>248
% Prolog

'欲しい結果 id  data  a.cnt + b.cnt + c.cnt' :-
    test(_id,_data),
    findsum(U,(findsum(_value,hoge(_id,_value),U1),findsum(_val3,('100'(_id,_val1,_val2),_val3 is _val1 + _val2),U2),U is U1 + U2),S).
    write('id  data  a.cnt + b.cnt + c.cnt\n'),
    write_formatted('%t %t %t\n',[_id,_data,S]),!.


255 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 10:45:25 ]
>>247
% Prolog 例によって、配列をリストに変更して解釈。

'data.txtに書かれている氏名と成績を読み込み、氏名を2次元配列、成績を1次元配列に格納する' :-
    get_split_lines('data.txt',[' '],LL),
    '氏名を2次元配列、成績を1次元配列に格納する'(LL,_氏名ならび,_成績ならび
),
    氏名ならび・成績ならびを格納する(_氏名ならび,_成績ならび).

'氏名を2次元配列、成績を1次元配列に格納する'([],[],[]).
'氏名を2次元配列、成績を1次元配列に格納する'([[_氏名,_成績]|R1],[_氏名文字ならび|R2],[_成績|R3]) :-
    atom_chars(_氏名,_氏名文字ならび),
    '氏名を2次元配列、成績を1次元配列に格納する'(R1,R2,R3).

氏名ならび・成績ならびを格納する(_氏名ならび,_成績ならび) :-
    assertz(氏名ならび(_氏名ならび)),
    assertz(成績ならび(_成績ならび)).


256 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 10:54:55 ]
>>255 (>>247)
% Prolog 表示方法をちょっと工夫してみる。

'data.txtに書かれている氏名と成績を読み込み、氏名を2次元配列、成績を1次元配列に格納する' :-
                   get_split_lines('data.txt',[' '],LL),
    '氏名を2次元配列、成績を1次元配列に格納する'(LL,_氏名ならび,_成績ならび,
          氏名ならび・成績ならびを格納する(_氏名ならび,_成績ならび).


    '氏名を2次元配列、成績を1次元配列に格納する'([],[],[]).
    '氏名を2次元配列、成績を1次元配列に格納する'([[_氏名,_成績]|R1],[_氏名文字ならび|R2],[_成績|R3]) :-
                     atom_chars(_氏名,_氏名文字ならび),
    '氏名を2次元配列、成績を1次元配列に格納する'(R1,R2,R3).


          氏名ならび・成績ならびを格納する(_氏名ならび,_成績ならび) :-
                       assertz(氏名ならび(_氏名ならび)),
                       assertz(成績ならび(_成績ならび)).


257 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 10:59:41 ]
>>256 (>>247)
% Prolog 失敗。やり直し。やはり、うまくいかない。

'data.txtに書かれている氏名と成績を読み込み、氏名を2次元配列、成績を1次元配列に格納する' :-
                   get_split_lines('data.txt',[' '],LL), 
    '氏名を2次元配列、成績を1次元配列に格納する'(LL,_氏名ならび,_成績ならび, 
          氏名ならび・成績ならびを格納する(_氏名ならび,_成績ならび). 


    '氏名を2次元配列、成績を1次元配列に格納する'([],[],[]). 
    '氏名を2次元配列、成績を1次元配列に格納する'([[_氏名,_成績]|R1],[_氏名文字ならび|R2],[_成績|R3]) :- 
                     atom_chars(_氏名,_氏名文字ならび), 
    '氏名を2次元配列、成績を1次元配列に格納する'(R1,R2,R3). 


          氏名ならび・成績ならびを格納する(_氏名ならび,_成績ならび) :- 
                       assertz(氏名ならび(_氏名ならび)), 
                       assertz(成績ならび(_成績ならび)). 




258 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 11:04:03 ]
>>257
Prologのプログラムを読む場合の注意は、引数の中にある論理変数の変化に集中するから、
そこの部分の桁位置を揃えるようにしてみたい。>>256->>257は失敗。


259 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 12:07:16 ]
>>258
% Prolog 全体として書の雰囲気を持つ算譜にしたい。
nojiriko.asia/prolog/c137_535.html







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<373KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef