いろんな言語で宿題ス ..
555:デフォルトの名無しさん
10/02/01 16:01:21
スレリンク(tech板:406番)
# [1] 授業単元:プログラミング応用演習
# [2] 問題文(含コード&リンク): URLリンク(mikilab.doshisha.ac.jp)
# [5] その他の制限: ライブラリは使わず。問題文のリンク先のプログラム(DIRECT)を組む。
# よろしくお願いします。できれば解説を付けてくださると助かります。
[2]のサイトをコピーすることは困難でした。直接参照してください。
556:デフォルトの名無しさん
10/02/01 17:07:57
>>537
% Prolog (その一)
% consult/1,reconsult/1,assertz/1,retract/1,clause/2,listing/1 を最終的に使用します。
% 実務ではもっとずっと丁寧にチェックしながら進みます。ここでは簡単に
住所の登録 :-
名字は(_名字),
名前は(_名前),
郵便番号は(_郵便番号),
住所は(_住所),
電話番号は(_電話番号),
メールアドレスは(_メールアドレス),
住所の登録((_名字,_名前,_郵便番号,_住所,_電話番号,_メールアドレス),!.
住所の登録(_名字,_名前,_郵便番号,_住所,_電話番号,_メールアドレス) :-
\+(住所録(_名字,_名前,_郵便番号_1,_住所_1,_電話番号_1,_メールアドレス_1)),
assertz(住所録(_名字,_名前,_郵便番号,_住所,_電話番号,_メールアドレス)),
write('登録を完了しました\n'),!.
住所の登録(_名字,_名前,_郵便番号,_住所,_電話番号,_メールアドレス) :-
住所録(_名字,_名前,_郵便番号_1,_住所_1,_電話番号_1,_メールアドレス_1),
この氏名は既に登録がありますが(_名字,_名前,_郵便番号_1,_住所_1,_電話番号_1,_メールアドレス_1,_郵便番号,_住所,_電話番号,_メールアドレス),!.
この氏名は既に登録がありますが(_名字,_名前,_郵便番号_1,_住所_1,_電話番号_1,_メールアドレス_1,_郵便番号,_住所,_電話番号,_メールアドレス) :-
write_formatted('%t %tという氏名は以下の通り既に登録がありますが\n%t %t %t%t %t %t',[_名字,_名前,_名字,_名前,_郵便番号_1,_住所_1,_電話番号_1,_メールアドレス_1]),
write('別人と考えて登録してよいでしょうか Y or N でお答えください : '),
get_line(Line),
この氏名は既に登録がありますが(Line,_名字,_名前,_郵便番号,_住所,_電話番号,_メールアドレス).
557:デフォルトの名無しさん
10/02/01 20:23:21
スレリンク(tech板:409番)
# [1] C言語演習
# [2]
# int x[10]={-1,2,-3,4,-5,6,-7,8,-9,10}
# int y[10]={-5,-4,-3,-2,-1,1,2,3,4,5}
# が与えられている。
# 値x[0]*y[0]+2*x[1]*y[1]+3*x[2]*y[2]+4*x[3]*y[3]+5*x[4]*y[4]+6*x[5]*y[5]
# が最大/最小になるようにx,yの各要素を並べ替えたものを出力するプログラム
558:デフォルトの名無しさん
10/02/01 21:33:56
>>557 の訂正として出されましたが、それぞれ独立の問題としましょう。
スレリンク(tech板:409番)
# [1] C言語演習
# [2]
# int x[10]={-1,2,-3,4,-5,6,-7,8,-9,10}
# int y[10]={-5,-4,-3,-2,-1,1,2,3,4,5}
# が与えられている。
# 値x[0]*y[0]-2*x[1]*y[1]+3*x[2]*y[2]-4*x[3]*y[3]+5*x[4]*y[4]-6*x[5]*y[5]+7*x[6]*y[6]-8*x[7}*y[7]+9*x[8]}*y[8]-10*x[9]*x[9]
# が最大/最小になるようにx,yの各要素を並べ替えたものを出力するプログラム
559:デフォルトの名無しさん
10/02/01 21:42:32
スレリンク(tech板:418番)
# [1] C言語プログラミング演習(大学専門課程選択教科期末課題)
# [2]URLリンク(ime.nu)
.txt
# 以下のSQL文で定義されるテーブルに対する
# SQL操作をテーブルに対応する適当な構造体配列
# struct_SEISEKIHYOUを定義することにより
# 1関数として実装せよ。
# 関数は
# list(struct_SEISEKIHYOU* table,int N);
# とする。処理効率を十分に考えること。
#
# テーブル定義:
# CREATE TABLE SEISEKIHYOU (
# TANNINN VARCHAR, //担任教師
# NAME VARCHAR,//生徒名
# KOKUGO INTEGER,//国語得点
# SUUGAKU INTEGER//数学得点
# RIKA INTEGER,//理科得点
# SYAKAI INTEGER,//社会得点
# EIGO INTEGER,//英語得点
# )
#
560:デフォルトの名無しさん
10/02/01 21:44:36
>>559 問題のつづきです。
#
# SQL操作 SELECTでリストアップされる項目リスト
# をコンソール出力させる。
#
# SELECT X.TANNINN,X.NAME,X.SUUGAKU,X.KOKUGO
# FROM SEISEKIHYOU AS X
# WHERE
# SUUGAKU>=KOKUGO
# AND
# SUUGAKU>=RIKA
# AND
# SUUGAKU>=SYAKAI
# AND
# SUUGAKU>=EIGO
# AND
# (KOKUGO+SUUGAKU+RIKA+SYAKAI+EIGO)/5.0
# >=(SELECT (AVG(KOKUGO)+AVG(SUUGAKU)+AVG(RIKA)
# +AVG(SYAKAI)+AVG(EIGO))/5.0 FROM SEISEKIHYOU
# GROUP BY TANNINN) HAVING COUNT(*)>=
# (SELECT COUNT(*) FROM SEISEKHYOU GROUP BY
# TANNINN HAVING TANNINN=X.TANNNIN)
#
# ORDER BY X.TANNIN,X.NAME,X.SUUGAKU;
561:デフォルトの名無しさん
10/02/02 03:12:54
スレリンク(tech板:420番)
# [1] 授業単元:プログラミング実践
# [2] 問題文
# アフィン変換のプログラムを作成し、下の図の真ん中を座標の中心にして90°回転した結果を出力せよ。
# (図)affin.txt
# 00000
# 00000
# 11111
# 00000
# 00000
#
562:デフォルトの名無しさん
10/02/02 04:30:07
>>538
% Prolog (その一)
program :-
user_parameters([_ファイル名]),
'EOFがコントロールZであるファイルの読み込み'(Lines),
tell(_ファイル名),
write_formatted('%10s %4s\n',[名前,年齢]),
'名前・年齢の行表示'(Lines),
told.
'EOFがコントロールZであるファイルの読み込み'(Lines) :-
get_code(Code),
'EOFがコントロールZであるファイルの読み込み'(Code,Lines),!.
'EOFがコントロールZであるファイルの読み込み'(-1,[]) :- !.
'EOFがコントロールZであるファイルの読み込み'(Code,[[_名前,_年齢]|R]) :-
'EOFがコントロールZであるファイルの行読み込み'(Code,RCode,Codes),
atom_codes(Line,Codes),
split(Line,[' ',','],[_名前,_年齢]),
'EOFがコントロールZであるファイルの読み込み'(RCode,R).
'EOFがコントロールZであるファイルの行読み込み'(-1,-1,[]) :- !.
'EOFがコントロールZであるファイルの行読み込み'(26,-1,[]) :- !.
'EOFがコントロールZであるファイルの行読み込み'(10,Code2,[]) :-
ひとつ先読みが同時に終了ステータスにもなる(Code2),!.
'EOFがコントロールZであるファイルの行読み込み'(Code1,RCode,[Code1|R]) :-
get_code(Code2),
'EOFがコントロールZであるファイルの行読み込み'(Code2,RCode,R).
563:デフォルトの名無しさん
10/02/02 04:31:08
>>538
% Prolog (その二)
ひとつ先読みが同時に終了ステータスにもなる(Code2) :- get_code(Code2),!.
名前・年齢の行表示([]) :- !.
名前・年齢の行表示([[_名前,_年齢]|R]) :-
write_formatted('%12s%t\n',[_名前,_年齢]),
名前・年齢の行表示(R).
564:デフォルトの名無しさん
10/02/02 04:32:07
> EOFがコントロールZであるファイルの読み込み
w
565:デフォルトの名無しさん
10/02/02 04:36:16
>>564
やれやれww
566:デフォルトの名無しさん
10/02/02 04:53:35
スレリンク(tech板:556番)
# こんばんは.失礼します.
# 現在,次のような課題に取り組んでいます.
# もしよろしければこの難問をハックしていただけないでしょうか.
# (できればCで・・・)
#
# N個の要素があり,その,すべての組み合わせ(2^N組)に対して,
# それぞれに値が決まっているものとします.
# そして,ある組み合わせの値は,その組み合わせの中の部分集合の
# どんな和よりも大きいです.
#
# また0個の集合では値は0とします.
#
# こうした場合に,全ての組み合わせの値を以上のルールに則ったまま
# 乱数を用いて決定したいと考えています.
#
# 具体的には
# 要素が一つの組み合わせは乱数.たとえばAのみの集合の場合 v(A)=random
# 要素が2つでは,v(A,B)=v(A)+v(B) + random
# 3つでは,v(A,B,C) = max(v(A,B)+v(C), v(B,C)+v(A), v(C,A)+v(B)) + random
# となります.
#
# この方式で,全ての組み合わせに値を当てはめることを考えているのですが
# コードに落とし込むことが出来ません.
567:デフォルトの名無しさん
10/02/02 04:56:05
>>566 つづき
# 今のところ,各組み合わせを以下のような二進数で表そうと考えています.(N=3の場
合)
# 各行の一列目が1はAがその組み合わせにいることを意味し,
# 二列目はB,三列目はCを表しています.
#
# ABC V
# 000 0
# 001 rc
# 010 rb
# 011 ?
# 100 ra
# 101 ?
# 110 ?
# 111 ?
#
568:デフォルトの名無しさん
10/02/02 08:08:22
>>495
使用言語:J
f=: monad define
l=.(#y)-2
t=.(l,l)$ ucp' '
g=.}.}:y
y,(|:g),t,|.g),|.y
)
f ucp'今日は、晴れです。'
今日は、晴れです。
日 す
は で
、 れ
晴 晴
れ 、
で は
す 日
。すでれ晴、は日今
569:デフォルトの名無しさん
10/02/02 09:37:53
>>559
% Prolog
'SQL操作に対応する述語定義'(X) :-
findall([TANNINN,NAME,SUGAKU,KOKUGO],
(
findall(TANNINN,'SEISEKIHYOU'(TANNINN,_,_,_,_,_,_),L1),sort(L1,L2),
'SEISEKIHYOU'(TANNINN,NAME,KOKUGO,SUUGAKU,RIKA,SYAKAI,EIGO),
SUUGAKU>=KOKUGO,SUUGAKU >= RIKA,SUUGAKU>=SYAKAI,SUUGAKU>=EIGO,
U1 is (KOKUGO+SUUGAKU+RIKA+SYAKAI+EIGO)/5.0,
findall(AVGs,(member(TANNINN2,L2),findavg([KOKUGO2,SUUGAKU2,RIKA2,SYAKAI2,EIGO2],'SEISEKIHYOU'(TANNINN2,NAME2,KOKUGO2,SUUGAKU2,RIKA2,SYAKAI2,EIGO2),AVGs)),L3),
sum(L3,SUM1),
U2 is SUM1 / 5.0,
U1 >= U2,
findavg(KOKUGO3,('SEISEKIHYOU'(TANNINN,_,KOKUGO3,_,_,_,_),KOKUGOAVG),
KOKUGO > AVGKOKUGO)
),L4),
sort(L4,L5),
member(X,L5).
570:デフォルトの名無しさん
10/02/02 11:14:43
>>496
使用言語:J
f=: monad define
t=.<;._2 y
for_i. i.#t do.
smoutput (":>:i),':',":|.;i{t
end.
)
read=: 1!:1
f ucp read <'test2.txt'
1:で雨、は日昨。すでれ晴、は日今
2:後明。うょしで曇、は日明。たし
3:。かうょしで晴快、は日
571:デフォルトの名無しさん
10/02/02 11:18:26
>>556
何をいっているのかわからないので元スレを覗いてきます。
572:デフォルトの名無しさん
10/02/02 11:24:32
>>571
すみません。>>556ではなく>>566でした。
元スレでも質問者が問題を理解していないだろうと指摘されていました。
573:デフォルトの名無しさん
10/02/02 12:01:03
>>542
% Prolog 例えばこんな具合に書き進める。これからが大変。
販売員の正しい行動(_お客様,_お客様の要求,_販売員の正しい行動) :-
お客様の要求の要約(_お客様,_お客様の要求,_お客様の要求の要約),
お客様の要求の要約から販売員の正しい行動を考える(_お客様の要求の要約,_販売員の正しい行動).
お客様の要求の要約(_お客様,_お客様の要求,_お客様の要求の要約) :-
お客様がどんな方か明確にする(_お客様,_お客様の情報),
お客様が関心をお持ちの分野を明確にする(_お客様,_お客様の情報,_お客様が関心をお持ちの分野),
お客様の情報を解析して要求を要約する(_お客様,_お客様の要求,_お客様の情報,_お客様が関心をお持ちの分野,_お客様の要求の要約).
お客様がどんな方か明確にする(_お客様,_お客様の情報) :- 顧客情報(_お客様,_お客様の情報).
お客様が関心をお持ちの分野を明確にする(_お客様,_お客様の情報,_お客様が関心をお持ちの分野) :-
購買情報(_お客様,_過去の購買情報ならび,_過去のクレームならび),
関心のある分野診断(_お客様,_過去の購買情報ならび,_過去のクレームならび,_お客様が関心をお持ちの分野).
お客様の情報を解析して要求を要約する(_お客様,_お客様の要求,_お客様の情報,_お客様が関心をお持ちの分野,_お客様の要求の要約) :-
句構造解析(_お客様の要求,_解析された句構造),
句構造からキーワードを拾い出して意味を推定する(_解析された句構造,_キーワードならび,_お客様の要求の要約).
574:デフォルトの名無しさん
10/02/02 12:23:19
>>497
使用言語:J
f=: monad define
t=:<;._2 y
for_i. i.#t do.
s=.;i{t
w=.":#cutopen s
smoutput (":>:i),':',":s
smoutput '=>',(":#s),'文字、',w,'ワード'
end.
)
read=: 1!:1
f read<'test3.txt'
1:And friends just can't be found
=>31文字、6ワード
2:Like a bridge over troubled water
=>33文字、6ワード
3:I will lay me down
=>18文字、5ワード
575:デフォルトの名無しさん
10/02/02 14:05:25
>>498
使用言語:J
f=: monad define
'M D'=.y
t=.0 0 31 59 90 120 151 181 212 243 273 304 334
w=.ucp'木金土日月火水'
a=.(7|(M{t)+D){w
smoutput (":M),(ucp'月'),(":D),(ucp'日は、'),a,ucp'曜日です。'
)
f 9 15
9月15日は、水曜日です。
576:デフォルトの名無しさん
10/02/02 17:22:34
>>510
使用言語:J
f=: dyad def ';,|:(;/x),:;/y'
'asdfgh' f '123'
a1s2d3fgh
577:デフォルトの名無しさん
10/02/02 17:27:22
>>512
使用言語:J
test2=: dyad def 'y-:~.x'
'abccba' test2 'abc'
1
'abcbc' test2 'cba'
0
578:デフォルトの名無しさん
10/02/02 18:11:22
スレリンク(tech板:827番)
# 【 課題 】 URLリンク(ime.nu)
# 課題1
# ラーメンをオブジェクト指向で表現。
# 3種類程度のラーメンが表現できるようにする。
# フィールド、メソッド、オーバーロード、オーバーライド、カプセル化(他クラスからのアクセスはgetメソッドとsetメソッドのみ)が確実に表現されていること。
#
# 実行は以下のクラスから呼び出される
# class RamenExample{
# public static void main(String [] args){
# Ramen shouyuRamen = new Ramen("しょうゆ");
# Ramen misoRamen = new Ramen("みそ");
# Ramen shioRamen = new Ramen("しお");
# }
# }
#
# また、以下のクラスは生成が条件
# class Ramen{ }
# class Utsuwa{ }
# class Soup{ }
# class Pasta{ }
# class Topping{ }
579:デフォルトの名無しさん
10/02/02 18:14:12
スレリンク(tech板:827番)
# 【 課題 】 URLリンク(ime.nu)
# 課題2
# 以下の、お金をうけとり、おつりを計算するプログラムをつくりなさい。
#
# ここから、よくわからなくなりました。
# たとえば、6200円の買い物をして、7000円受とると、100円を8枚って計算したいです。
#
580:デフォルトの名無しさん
10/02/02 21:11:17
>>579
% Prolog (その一)
金種計算(0,_,[]) :- !.
金種計算(_おつり残高,[],[]) :- _おつり残高 > 0,write('レジ不足です\n'),!,fail.
金種計算(_おつり残高,[_金種|R1],[(_金種,B)|R2]) :-
_おつり残高 >= _金種,
金種が足りる(_おつり残高,_金種,N,B),
_残り金額 is _おつり残高 mod _金種,
金種計算(_残り金額,R1,R2).
金種計算(_おつり残高,[_金種|R1],[(_金種,N)|R2]) :-
_おつり残高 >= _金種,
金種が足りない(_おつり残高,_金種,N,B),
_残り金額 is _おつり残高 - _金種 * N,
金種計算(_残り金額,R1,R2).
金種計算(_おつり残高,[_金種|R1],R2) :-
_おつり残高 >= _金種,
\+(レジの中(_金種,N)),
金種計算(_おつり残高,R1,R2).
金種計算(_おつり残高,[_金種|R1],R2) :-
_おつり残高 < _金種,
金種計算(_おつり残高,R1,R2).
金種が足りる(_おつり残高,_金種,N,B) :-
レジの中(_金種,N),
B is _おつり残高 // _金種,
N >= B,!.
金種が足りない(_おつり残高,_金種,N,B) :-
レジの中(_金種,N),
B is _おつり残高 // _金種,
N < B,!.
581:デフォルトの名無しさん
10/02/03 03:21:11
>>579 (その二)
% Prolog こちらがトップレベル >>580 はレジの中身を更新するのを忘れている
おつりの計算(_お買い上げ金額,_うけとったお金,_金種) :-
_受け取ったお金 > _お買い上げ金額,
_おつり is _うけとったお金 - _お買い上げ金額,
金種計算(_おつり,[10000,5000,2000,1000,500,100,50,10,5,1],_金種).
582:デフォルトの名無しさん
10/02/03 03:25:18
>>580 >>581
一般に、給料計算の一部に金種計算が現れる場合は、銀行がその金種を
用意するものと考えられるから、レジの中身についての考慮は必要ないが、
おつりの場合はレジの内容が計算を主導する。
583:デフォルトの名無しさん
10/02/03 05:26:20
>>225
% Prolog (その一)
'0から10の中からランダムに整数の2組を決める。それを平面上の座標と、座標を10個つくる。'(_10個の座標点ならび) :-
'座標を10個つくる。'(1,_10個の座標点ならび).
座標を10個つくる。'(N,[]) :- N > 10,!.
座標を10個つくる。'(N,[[X,Y]|R]) :-
'0から10の中からランダムに整数の2組を決める。'(X,Y),
N2 is N + 1,
座標を10個つくる。'(N2,R).
'0から10の中からランダムに整数の2組を決める。'(X,Y) :- X is random mod 9,Yis random mod 9.
ユーザに座標を入力させ、その点から最も遠い点と近い点を求める。(_10個の座標点ならび,X,Y,_最も遠い点,_最も近い点) :-
ユーザに座標を入力させ、(X,Y),
その点から最も遠い点と近い点を求める(_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標),
ユーザ座標と10個の座標点の表示(_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標).
ユーザに座標を入力させ、(X,Y) :-
催促付き整数入力('X座標を入力してください :',X),
催促付き整数入力('Y座標を入力してください :',Y),!.
その点から最も遠い点と近い点を求める。(_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標) :-
ユーザの入力点からの距離ならびを得る(_10個の座標点ならび,X,Y,_ユーザの入力点からの距離ならび),
ユーザの入力座標から最も遠い点を得る(_ユーザの入力点からの距離ならび,X,Y,_最も遠い点X座標,_最も遠い点Y座標),
ユーザの入力座標から最も近い点を得る(_ユーザの入力点からの距離ならび,X,Y,_最も近い点X座標,_最も近い点Y座標),!.
584:デフォルトの名無しさん
10/02/03 06:20:55
>>225
% prolog (その二)
ユーザの入力点からの距離ならびを得る([],_,_,[]) :- !.
ユーザの入力点からの距離ならびを得る([[X1,Y1]|R1],X,Y,[[_距離,X1,Y1]|R2]) :-
_距離 is sqrt(((Y1-Y)^2 + (X1-X)^2)),
ユーザの入力点からの距離ならびを得る(R1,X,Y,R2).
ユーザの入力座標から最も遠い点を得る(_ユーザの入力点からの距離ならび,X,Y,_最も遠い点X座標,_最も遠い点Y座標) :-
findmax(L,member(L,_ユーザの入力点からの距離ならび),[_最も遠い距離,_最も遠い点X座標,_最も遠い点Y座標]).
ユーザの入力座標から最も近い点を得る(_ユーザの入力点からの距離ならび,X,Y,_最も近い点X座標,_最も近い点Y座標) :-
findmin(L,member(L,_ユーザの入力点からの距離ならび),[_最も近い距離,_最も近い点X座標,_最も近い点Y座標]).
ユーザ座標と10個の座標点の表示(_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標) :-
ユーザ座標と10個の座標点の表示(0,0,_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標).
ユーザ座標と10個の座標点の表示(M,N,_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標) :- N > 9,!.
ユーザ座標と10個の座標点の表示(M,N,_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標) :-
M > 9,N2 is N + 1,wr('\n'),
ユーザ座標と10個の座標点の表示(0,N2,_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標),!.
ユーザ座標と10個の座標点の表示(M,N,_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標) :-
座標点表示(M,N,_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標),
M2 is M + 1,
ユーザ座標と10個の座標点の表示(M,N2,_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標).
585:デフォルトの名無しさん
10/02/03 06:23:40
>>225
% Prolog (その三)
座標点表示(X,Y,_,X,Y,_,_,X,Y) :- write('◎'),!.
座標点表示(X,Y,_,X,Y,_,_,_,_) :- write('×'),!.
座標点表示(_最も遠い点のX座標,_最も遠い点のY座標,_,_,_,_最も遠い点のX座標,_最も遠い点のY座標,_,_) :- write('●'),!.
座標点表示(_最も近い点のX座標,_最も近い点のY座標,_,_,_,_,_,_最も近い点のX座標,_最も近い点のY座標) :- write('○'),!.
座標点表示(M,N,_10個の座標点ならび,_,_,_,_,_,_) :- member([M,N],10個の座標点ならび),write('△'),!.
座標点表示(_,_,_,_,_,_,_,_,_) :- write(' '),!.
586:デフォルトの名無しさん
10/02/03 06:38:51
>>227
% Prolog
program :-
user_parameters([A,B]),
atom_to_term(A,_実数1,_),
atom_to_term(B,_実数2,_),
sasho(_実数1,_実数2,_差,_商,_診断),
program_1(_差,_商,_診断),!.
sasho(_実数1,_実数2,_差,_商,0) :-
(_実数2 = 0.0;_実数=0),
_差 is _実数1 - _実数2,!.
sasho(_実数1,_実数2,_差,_商,1) :-
\+(_実数2 = 0.0),
\+(_実数=0),
_差 is _実数1 - _実数2,
_商 is _実数1 / _実数2,!.
program_1(_差,_商,0) :- write_formatted('%t',[_差]),!.
program_1(_差,_商,1) :- write_formatted('%t,%t',[_差,_商]),!.
587:デフォルトの名無しさん
10/02/03 06:42:17
>>227 訂正
% Prolog 除数検査の中で _実数2 とするべきところを _実数 としていたものがある。
program :-
user_parameters([A,B]),
atom_to_term(A,_実数1,_),
atom_to_term(B,_実数2,_),
sasho(_実数1,_実数2,_差,_商,_診断),
program_1(_差,_商,_診断),!.
sasho(_実数1,_実数2,_差,_商,0) :-
(_実数2 = 0.0;_実数2=0),
_差 is _実数1 - _実数2,!.
sasho(_実数1,_実数2,_差,_商,1) :-
\+(_実数2 = 0.0),
\+(_実数2=0),
_差 is _実数1 - _実数2,
_商 is _実数1 / _実数2,!.
program_1(_差,_商,0) :- write_formatted('%t',[_差]),!.
program_1(_差,_商,1) :- write_formatted('%t,%t',[_差,_商]),!.
588:デフォルトの名無しさん
10/02/03 07:36:27
スレリンク(tech板:586番)
# 問題こちら↓
# 階乗 n! を計算する関数を作成し,
# 順列
# n個の異なるものからr個取り出して並べる。
# このときの順列の総数をnPrとあらわす。
# nPr=n(n-1)(n-2)・・・(n-r+1)
# を計算する関数を作成し,
#
# 組み合わせ
# 異なるn個からr個取り出して組を作る。
# このときの組合せの総数をnCrとあらわす。
# nCr = nPr/r!
#
# を計算するプログラムを作成してください。できればFORTRANで。
589:デフォルトの名無しさん
10/02/03 08:27:50
>>588
% Prolog
nPr(N,R,X) :-
U is N - R + 1,
階乗(U,N,X).
nCr(N,R,X) :-
U is N - R + 1,
階乗(U,N,K1),
階乗(R,K2),
X is K1 // K2 .
階乗(M,N,1) :- M > N,!.
階乗(M,N,X) :-
M2 is M + 1,
階乗(M2,N,Y),
X is M * Y.
階乗(0,1) :- !.
階乗(1,1) :- !.
階乗(N,X) :-
N2 is N - 1,
階乗(N2,Y),
X is N * Y,
asserta((階乗(N,X) :- (!))) .
590:デフォルトの名無しさん
10/02/03 16:35:57
>>211
% Prolog
URLリンク(nojiriko.asia)
591:デフォルトの名無しさん
10/02/03 16:51:15
>>216
% Prolog
search(Text,Pat,Start) :-
sub_atom(Text,Start,_,_,Pat),!.
search(_,_,-1).
search(Start) :-
write('Text :'),get_line(Text),
write('Pat :'),get_line(Pat),
search(Text,Pat,Start),!.
592:デフォルトの名無しさん
10/02/03 17:45:56
>>214
% Prolog
述語数値を第二引数が昇順になるように定義し直す。その際追番を1から振り直す :-
findall(_値,数値(_,_値),L1),
quicksort(L1,L2),
abolish(数値/2),
述語数値を第二引数が昇順になるように定義し直す。その際追番を1から振り直す(1,L2).
述語数値を第二引数が昇順になるように定義し直す。その際追番を1から振り直す(_,[]) :- !.
述語数値を第二引数が昇順になるように定義し直す。その際追番を1から振り直す(M,[N|R]) :-
assertz(数値(M,N)),
M2 is M + 1,
述語数値を第二引数が昇順になるように定義し直す。その際追番を1から振り直す(M2,R).
593:デフォルトの名無しさん
10/02/03 18:33:33
>>530
使用言語:J
op=:a:,;/'+-'
a=:,;&.>,{(<a:,<'-')0},(<op),.<&.>":L:0;/>:i.9
;"1,.&(<'=100'),.a{~I.(<100)=".&.>a
123+45-67-8-9=100
123+4-5-67-89=100
123-45+67-89=100
123-4+5+6+7-8-9=100
12+3+4+5-6+7-89=100
12+3-4-5+67+8+9=100
12-3+4-5-6-7+89=100
1+23-4-56+7+8+9=100
1+23-4-5+6+78-9=100
1+2+34-5-67-8-9=100
1+2+3-4-5+6+78+9=100
-1-2-3-4+5+6+78+9=100
594:デフォルトの名無しさん
10/02/03 21:30:57
スレリンク(tech板:451番)
# [1] 授業単元:情報処理入門
# [2] 問題文(含コード&リンク):
# rep1.ppmとrep2.ppmの2つの画像を加算するプログラムを作成せよ.
# プログラム中で加算したデータは,コントラスト強調を行った上で
# PPM画像ファイル(h12r.ppm)として保存するようにすること.
# Cのソースファイルh12r.cおよび実行することにより作成
# される画像ファイルを提出すること.rep1.ppmとrep2.ppmの
# サイズはいずれも横124×縦124画素である.h12r.ppmのサイズも同じとする.
#
# rep1.ppm
# URLリンク(ime.nu)
# rep2.ppm
# URLリンク(ime.nu)
595:デフォルトの名無しさん
10/02/04 00:50:42
優勝賞金500万円
URLリンク(www.jaist.ac.jp)
1989年にロンドンで第1回目のコンピュータオリンピアードが開催されました。
毎年開催される本イベントでは,コンピュータゲームプレイヤー同士が競技し,世界最高位を決定します。
これまでの優勝者には,Neurogammon(バックギャモン, 1989年), Chinook (チェッカー, 1989年および1990年) そして Tacos(将棋, 2005年, 2006年, 2008年, 2009年)などがあります。
コンピュータオリンピアードは国際コンピュータゲーム協会(ICGA)が主催して実施されています。
競技部門には,アマゾン,バックギャモン,ブリッジ,コンピュータプール,六目並べ,象棋,ドッツアンドボックス,国際ドローツ,囲碁,9路盤囲碁,ヘックス,ハバナ,ラインズオブアクション,
将棋,スラカルタなどがあります。
この他のゲームもコンピュータによる競技会を開催する可能性があります。主催者までコンタクトしてください。
2010年に第15回目となるコンピュータオリンピアードは金沢市内で開催されます。
ICGAとJAISTとの共同イベントとして9月25日から10月2日にかけて金沢市内で開催されます。
各競技の日程は後日決定します。
参加申し込みなどの詳細も後日お知らせ致します。
596:デフォルトの名無しさん
10/02/04 06:08:29
>>595
% Prolog
コンピュータオリンピアード(優勝賞金,500万円).
コンピュータオリンピアード('URL','URLリンク(www.jaist.ac.jp)').
コンピュータオリンピアード(歴史,第1回目,ロンドン,1989).
コンピュータオリンピアード(開催,毎年).
コンピュータオリンピアード(主催,'国際コンピュータゲーム協会(ICGA)').
コンピュータオリンピアード(出場者,コンピュータゲームプレイヤー同士).
コンピュータオリンピアード(競技部門,アマゾン).
コンピュータオリンピアード(競技部門,バックギャモン).
コンピュータオリンピアード(競技部門,ブリッジ).
コンピュータオリンピアード(競技部門,コンピュータプール).
コンピュータオリンピアード(競技部門,六目並べ).
コンピュータオリンピアード(競技部門,象棋).
コンピュータオリンピアード(競技部門,ドッツアンドボックス).
コンピュータオリンピアード(競技部門,国際ドローツ).
コンピュータオリンピアード(競技部門,囲碁).
コンピュータオリンピアード(競技部門,'9路盤囲碁').
コンピュータオリンピアード(競技部門,ヘックス).
コンピュータオリンピアード(競技部門,ハバナ).
コンピュータオリンピアード(競技部門,ラインズオブアクション).
コンピュータオリンピアード(競技部門,X) :- 新しい競技種目になる(X).
コンピュータオリンピアード(開催予定,第15回,金沢市内,'2010年','自9月25日','至10月2日').
コンピュータオリンピアード(第15回大会開催形態,共同エベント).
コンピュータオリンピアード(第15回大会共同エベント,主催,'ICGA').
コンピュータオリンピアード(第15回大会共同エベント,主催,'JAIST').
コンピュータオリンピアード(第15回大会,競技日程,後日決定).
コンピュータオリンピアード(参加申し込みなどの詳細,後日お知らせ致します).
597:デフォルトの名無しさん
10/02/04 06:28:59
スレリンク(tech板:455番)
# [1] 授業単元: アルゴリズム
# [2] 問題文(含コード&リンク):課題2−2と2−3です。
# 課題2-2
# コマンドライン引数で入力される任意個の実数を,malloc関数で動的に確保した配列に 格納するように,kadai2_1.c を修正したプログラム kadai2_2.c を作成せよ.
#
# 実行例は課題2-1と同じ.
# --------------------------------------------------------------------------------
# 課題2-3
# コマンドライン引数で入力される任意個の実数に対し,整数部(integer part)と小数部(fractional part)に分割し,実行例のように出力するプログラム kadai2_3.c を作成せよ.ただし,以下の仕様を満足すること.
#
# 実数値,整数部,小数部をメンバにもつ構造体を定義し,構造体の配列として利用すること.
# 構造体の配列は,malloc関数を利用して動的に確保すること.
# 整数部,小数部の分割および構造体メンバへの格納は,dividePart関数を定義して利用すること.
# 構造体配列の内容を実行例のように出力する printData関数を定義して利用すること.
# 構造体配列の内容もとに整数部の合計,小数部の合計,実数値の合計を出力する printSum関数を定義して利用すること.
598:デフォルトの名無しさん
10/02/04 06:36:09
スレリンク(tech板:456番)
# [1] 授業単元: データ演習
# [2] 問題文(含コード&リンク):
# できなかった問題は11−1です。
# 課題10−1を使う問題なので、できている10−1のソースコードを一緒に入れています。
# どなたか、よろしくお願いします。
# 課題10-1
# コマンドライン引数で指定される整数列を順番に二分探索木に登録し,キーボードから入力される値を探索するプログラム kadai10_1.c を作成せよ.
# また,最初に inorderで木をなぞった結果を示せ.
#
# 課題10−1に番兵を導入したプログラム kadai11_1.c を作成せよ.
#
# ヒント:番兵用に1個のノードを定義し,ノードのNULLポインタが番兵を指すようにすればよい.
# 挿入関数と探索関数,inorder, main関数を変更すればよい.挿入時の挿入ノードを決める操作も番兵を使えばよい.
# その際,初期状態として,rootが番兵を指す状態から開始する必要がある.
599:デフォルトの名無しさん
10/02/04 06:38:48
スレリンク(tech板:459番)
# [1] 授業単元:プログラミング実践
# [2] 問題文
# アフィン変換のプログラムを作成し、下の図の真ん中を座標の中心にして60°左回転した結果を出力せよ。
# (図)affin.txt
# 000000000
# 000010000
# 000010000
# 000010000
# 011111110
# 000010000
# 000010000
# 000010000
# 000000000
#
600:デフォルトの名無しさん
10/02/04 07:45:56
>>597
% Prolog
program :-
user_parameters(L),
dividePart(L,L1),
assertz('>>597 構造体'(L1)).
dividePart([],[]) :- !.
dividePart([A|R1],[(整数部(_整数部),小数部(_小数部),(実数値(_実数値))|R2]) :-
atom_to_term(A,_実数値,_),
_整数部 is float_integer_part(_実数値),
_小数部 is float_fractional_part(_実数値),
dividePart(R1,R2).
printData :-
'>>597 構造体'(L),
printSum(L,0.0,0.0,0.0).
printSum([],_整数部の合計,_小数部の合計,_実数値の合計) :-
write_formatted('整数部の合計=%t,小数部の合計=%t,実数値の合計=%t\n',[_整数部の合計,_小数部の合計,_実数値の合計]),!.
printSum((整数部(_整数部),小数部(_小数部),(実数値(_実数値))|R1],_整数部の合計1,_小数部の合計1,_実数値の合計1) :-
_整数部の合計2 is _整数部 + _整数部の合計1,
_整数部の合計2 is _小数部 + _小数部の合計1,
_実数値の合計2 is _実数値 + _実数値の合計1,
printSum(R1,_整数部の合計2,_小数部の合計2,_実数値の合計2).
601:デフォルトの名無しさん
10/02/04 07:52:16
>>596 の二節を訂正します
% Prolog
コンピュータオリンピアード(競技部門,X) :- 新しい競技種目になる(X).
=>
コンピュータオリンピアード(競技部門,X) :-
コンピュータオリンピアード(新しい競技種目になる,X).
コンピュータオリンピアード(開催予定,第15回,金沢市内,'2010年','自9月25日','至10月2日').
=>
コンピュータオリンピアード(開催予定,第15回,金沢市内,'自2010年9月25日','至2010年10月2日').
下は原文のニュアンスから少し遠くなりますが。
'9月25日'-'10月2日'のような構造を持ったデータを持ってきたくないんです。
602:デフォルトの名無しさん
10/02/04 08:02:08
>>601
それなら、
コンピュータオリンピアード(開催予定,第15回,金沢市内,'2010年').
コンピュータオリンピアード('第15回',開催日時,'9月25日から10月2日まで').
の方がいいのでは。
文の解析を残すのがいいかどうかというところだね。
603:602
10/02/04 08:07:27
コンピュータオリンピアードを述語に持って来ているということは、
これがクラスという意識が多少はあるのかな?
604:デフォルトの名無しさん
10/02/04 08:32:44
>>602
コンピュータオリンピアード('第15回',開催予定日,'9月25日から10月2日まで').
ですか。
「9月25日から10月2日まで」に比べて「9月25日から10月2日にかけて」は
ふくらみがありますね。こういう部分の表現は自然言語に敵わない。
いや、自然言語は大袈裟で単に「掛かる」という言葉のふくらみかな。
>>603
検索の都合もあるw ゼネラルデータベースのように特権的なテーブルとか
述語を持たない系は魅力がありますが、現実には大変でしょう。しかしまあ、
アナーキズムも再評価されているようですから、わからないですよね。
605:デフォルトの名無しさん
10/02/04 09:15:50
スレリンク(tech板:465番)
# [2] CIP法での1次元の移流計算
#
# 自分で以下のプログラムを作ったところ。
# URLリンク(kansai2channeler.hp.infoseek.co.jp)
# tの値を増やすにつれてf[n][t]のnの初期のほうの値がなぜかでかい数字が出てしまいます。
# 自分の計算ではtの値を増やせば、f[n][t]のnの初期のほうの値は0になると思うんですが、一体どこが悪いのか、ご教授をお願いいたします。
606:デフォルトの名無しさん
10/02/04 13:20:04
スレリンク(tech板:340番)
# 【 課題 】
# 次の要求を満たすフィルタプログラムを作れ。
# 1.標準入力から行を読み込み、空白をカンマに変換し、標準出力に出力する
# 2.連続した複数の空白はひとつの空白と同じと見なす
# 3.タブ文字も空白と見なす
# 4.オプション等は設けない
# 5.フィルタとして動作するので余分なメッセージ類は一切出力しない
#
# 例として「1 Bill 1955 Oct 28」と入力したら「1,Bill,1955,Oct,28」と出力されるようにします。
607:デフォルトの名無しさん
10/02/04 17:11:30
>>606
% Prolog (その一) 例で ","の後に空白が一つ入っているのは誤りだと思う。
program :-
repeat,
標準入力から行を読み込み(_行),
空白をカンマに変換し、標準出力に出力する(_行).
空白をカンマに変換し、標準出力に出力する(end_of_file) :- !.
空白をカンマに変換し、標準出力に出力する(_行) :-
空白をカンマに変換し、(_行,_変換された行),
標準出力に出力する(_変換された行),
fail.
標準入力から行を読み込み(_行) :-
get_line(_行).
空白をカンマに変換し、(_行,_変換された行) :-
atom_chars(_行,Chars),
文字ならびの空白をカンマに変換(Chars,Chars2),
atom_chars(_変換された行,Chars2).
文字ならびの空白をカンマに変換([],[]) :- !.
文字ならびの空白をカンマに変換(L,[',']) :- 空白またはタブならび(L),!.
文字ならびの空白をカンマに変換(L1,[',',A|R2]) :-
append(L0,[A|R3],L1),
\+(A=' '),\+(A='\t'),
空白またはタブならび(L0),
文字ならびの空白をカンマに変換(R3,R2),!.
文字ならびの空白をカンマに変換([A|R1],[A|R2]) :-
文字ならびの空白をカンマに変換(R1,R2),!.
608:デフォルトの名無しさん
10/02/04 17:13:11
>>606
% Prolog (その二)
空白またはタブならび([' ']) :- !.
空白またはタブならび(['\t']) :- !.
空白またはタブならび([' '|R]) :-
空白またはタブならび(R),!.
空白またはタブならび(['\t'|R]) :-
空白またはタブならび(R),!.
標準出力に出力する(_行) :- write_formatted('%t\n',[_行]).
609:デフォルトの名無しさん
10/02/04 17:18:29
スレリンク(tech板:27番)
# 微分方程式の境界値問題
#
# y''(x) = f(y(x)), 0<x<1, y(0)=y(1)=0
#
# の解を数値的に求める方法のひとつとして、射的法(shooting method)
# があります。自然数nを与えて、区間[0,1]をn等分して、ykをy(k/n)
# の近似式として、漸化式(ここから下のyの後ろのカッコの中身は添え字と思え)
# y(0) = 0, y(1)= t,
# y(k+1) = 2y(k) - y(k-1) + 1/n²f(y(k)), k=1,2,…,2n-1,
# の解の数値的y(n)=0 を満たすものを、上の問題の近似解として求める方法です。
# yn=0となる数列を求めるために、ynを未知パラメータtの関数とみなして、tに関する二分法を使います。
#
# 正の実数aを適当に定めて、
# f(y) = ay(1 - y)
# の場合の近似解y(k)を、誤差10-6の範囲で求めるプログラムを作成してください。
# 自然数nは適当に決めてください。(2のベキ乗にするのが無難です)
# 実数あの値は、とりあえず20にしてみてください。
# (注意:a≧10でないと…)
610:デフォルトの名無しさん
10/02/04 18:24:04
>>52
音通(恨み,浦見).
音通(恨み,裏見).
この系統は根深い。
611:デフォルトの名無しさん
10/02/04 20:58:20
>>515
使用言語:J
g=:(0=3&|)+.(3 e. 10.inv)
f=:[:;{&('NO';'YES')
f g 11
NO
f g 12
YES
f g 13
YES
612:デフォルトの名無しさん
10/02/05 06:06:05
>>206
% Prolog (その一)
自分で五つの問題文を入力して練習するタイピング練習ソフト :-
自分で五つの問題文を入力して(1,_五つの問題文),
問題文は入力した五つの中から10題がランダムに出題される(1,_五つの問題文,_問題文ならび),
タイプ練習(_問題文ならび,_正解数),
write_formatted('正解数は%tです\n',[_正解数]).
自分で五つの問題文を入力して(N,[]) :- N > 5,!.
自分で五つの問題文を入力して(N,[_問題文|R]) :-
問題文を入力して(_問題文1),
問題文の長さを調整する(_問題文1,_問題文),
N2 is N + 1,
自分で五つの問題文を入力して(N2,R).
問題文を入力して(_問題文) :- write_formatted('%tつ目の問題文 :',[N]),get_line(問題文),!.
問題文の長さを調整する(_問題文,_問題文) :-
sub_atom(_問題文,0,_長さ,_,_問題文),
_長さ =< 20,!.
問題文の長さを調整する(_問題文1,_問題文) :-
sub_atom(_問題文1,0,20,_,_問題文).
613:デフォルトの名無しさん
10/02/05 06:07:07
>>206
% Prolog (その二)
問題文は入力した五つの中から10題がランダムに出題される(N,_,[]) :- N > 10,!.
問題文は入力した五つの中から10題がランダムに出題される(N,_問題集,[_問題|R]) :-
M is (random mod 5) + 1,
list_nth(M,_問題集,_問題),
N2 is N + 1,
問題文は入力した五つの中から10題がランダムに出題される(N2,_問題集,R).
タイプ練習([],0) :- !.
タイプ練習([_問題文|R],_正解数) :-
write_formatted('%t\n',[_問題文]),get_line(Line),
_問題文 = Line,
タイプ練習(R,_正解数2),
_正解数 is _正解数2 + 1,!.
タイプ練習([_|R],_正解数) :- タイプ練習(R,_正解数).
614:デフォルトの名無しさん
10/02/05 06:28:08
>>212
% Prolog
'2つの名前を入力しステータス(ランダム)を決定し 勝敗表示する' :-
'2つの名前を入力し'(_名前1,_名前2),
'ステータス(ランダム)を決定し'(_名前1のステータス,_名前2のステータス),
勝負表示する(_名前1,_名前2,_名前1のステータス,_名前2のステータス),!.
'ステータス(ランダム)を決定し'(_名前1のステータス,_名前2のステータス) :-
_名前1のステータス is random mod 100 + 1,
_名前2のステータス is random mod 100 + 1.
勝負表示する(_名前1のステータス,_名前2のステータス) :-
_名前1のステータス > _名前2のステータス,
write_formatted('%tの勝ちです\n',[_名前1]),!.
勝負表示する(_名前1のステータス,_名前2のステータス) :-
_名前1のステータス < _名前2のステータス,
write_formatted('%tの勝ちです\n',[_名前2]),!.
勝負表示する(_名前1のステータス,_名前2のステータス) :-
_名前1のステータス = _名前2のステータス,
write('引き分けです\n'),!.
615:デフォルトの名無しさん
10/02/05 09:44:04
>>238
% Prolog ここでは構造体=述語定義と解釈してみる。
'構造体を利用して、氏名,年齢,性別が5人分書かれたテキストファイルを読み込んで、画面に表示する'(_テキストファイル) :-
'構造体を利用して、氏名,年齢,性別が5人分書かれた次のようなテキストファイルを読み込んで、(_テキストファイル,Lines),
abolish(氏名・年齢・性別/3),
'氏名・年齢・性別構造体として定義'(Lines).
画面に表示する,!.
'構造体を利用して、氏名,年齢,性別が5人分書かれたテキストファイルを読み込んで、(_テキストファイル,Lines) :-
get_lines(_テキストファイル,Lines),!.
'氏名・年齢・性別構造体として定義'([]) :- !.
'氏名・年齢・性別構造体として定義'([Line|R]) :-
split(Line,[' '],[_氏名,_年齢,_性別]),
assertz(氏名・年齢・性別(氏名(_氏名),年齢(_年齢),性別(_性別))),
'氏名・年齢・性別構造体として定義'(R).
画面に表示する :-
write('%20s %6s %4s\n',[氏名,年齢,性別]),
氏名・年齢・性別(氏名(_氏名),年齢(_年齢),性別(_性別)),
write_formatted('%20s %6d %4s\n',[_氏名,_年齢,_性別]),
fail.
画面に表示する.
616:デフォルトの名無しさん
10/02/05 10:45:47
>>515
使用言語:J
同じ値がでないステータスの生成なので引き分けはない。
f=:dyad define
'xs ys'=. 2?10000
smoutput x,' status ',":xs
smoutput y,' status ',":ys
smoutput (;(xs<ys){x;y),' win'
)
'scala' f 'clojrure'
scala status 8546
clojrure status 8515
scala win
617:デフォルトの名無しさん
10/02/05 10:49:07
>>616
>>515 ではなくて >>212 でした
618:デフォルトの名無しさん
10/02/05 16:47:01
>>229
% Prolog
'テキストファイルの内容を,別のテキストファイルにコピーする'(_コピー元ファイル,_コピー先ファイル) :-
open(_コピー元ファイル,read,Input,[type(binary)]),
open(_コピー先ファイル,write,Output,[type(binary)]),
repeat,
一文字読む(Input,C),
一文字書き出す(Output,C),
close(Input),
close(Output),!.
一文字読む(Input,C) :- get_byte(C).
一文字書き出す(Output,-1) :- !.
一文字書き出す(Output,C) :- put_byte(Output,C),fail.!.
テキストファイルの中身の内容を画面に出力(_コピー元ファイル,_コピー先ファイル) :-
get_lines(_コピー元ファイル,Lines1),
get_lines(_コピー先ファイル,Lines2),
'2テキストを並べて行表示'(Lines1,Lines2),!.
'2テキストを並べて行表示'([],[]) :- !.
'2テキストを並べて行表示'([A|R1],[B|R2]) :-
write_formatted('%t %t\n',[A,B]),
'2テキストを並べて行表示'(R1,R2).
619:デフォルトの名無しさん
10/02/05 17:10:32
>>232
% Prolog
モンテカルロ法で円周率を計算する(_円周率) :-
モンテカルロ法で円周率を計算する(1,10000,0,_円周率),!.
モンテカルロ法で円周率を計算する(M,N,Y,X) :- M > N,X is 4.0 * Y / N,!.
モンテカルロ法で円周率を計算する(M,N,Y,X) :-
U1 is ((random mod 10000) / 10000) ^ 2,
U2 is ((random mod 10000) / 10000) ^ 2,
U1 + U2 =< 1.0,
Y2 is Y + 1,
M2 is M + 1,
モンテカルロ法で円周率を計算する(M2,N,Y2,X),!.
モンテカルロ法で円周率を計算する(M,N,Y,X) :-
M2 is M + 1,
モンテカルロ法で円周率を計算する(M2,N,Y,X),!.
620:デフォルトの名無しさん
10/02/05 17:24:20
>>244
% Prolog
オイラー級数を用いて、πの近似値を求める(_円周率) :-
findsum(U,(for(1,N,100000),U is 1 / (N * N)),Sum),
_円周率 is sqrt(6 * Sum).
621:デフォルトの名無しさん
10/02/05 17:25:31
Prolog氏かっけー。
622:620
10/02/05 19:16:08
ごめん出題は >>144 だった。
623:デフォルトの名無しさん
10/02/06 07:00:34
大学が ->受験->春休み になるから、出題なくなりますね。未解決問題を
しばらくは潰していきます。
624:デフォルトの名無しさん
10/02/07 05:47:54
スレリンク(tech板:483番)
# [1] C言語プログラミング初歩(専門学校)
# [2] int型の配列変数A[64][32]をB[32][64]に代入する.
# 次の対応があるようにすること
# A[0][0] -> A[0][1] -> A[0][31] ->A[1][0] ->....->A[63][31]
# B[0][0] -> B[0][1]-> B[0][31] -> B[0][32]->....->B[31][63]
# (上の段と下の段が一致)
# A[m][n]には値 (m+n) % 31が入っているものとする。
625:デフォルトの名無しさん
10/02/07 05:51:59
スレリンク(tech板:480番)
# [2] プログラム
# 環境
# [3.1] OS:Linux
# [3.2] コンパイラ名:gcc
# [3.3] 言語:C++
# 以下の実行結果はどうなるか
#
#
# #include<stdio.h>
# #define N10
# int main(){
# int i,wa=0;
# for(i=1;i<N;i++){
# if((i%2) == 0) continue;
# wa+=i;}
# printf("%d\n",wa);
# return 0;}
#
# これを、C言語を他の言語に書き換える課題とします。
626:デフォルトの名無しさん
10/02/07 06:23:14
>>624
% Prolog
ならびを2要素ごとに纏める([],[]) :- !.
ならびを2要素ごとに纏める([L1,L2|R1],[L3|R2]) :-
append(L1,L2,L3),
ならびを2要素ごとに纏める(R1,R2).
627:デフォルトの名無しさん
10/02/07 06:34:42
>>624
% Prolog
'A[m][n]には値 (m+n) % 31が入っている'(A) :-
'A[m][n]には値 (m+n) % 31が入っている'(0,A),!.
'A[m][n]には値 (m+n) % 31が入っている'(M,[]) :- M > 31,!.
'A[m][n]には値 (m+n) % 31が入っている'(M,[L|R]) :-
'A[m][n]には値 (m+n) % 31が入っている'(M,0,L),
M2 is M + 1,
'A[m][n]には値 (m+n) % 31が入っている'(M2,R).
'A[m][n]には値 (m+n) % 31が入っている'(M,N,[]) :- N > 63,!.
'A[m][n]には値 (m+n) % 31が入っている'(M,N,[X|R]) :-
X is (M + N) mod 31,
N2 is N + 1,
'A[m][n]には値 (m+n) % 31が入っている'(M,N2,R),!.
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4389日前に更新/462 KB
担当:undef