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


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

いろんな言語で宿題スレ 第三編



1 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 09:57:19 ]
第二編も512Kbyte越えで終了しました。
前スレで未解決な課題は順次このスレにコピーします。

252 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 05:19:11 ]
pc12.2ch.net/test/read.cgi/tech/1248012902/711
# 【 課題 】課題は3題です。
# ime.nu/rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/873.zip
# 課題1
# 乱数を使って掛け算九九の練習ソフトを作れ。ただし以下の条件に従うものとする 。
#
# 10題練習したところで正解率が8割以下だったら、もう1セット10題の練習を繰り返 す。
# 10問中の正解率が8割以上になるまで繰り返し練習をさせる。

253 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 05:23:59 ]
pc12.2ch.net/test/read.cgi/tech/1248012902/711
# 【 課題 】課題は3題です。
# ime.nu/rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/873.zip
# 課題2
# 西暦を入力させ、うるう年かどうかを判定するプログラムを作れ。なお、うるう年 は以下で認定される。
#
# 西暦の年号が400で割り切れる年はうるう年
# 西暦の年号が400で割り切れないが、100で割り切れる年はうるう年でない
# 西暦の年号が100で割り切れないが、4で割り切れる年はうるう年


254 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 05:58:31 ]
>>217
使用言語:J

('n',.'=',.":,.a),.':',.'e',.'=',.0j15":,.+/\%!a=.i.31x
n= 0:e=1.000000000000000
n= 1:e=2.000000000000000
n= 2:e=2.500000000000000
n= 3:e=2.666666666666667
n= 4:e=2.708333333333333
n= 5:e=2.716666666666667
n= 6:e=2.718055555555556
n= 7:e=2.718253968253968
n= 8:e=2.718278769841270
n= 9:e=2.718281525573192
n=10:e=2.718281801146384
:
n=29:e=2.718281828459045
n=30:e=2.718281828459045

255 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 06:20:01 ]
>>253
使用言語:J

f=:monad def '-.=/*400 4 100|y'

f 1800
0
f 2000
1
f 2008
1
f 2010
0

256 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 06:24:52 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/796
# [1] プログラミング演習
# [2] 標準入力から読み込んだテキストファイルを辞書順に整列して標準出力する。
# 辞書順:文字列比較の順番はASCIIコード文字順をベースとした辞書順であるが、文字順が一部
# が変更される A<a<B<c<C<c.....
# [5] 作業用ファイルwork.dat(内容は自由、サイズ無制限とする。プログラム終了時点で削除する必要は無い
# ものとする。)
# を使用出来る。stdio.hで定義されている標準ライブラリ関数、定数を利用出来る。
# 整列アルゴリズムは自由とする。

257 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 06:26:49 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/797
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):問題1 戻値を持たず、一つの double 型の引数を持ち、過去に関数が
# 呼ばれた時、全ての引数の値の総和を表示する関数、d_total
# を定義し、動作の確認ができるプログラムとして作成せよ。例えば、
# d_total(0.1);
# d_total(0.2);
# d_total(0.3);
# と呼べば、d_total の内部の処理にて
# 0.1
# 0.3
# 0.6
#
# と表示するということである。
# ただし, プログラム中の変数として、外部変数は使ってはな
# らない。「内部変数か」自動変数のみを使って実現せよ。
# 問題2  戻値を持たず、二つの float 型のポインタの引数を持ち、二つ
# の引数の値を交換する関数、f_swap を定義し、動作の確認がで
# きるプログラムとして作成せよ。
# 問題3 4行4列のint型の行列を、転置するプログラムを作成せよ。動作の確認のため、転置前と転置後
# の行列の内容を表示するようにせよ

258 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 06:28:19 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/798
# [1] やさしいC
# [2] 次の関数workをコンパイル出来るように,正しく動作するように修正し、
# 正しく実行出来るかどうかを確かめられるプログラムを作りなさい。
# double *work(double[] a,int N){
# double result[N];
# result[0] = a[N-2] ,a[N-1],a[0],a[1] a[2]を1:3:4:3:1の重みで平均した値
# result[1] = a[N-1],a[0],a[1],a[2] を1:3:4:3:1の重みで平均した値
# result[2] = a[0],a[1],a[2],a[3]を1:3:4::3:1の重みで平均した値
# result[3] = a[1],a[2],a[3],a[4] を1:3:4:3:1の重みで平均した値
# ....
# result[N-2] = a[N-4],a[N-3],a[N-2],a[N-1],a[0] を1:3:4:3:1の重みで平均した値
# result[N-1] = a[N-3],a[N-2],a[N-1],a[0],a[1] を1:3:4:3:1の重みで平均した値
# return (double)&result[0];
# }


259 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 07:25:06 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/800
# [1]Cプログラミング演習
# [2]
# 関数 op(int a,int b,int c)は次の結果を返す。
# 結果: a op1 b op2 c op3 a op4 b op5 c (op1,op2,op3,op4,op5は
# + - * %(剰余) xor and orの何れか一つ)
# +:演算0 -:演算1 *:演算2 /:演算3 xor:演算4 and:演算5 or:演算6
# op1=(3*a+5*b)の7による剰余がkの場合、演算kを選択
# op2=(5*b+4*c)の7による剰余がkの場合、演算kを選択
# op3=(a+3*c)の7による剰余がkの場合、演算kを選択
# op4=(a+2*b)の7による剰余がkの場合、演算kを選択
# op5=(3*c+2*b)の7による剰余がkの場合、演算kを選択
# ここで演算子の優先順位は高い順に + > - > * > % >xor > and > orとする
# 例えば1 + 3 xor 5 * 7 - 5は(1+3) xor (5*(7-5))を意味する
# 関数opをコードせよ。どのような演算が行われたか具体的に出力するprintf文も同時に出力すること。


260 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 07:36:26 ]
pc12.2ch.net/test/read.cgi/tech/1248012902/711
# 【 課題 】課題は3題です。
# ime.nu/rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/873.zip
# 課題3
#
# 以下のプログラムに手を加え、アドレス表を利用した並び替えを行って人口の大き>
# い順に人口と県民を表示しなさい
#
# 07年の都道府県人口(csv形式ファイル)は以下の場所にあります。
# prolog.asia/html/prolog/jinkou07.csv




261 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 07:38:49 ]
>>259 訂正

修正前 → +:演算0 -:演算1 *:演算2 /:演算3 xor:演算4 and:演算5 or:演算6
修正後 → +:演算0 -:演算1 *:演算2 %(剰余):演算3 xor:演算4 and:演算5 or:演算6

262 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 08:09:06 ]
>>250

欲しい結果(_荷受日下限,_荷受日上限) :-
  write('荷物id 品物 重さ 作業者名1 作業内容1 作業状況 対応班2\n'),
  荷物テーブル(_id,_中身id,_荷受け),
  _荷受け @>= _荷受日下限,
  _荷受け @=< _荷受日上限,
  中身テーブル(_中身id,_品物,_重さ),
  作業テーブル(_id,_作業項目id,_作業者名,_作業状況),
  作業項目テーブル(_作業項目id,_作業内容),
  作業班(_作業者名,_作業状況,_重さ,_対応班),
  write_formatted('%t %t %t %t %t %t %t\n',[_id,_品物,_重さ,_作業者名,_作
業内容,_作業状況,_対応班]),
  fail.
欲しい結果(_,_).

作業班(_,_,_重さ,1) :- _重さ >= 1000,!.
作業班(_作業者名,_作業状況,_,2) :- _作業者名=鈴木,_作業状況='未',!.
作業班(田中,_,_,3) :- !.


263 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 08:11:05 ]
>>250 変なところで折り返しが出たので書き直し。
% Prolog

欲しい結果(_荷受日下限,_荷受日上限) :-
  write('荷物id 品物 重さ 作業者名1 作業内容1 作業状況 対応班2\n'),
  荷物テーブル(_id,_中身id,_荷受け),
  _荷受け @>= _荷受日下限,
  _荷受け @=< _荷受日上限,
  中身テーブル(_中身id,_品物,_重さ),
  作業テーブル(_id,_作業項目id,_作業者名,_作業状況),
  作業項目テーブル(_作業項目id,_作業内容),
  作業班(_作業者名,_作業状況,_重さ,_対応班),
  write_formatted('%t %t %t %t %t %t %t\n',[_id,_品物,_重さ,_作業者名,_作業内容,_作業状況,_対応班]),
  fail.
欲しい結果(_,_).

作業班(_,_,_重さ,1) :- _重さ >= 1000,!.
作業班(_作業者名,_作業状況,_,2) :- _作業者名=鈴木,_作業状況='未',!.
作業班(田中,_,_,3) :- !.

264 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 10:33:47 ]
>>201
使用言語: 十進BASIC

OPTION ARITHMETIC DECIMAL_HIGH !10進1000桁モード
INPUT PROMPT "a =":a
INPUT PROMPT "b =":b
PRINT "a + b =";a+b
PRINT "a - b =";a-b
PRINT "a * b =";a*b
END

実行結果
a =1.9999999999999999999999999
b =0.0000000000000000000000001
a + b = 2
a - b = 1.9999999999999999999999998
a * b = .00000000000000000000000019999999999999999999999999

265 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 10:40:01 ]
>>253
% Prolog
% prolog.asia/html/prolog/t815.html などにすでにあります。ここでは、

西暦を入力させ、うるう年かどうかを判定する(_西暦) :-
  西暦の年号が400で割り切れる年はうるう年(_西暦),!.
西暦を入力させ、うるう年かどうかを判定する(_西暦) :-
  西暦の年号が400で割り切れないが、100で割り切れる年はうるう年でない(_西暦),!.
西暦を入力させ、うるう年かどうかを判定する(_西暦) :-
  西暦の年号が100で割り切れないが、4で割り切れる年はうるう年(_西暦).
 
西暦の年号が400で割り切れる年はうるう年(_西暦) :- 割り切れる(_西暦,400),!.

西暦の年号が400で割り切れないが、100で割り切れる年はうるう年でない(_西暦) :-
  \+(割り切れる(_西暦,400)),
  割り切れる(_西暦,100),!,fail.

西暦の年号が100で割り切れないが、4で割り切れる年はうるう年(_西暦) :-
  \+(割り切れる(_西暦,100)),
  割り切れる(_西暦,4),!.

割り切れる(A,B) :- 0 is A mod B.


266 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 11:19:21 ]
>>260
% Prolog

並び替えを行って人口の大きい順に人口と県名を表示する(_ファイル) :-
  see(_ファイル),
  findall([_人口,_県名],(repeat,get_line(X),(X=end_of_file,!,fail;
      split(X,[','],[_県名,_人口])),L),
  seen,
  降順に整列する(L,L1),
  人口と県名を表示する(L1).

人口と県名を表示する([]) :- !.
人口と県名を表示する([[_人口,_県名]|R]) :-
  write_formatted('%t %t\n',[_人口,_県名]),
  人口と県名を表示する(R).

267 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 11:40:30 ]
>>213
使用言語:J

p:i._1 p: 100
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

268 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 12:19:34 ]
>>215
使用言語:maxima

(%i41) display2d:false;
(%o41) false
(%i42) solve([x1+5*x2+x3=2,3*x1+4*x2=2,9*x1+10*x2+4*x3=8],[x1,x2,x3]);
(%o42) [[x1 = 2/5,x2 = 1/5,x3 = 3/5]]

269 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 16:12:12 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/810
# [1] 授業単元:プログラミング論(大学)
# [2] 問題文:softbankのiPhoneの使用料金を計算するプログラムを作りなさい


270 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 16:13:13 ]
>>215
使用言語:J

]a=:3 3 $ 1 5 1,3 4 0,9 10 4
1 5 1
3 4 0
9 10 4
]b=:2 2 8
2 2 8
(%.a)(+/ .*)b
0.4 0.2 0.6



271 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 17:08:31 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/812
# [1] 授業単元: 授業ではないですがお願いします
# [2] 問題文(含コード&リンク): 100個の0〜10までの数字があるとするとき0じゃない数字の個数を数えて表示させたいんですが
# どうすればいいのかよくわかりませんのでお願いします

272 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 17:45:51 ]
>>271
使用言語:J

a=: ?100#11
4 25 $ a
2 4 3 9 5 10 4 6 10 3 2 3 0 10 9 7 1 2 2 9 5 2 6 9 2
1 3 6 2 6 5 7 9 8 7 8 10 0 8 4 6 3 4 2 8 3 0 5 4 4
0 2 7 8 1 6 6 8 8 5 8 10 6 6 3 7 1 9 8 5 6 2 0 9 3
6 5 1 3 1 2 0 6 9 2 3 4 1 7 7 10 7 3 2 3 4 3 4 8 8
+/0=a
6

273 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 17:52:53 ]
>>272 >>271
使用言語:J
間違えました。0の個数を数えてました。

a=: ?100#11
4 25 $ a
2 4 3 9 5 10 4 6 10 3 2 3 0 10 9 7 1 2 2 9 5 2 6 9 2
1 3 6 2 6 5 7 9 8 7 8 10 0 8 4 6 3 4 2 8 3 0 5 4 4
0 2 7 8 1 6 6 8 8 5 8 10 6 6 3 7 1 9 8 5 6 2 0 9 3
6 5 1 3 1 2 0 6 9 2 3 4 1 7 7 10 7 3 2 3 4 3 4 8 8

+/0~:a
94

274 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 18:14:48 ]
>>217
使用言語:maxima

(%i50) for n:0 thru 30 do printf(true,"n=~2d:e=~,15f~%",n,sum(1/i!,i,0,n));
n= 0:e=1.000000000000000
:
n=30:e=2.718281828459045

275 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 18:20:58 ]
>>271
% Prolog

'100個の0〜10までの数字を発生させる'(L) :-
  length(L,100),
  '0〜10までの数字を発生させる'(L).

'0〜10までの数字を発生させる'([]) :- !.
'0〜10までの数字を発生させる'([N|R]) :-
  N is random mod 11,
  '0〜10までの数字を発生させる'(R).

'0じゃない数字の個数を数えて表示させる'(L) :-
  count((member(A,L),number(A),\+(A=0)),_0じゃない数字の個数),
  write_formatted('0じゃない数字は%t個です\n',[_0じゃない数字の個数]).

276 名前:デフォルトの名無しさん [2010/01/15(金) 21:14:06 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/819
# [1] 授業単元:情報処理基礎
# [2] 問題文:以下はmain関数、サブ関数で作成します。
#       1.数値nを一つ入力し、各桁の和を求めよ。(123→6)
#       2.数値nを反転した値を表示せよ。(123→321)

277 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 21:15:57 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/820
# [1] 授業単元:情報処理基礎
# [2] 問題文:二次方程式ax^2+bx+c=0の解を求めるプログラムを作成せよ。
#        a,b,cの値を入力する。計算結果は必ず5種類表示すること。
#        a=b=c=0の場合、処理を終了する。a=b=0、Cが0以外の場合は「不能」と表示する。
#        a=0、bが0以外の場合は「一次方程式」と解を表示する。
#        判別式がD<0の場合、「虚解」と表示する。
#        判別式がD<0の場合以外も、必要な表示、結果を表示します。

278 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 21:39:51 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/821
# [1] 授業単元: コンパイラ
# [2] 問題文(含コード&リンク):
# PAdaで記述されたソースプログラムをC言語のソースプログラムに
# 変換するコンパイラを作成しなさい。
# ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10363.zip
#


279 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 22:29:17 ]
>>276
% Prolog
main :-
  催促付き整数入力('ひとつ対象となる整数を入力してください : ',_整数),
  write('1.数値nを一つ入力し、各桁の和を求めよ。(123→6)\n'),
  write('2.数値nを反転した値を表示せよ。(123→321)\n'),
  催促付き整数入力('1-2を選択してください : ',_整数2),
  目標選択(_整数2,_整数).

目標選択(1,_数値n) :-
  '数値nを一つ入力し、各桁の和を求める'(_数値n,_各桁の和),
  write_formatted('各桁の和は%tです\n',[_各桁の和]).
目標選択(2,_数値n) :- '数値nを反転した値'を表示する'(_数値n).

'数値nを一つ入力し、各桁の和を求める'(_数値n,_各桁の和) :-
  number_codes(_数値n,L),
  findsum(U,(member(A,L),U is A-48),_各桁の和).

'数値nを反転した値'を表示する'(_数値n) :-
  '数値nを反転した値'(_数値n,_数値nを反転した値),
  write_formatted('数値を反転した値は%tです\n',[_数値nを反転した値]).

'数値nを反転した値'(_数値n,_数値nを反転した値) :-
  number_codes(_数値n,L1),
  reverse(L1,L2),
  number_codes(_数値nを反転した値,L2).


280 名前:デフォルトの名無しさん [2010/01/15(金) 22:36:02 ]
pc12.2ch.net/test/read.cgi/tech/1259990485/701
# 文字列をn文字ずつ&1文字ずつに分割したいのですが
# x = "ABCDEFGHIJKLMNOPQRSTUVWXY"
# x = x.scan(/.{5}/)
# x.collect!{|y|y.scan(/./)}
# p x
# =>[["A","B","C","D","E"],["F","G","H","I","J"],["K","L","M","N","O"],["P","Q","R","S","T"],["U","V","W","X","Y"]]
# みたいに書くと都度、正規表現によるマッチが行われるので遅いです
# もっと高速に実行する方法があったら教えてください。よろしくお願いします




281 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 22:50:14 ]
>>280
% Prolog

'文字列をn文字ずつ&1文字ずつに分割'(_文字列,N文字ずつ,L) :-
  atom_chars(_文字列,Chars),
  'N個組'(N文字ずつ,Chars,L).

'N個組'(_,[],[]) :- !.
'N個組'(N,L,[U|R]) :-
  先頭からN個(N,L,U,R1),
  'N個組'(N,R1,R).

先頭からN個(_,[],[],[]) :- !.
先頭からN個(0,L,[],L) :- !.
先頭からN個(N,[A|R1],[A|R2],R) :-
  M is N - 1,
  先頭からN個(M,R1,R2,R).

282 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 23:17:23 ]
>>280
使用言語:J

a=:'ABCDEFGHIJKLMNOPQRSTUVWXY'
f=:dyad def ';/&.> (-x)<\y'
5 f a
+-----------+-----------+-----------+-----------+-----------+
|+-+-+-+-+-+|+-+-+-+-+-+|+-+-+-+-+-+|+-+-+-+-+-+|+-+-+-+-+-+|
||A|B|C|D|E|||F|G|H|I|J|||K|L|M|N|O|||P|Q|R|S|T|||U|V|W|X|Y||
|+-+-+-+-+-+|+-+-+-+-+-+|+-+-+-+-+-+|+-+-+-+-+-+|+-+-+-+-+-+|
+-----------+-----------+-----------+-----------+-----------+
7 f a
+---------------+---------------+---------------+---------+
|+-+-+-+-+-+-+-+|+-+-+-+-+-+-+-+|+-+-+-+-+-+-+-+|+-+-+-+-+|
||A|B|C|D|E|F|G|||H|I|J|K|L|M|N|||O|P|Q|R|S|T|U|||V|W|X|Y||
|+-+-+-+-+-+-+-+|+-+-+-+-+-+-+-+|+-+-+-+-+-+-+-+|+-+-+-+-+|
+---------------+---------------+---------------+---------+

283 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 23:48:53 ]
>>276
使用言語:J

g=:monad def '+/"."0":y'
h=:monad def '|.&.":y'
f=:monad define
smoutput ('各桁の和=',":g y),:'反転値 =',":h y
)

f 123
各桁の和=6
反転値 =321

284 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 05:09:26 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/834
# [2010/01/15 19:27:07] リュック: 【質問テンプレ】
# [1] 授業単元: プログラミング演習
# [2] 問題文(含コード&リンク): ime.nu/www.dotup.org/uploda/www.dotup.org563734.zip.html
# [2] のコピー: prolog.asia/html/prolog/c133_834.html

285 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 05:37:43 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/827
# 下記の機能を備えた極めて単純なデータベースシステムであるカード型データベースシステムの構築を考える。
# 課題7-1
# 下記のような方針でプログラムを作成せよ。
# 新しい科目を登録する機能
# すでに登録されている科目を修正(更新)する機能
# 登録科目のソート(並び替え)を行う機能
# 登録科目の一部分のみを検索して取り出し、表示する機能
# 登録科目から、卒業までに必要な単位を計算し、表示する機能
# データベースファイルの仕様
# データベースファイルについては、本格的なデータベースになると、アクセス性や
# 安定性など様々な要求を満たす必要があるが、ここでは最も単純なテキストファイルとする。
# さらに、書き込みをfprintfで、読み込みをfscanfで行えるように、 1行中に、
# それぞれの項目(フィールド)がスペースで区切られているようなファイルとする。
# なお、この場合、それぞれの項目はスペースを含んでいけないこととなる。
# 履修科目データベースシステムの例においては、例えば、
# 単位の種類(必修、選択必修など)、単位数、年次、前期か後期か、再履修かどうか、成績の6項目を含むこととする。
# ここで、いくつかの選択肢から選択するものについては、数字で置き換えることとする。
# このような仕様に基づいたファイルの例は以下のようなものになる。ここでは、ファイル名は、"ユーザ名_kamokudb.txt"とする。

286 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 06:00:50 ]
>>277
% Prolog

'二次方程式ax^2+bx+c=0の解を求める'(0,0,0,_) :- !.
'二次方程式ax^2+bx+c=0の解を求める'(0,0,C,不能) :- \+(C==0),!.
'二次方程式ax^2+bx+c=0の解を求める'(0,B,C,一次方程式) :- \+(B==0),!.
'二次方程式ax^2+bx+c=0の解を求める'(A,B,C,_解) :-
  _判別式の値 is (B ^ 2 - 4 * A * C),
  '二次方程式ax^2+bx+c=0の解判定'(_判別式の値,A,B,C,_解).

'二次方程式ax^2+bx+c=0の解判定'(_判別式の値,_,_,_,虚解) :- _判別式の値 < 0,!.
'二次方程式ax^2+bx+c=0の解判定'(_判別式の値,A,B,C,_解) :-
  _解 is ((-1) * B + sqrt(_判別式の値)) / ( 2 * A ).
'二次方程式ax^2+bx+c=0の解判定'(_判別式の値,A,B,C,_解) :-
  _解 is ((-1) * B - sqrt(_判別式の値)) / ( 2 * A ).

287 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 06:44:06 ]
>>269
% Prolog (その一)

:- op(350,xf,円).
お客様データベース('長石 輝',ホワイトプラン通話料,2130).
お客様データベース('長石 輝',ホワイトプランメールウェブ利用料金,0).
お客様データベース('長石 輝',パケット使用量,47310).

iphoneのご利用料金(_お客様名,_ご利用料金 円) :-
  お客様データベース(_お客様名,ホワイトプラン通話料,_通話料),
  お客様データベース(_お客様名,ホワイトプランメールウェブ利用料金,_メール
ウェブ利用料金),
  お客様データベース(_お客様名,パケット使用量,_パケット使用量),
  'ホワイトプラン(i)'(_通話料,_メールウェブ利用料金,_ホワイトプラン料金
円),
  パケット料金(_パケット使用量,_パケット料金 円),
  _ご利用料金 is _ホワイトプラン料金 + _パケット料金.

'ホワイトプラン(i)'(_ホワイトプラン料金 円) :-
  ホワイトプラン基本使用料・通話料(_通話料 円,_基本使用料・通話料 円),
  ホワイトプランメールウェブ利用料金(_メールウェブ利用料金 円),
  _ホワイトプラン料金 is _基本使用料・通話料 + _メールウェブ利用料金,!.

ホワイトプラン基本使用料・通話料(_通話料 円,_基本使用料・通話料 円) :-
  _基本使用料・通話料 is 980 + _通話料.

288 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 06:45:46 ]
>>269
% Prolog

ホワイトプラン基本使用料・通話料(_通話料 円,_基本使用料・通話料 円) :-
  _基本使用料・通話料 is 980 + _通話料.

ホワイトプランメールウェブ利用料金(0 円).

パケット料金(_パケット,_パケット料金 円) :-
  'S!ベーシックパック(i)'(_パケット料金_1 円),
  パケット定額フル(_パケット,_パケット料金_2 円),
  _パケット料金 is _パケット料金_1 + _パケット料金_2,!.

'S!ベーシックパック(i)'(315 円).

パケット定額フル(_パケット,1029 円) :- _パケット =< 12250,!.
パケット定額フル(_パケット,_パケット料金 円) :-
  _パケット > 12250,
  _パケット =< 71250,
  _パケット料金 is (_パケット - 12250) * 0.084 + 1029,!.
パケット定額フル(_パケット,5985 円) :- _パケット > 71250,!.


289 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 08:16:13 ]
>>258
% Prolog

重み付け平均をRLにセット(AL,RL) :-
  _重みならび = [1,3,4,3,1],
  sum(_重みならび,_重み合計),
  list_nth(N-2,AL,A_2),
  list_nth(N-1,AL,A_1),
  list_nth(1,AL,A1),
  list_nth(2,AL,A2),
  append([A_2,A_1|AL],[A1,A2],AL2),
  N2 is N + 2,
  重み付け平均をRLにセット(3,N2,_重みならび,_重み合計,AL2,RL).

重み付け平均をRLにセット(M,N,_重みならび,_重み合計,AL,[]) :- M > N,!.
重み付け平均をRLにセット(M,N,_重みならび,_重み合計,AL,[_重み付け平均|R]) :-
  findall(B,(for(M-2,U,M+2),list_nth(U,AL,B)),L1),
  重み付け平均(L1,_重みならび,_重み合計,0,_重み付け平均),
  M2 is M + 1,
  重み付け平均をRLにセット(M2,N,_重みならび,_重み合計,AL,R).

重み付け平均([A|R1],[B|R2],_重み合計,S1,_重み付け平均) :-
  _重み付け平均 is S1 / _重み合計,!.
重み付け平均([A|R1],[B|R2],_重み合計,S1,_重み付け平均) :-
  S2 is S1 + A * B,
  重み付け平均(R1,R2,_重み合計,S2,_重み付け平均).

290 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 08:56:03 ]
>>258
使用言語:J

f=:dyad def '(+/x)%~+/"1 x*(i.#y)|."0 1 y'

1 3 4 3 1 f 1 2 3 4 5
1.25 3.75 5 3.75 1.25



291 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 09:25:52 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/841
# [1] 授業単元: コンピュータシミュレーション
# [2] 問題文(含コード&リンク):円盤状に分布させた質点に回転の初期条件をあたえたいのですが、
# 中心からの距離、位置により速度の大きさと向きが変わるのでどのようにおけばいいのかお願いします。
#


292 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 09:41:18 ]
>>231
% Prolog

九九表を作り,テキストファイルに書き出す(_テキストファイル) :-
  九九表を作り(_九九表),
  tell(_テキストファイル),
  書き出す(_九九表),
  told.

九九表を作り(M,N,[]) :- M > N,!.
九九表を作り(M,N,[L|R]) :-
  findall(K,(for(1,J,9),K is J * M),L),
  M2 is M + 1,
  九九表を作り(M2,N,R).

テキストファイルに書き出す(_テキストファイル,_ならび) :-
  tell(_テキストファイル),
  書き出す(_ならび),
  told.

書き出す([]) :- !.
書き出す([L|R]) :-
  concat_atom(L,' ',S),
  write_formatted('%t\n',[S]),
  書き出す(R).


293 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 10:07:07 ]
>>256
% Prolog (その一)
標準入力から読み込んだテキストファイルを辞書順に整列して標準出力する :-
  標準的整列ルール(32,127,_標準的整列ルール),
  例外的整列ルール(_例外的整列ルール),
  get_lines(user_input,Lines),
  concat_atom(Lines,' ',S),
  split(S,[' '],_語彙ならび),
  辞書順整列(_語彙ならび,_標準的整列ルール,_例外的整列ルール,[],_辞書順に整列された語彙ならび),
  語彙ならびを標準出力する(_語彙ならび).

語彙ならびを標準出力する([]).
語彙ならびを標準出力する([_語彙|R]) :-
  write_formatted('%t\n',[_語彙]),
  語彙ならびを標準出力する(R).

標準的整列ルール(M,N,[]) :- M > N,!.
標準的整列ルール(M,N,[A|R]) :-
  \+((M >=97,M =< 122)),
  char_code(A,M),
  M2 is M + 1,
  標準的整列ルール(M2,N,R),!.
標準的整列ルール(M,N,[A,B|R]) :-
  M >= 65,M =< 90,
  M32 is M + 32,
  char_code(A,M),char_code(B,M32),
  M2 is M + 1,
  標準的整列ルール(M2,N,R),!.


294 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 10:20:25 ]
>>293 訂正
% Prolog この定義の一番最後は _辞書順に整列された語彙ならび でないといけない。
標準入力から読み込んだテキストファイルを辞書順に整列して標準出力する :-
  標準的整列ルール(32,127,_標準的整列ルール),
  例外的整列ルール(_例外的整列ルール),
  get_lines(user_input,Lines),
  concat_atom(Lines,' ',S),
  split(S,[' '],_語彙ならび),
  辞書順整列(_語彙ならび,_標準的整列ルール,_例外的整列ルール,[],_辞書順に整列された語彙ならび),
  語彙ならびを標準出力する(_辞書順に整列された語彙ならび).



295 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 10:42:01 ]
>>192
% Prolog
現在の対ドル為替レート(92.69).

日本円をドルに変換する(_日本円,_ドル,_セント) :-
  現在の対ドル為替レート(_現在の為替レート),
  _ドル is truncate(float_integer_part(_日本円 / _現在の為替レート)),
  _セント is truncate(float_fractional_part(_日本円 / _現在の為替レート) * 100).

日本円をドルとセントに変換して金種を計算する(_日本円,_ドルの金種,_セントの金種) :-
  日本円をドルに変換する(_日本円,_ドル,_セント),
  ドルの金種計算(_ドル,[100,50,20,10,5,2,1],_ドルの金種),
  セントの金種計算(_セント,[50,25,10,5,1],_セントの金種).

ドルの金種計算(_,[],[]) :-
ドルの金種計算(D,[_金種|R1],[[_金種,_枚数]|R2]) :-
  _枚数 is truncate(D // _金種),
  D2 is truncate(D mod _金種),
  ドルの金種計算(D2,R1,R2).

セントの金種計算(_,[],[]) :-
セントの金種計算(C,[_金種|R1],[[_金種,_枚数]|R2]) :-
  _枚数 is truncate(C // _金種),
  C2 is truncate(C mod _金種),
  セントの金種計算(C2,R1,R2).



296 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 11:37:09 ]
>>257
% Prolog 問題3 これもこれまで何度も定義された。

行列の転置([[]|_],[]) :- !.
行列の転置(_副行列,[_第一要素ならび|R]) :-
  第一要素と残り要素の収集(_副行列,_第一要素ならび,_残り要素ならび),
  行列の転置(_残り要素ならび,R),!.

第一要素と残り要素の収集([],[],[]) :- !.
第一要素と残り要素の収集([[A|R1]|R2],[A|R3],[R1|R4]) :-
  第一要素と残り要素の収集(R2,R3,R4).


297 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 11:47:35 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/843
# [1] 授業単元:計算機基本
# [2] 問題文(含コード&リンク):
# 1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求めるプログラムを作ってみましょう。
# 途中経過も表示してください。
# 例:1^2 + 2^2 =
# 1^2 + 2^2 + 3^2 =
# ....


298 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 16:32:10 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/847
# [1] 授業単元: プログラミング演習
# [2] 問題文(含コード&リンク): ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10368.txt
#


299 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 16:37:32 ]
# 基本課題 2a(数式の読み込みと表示)
# 課題 2a と 2b では,算術式を読み,表示し,値を求めるプログラムを作る.
# 限られた時間内で数式処理の本質部分を効率よく学ぶために,
# 入力できる算術式の構文を,次の BNF で定めるものに限る.
#
# 定数 ::= 0 | 1 | … | 9
# 変数 ::= a | b | … | z | A | B | … | Z
# 算術式 ::= 定数
# | 変数
# | (算術式+算術式)
# | (算術式*算術式)
#
# つまり,1桁の定数や1文字の変数の和や積からなる式が入力である.
#
# 入力された算術式を読み込み,2分木データとして格納し,そのデータをもとに
# 入力と同じ算術式を表示する,という処理を繰り返すプログラムを作れ.
#
# 次の要求を満たすものを作り,仕様の不明確な部分は各自で詳細化すること.
#
# ・算術式は標準入力から読む
# ・2つの算術式の区切りは1つの空白 (間隔文字や改行文字など) とする
# ・結果は標準出力に書く
# ・構文に合わない算術式を読んだらプログラムを終了する

300 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 16:40:18 ]
# ●基本課題 2b(数式の値の計算)
#
# 課題 2a のプログラムに,算術式の値を計算して表示する機能を追加せよ.
# ただし,変数の値は全て1であるとして,式の値を求めること.
#
# 例えば,入力が (2*3) と (x+(y+z)) の場合,次のような出力をすればよい.
# show: に続いて入力された算術式を,eval: に続いて算術式の値を表示している.
#
# (2*3) ←入力
# show: (2*3)
# eval: 6
#
# (x+(y+z)) ←入力
# show: (x+(y+z))
# eval: 3
#
# まず,算術式の値を求める関数 eval_exp()(exp.c にある)を完成させる.
# 十分な数の検査データを使って動作の正しさを確かめよ.



301 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 16:42:16 ]
# ●基本課題 2c(数式データの基本操作)
#
# 算術式の値を変えずに括弧をくくり直す簡単な式変形を考える.例えば,式
#
# (1+(2+3))
# (a*(b*c))
# ((i*x)+((j*y)+(k*z)))
#
# の括弧を左にくくり直すと,それぞれ,次の式になる.
#
# ((1+2)+3)
# ((a*b)*c)
# (((i*x)+(j*y))+(k*z))
#
# 括弧を左にくくり直せる (A+(B+C)) や (A*(B*C)) の形の算術式を
# ((A+B)+C) や ((A*B)*C) の形にする式変形は,式に対応する木を
# 「左に転回」する変形と捉えられる.

302 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 19:23:50 ]
>>297
% Prolog

'1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(_経過,_和) :-
  '1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(1,[],_経過,0,_和).

'1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(M,_経過,_経過,_和,_和) :- M > 10,!.
'1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(M,_経過1,_経過,S1,_和) :-
  M =< 10,
  concat_atom([M,'^2'],U),
  append(_経過1,[U],_経過11),
  concat_atom(_経過11,'+',_経過),
  _和 is truncate(M ^ 2 + S1).
'1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(M,_経過1,_経過,S1,_和) :-
  M =< 10,
  concat_atom([M,'^2'],U),
  append(_経過1,[U],_経過2),
  S2 is truncate(M ^ 2 + S1),
  M2 is M + 1,
  '1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(M2,_経過2,_経過,S2,_和).

303 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 20:04:17 ]
>>297
ruby
sum=0;array=[]
for i in 1..10
sum+=i**2
array.push (i.to_s(10)+"^2")
puts array.join(" + ") + " = " + sum.to_s(10)
end

304 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 23:28:57 ]
>>297
使用言語:Io

なんか前にやった問題だなあと、ながめていたらrubyによる解答が
書き込まれた。これを参考にもう一度やってみた。

Io> s:=0;a:="";for(i,1,10,writeln(a=a .. i .. "^2"," = ",s=s+i*i);a=a .. " + ")

305 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 01:00:17 ]
>>297
;; Common Lisp ひさしぶりに挑戦
(dotimes (n 10)
(let (lst)
(dotimes (i (+ n 1)) (push (+ i 1) lst))
(setf lst (reverse lst))
(format t "~A = ~A~%"
(reduce #'(lambda (x y) (concatenate 'string x " + " y))
(map 'list #'(lambda (x) (concatenate 'string (princ-to-string x) "^2")) lst))
(reduce #'+ (map 'list #'(lambda (x) (* x x)) lst)))))


306 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 05:23:53 ]
>>297
使用言語:maxima

for i thru 10 do printf(true,"~{~a^2~^ + ~} = ~a~%",a:makelist(j,j,1,i),lsum(k*k,k,a));

307 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 05:37:41 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/864
# [1] 授業単元: プログラミング演習 (木構造と数式処理)
# [2] 問題文(含コード&リンク):
#
# 算術式の値を変えずに括弧をくくり直す簡単な式変形を考える.例えば,式
#
# (1+(2+3))
# (a*(b*c))
# ((i*x)+((j*y)+(k*z)))
#
# の括弧を左にくくり直すと,それぞれ,次の式になる.
#
# ((1+2)+3)
# ((a*b)*c)
# (((i*x)+(j*y))+(k*z))
#
# 括弧を左にくくり直せる (A+(B+C)) や (A*(B*C)) の形の算術式を((A+B)+C) や ((A*B)*C) の形にする式変形は,式に対応する木を
# 「左に転回」する変形と捉えられる
#
# この操作を実行する関数 rotate_left_exp()を完成させてください。
# 括弧をくくり直すと値の変わる (8+(8*8)) のような式や,括弧をくくり直せる部分が内側にある (a+(b*(c*d))) のような式は,
# 変形しないこと.

308 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 06:11:43 ]
>>297 訂正
% Prolog 一引数増やします。
'1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(M,_経過,_和) :-
  '1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(1,M,[],_経過,0,_和).

'1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(M,M,_経過,_経過,_和,_和) :- M > 10,!.
'1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(M,M,_経過1,_経過,S1,_和) :-
  M =< 10,
  concat_atom([M,'^2'],U),
  append(_経過1,[U],_経過11),
  concat_atom(_経過11,'+',_経過),
  _和 is truncate(M ^ 2 + S1).
'1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(M,MX,_経過1,_経過,S1,_和) :-
  M =< 10,
  concat_atom([M,'^2'],U),
  append(_経過1,[U],_経過2),
  S2 is truncate(M ^ 2 + S1),
  M2 is M + 1,
  '1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(M2,MX,_経過2,_経過,S2,_和).

309 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 06:14:45 ]
>>308 (>>297)
% Prolog これで以下のように使います。

?- '1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(N,S,_和),write_formatted('%t=%t\n',[S,_和]),N>=10.
1^2=1
1^2+2^2=5
1^2+2^2+3^2=14
1^2+2^2+3^2+4^2=30
1^2+2^2+3^2+4^2+5^2=55
1^2+2^2+3^2+4^2+5^2+6^2=91
1^2+2^2+3^2+4^2+5^2+6^2+7^2=140
1^2+2^2+3^2+4^2+5^2+6^2+7^2+8^2=204
1^2+2^2+3^2+4^2+5^2+6^2+7^2+8^2+9^2=285
1^2+2^2+3^2+4^2+5^2+6^2+7^2+8^2+9^2+10^2=385

N = 10,
S = '1^2+2^2+3^2+4^2+5^2+6^2+7^2+8^2+9^2+10^2',
_和 = 385.


310 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 06:17:52 ]
>>308 (>>297)
% Prolog または、次のように利用もします。

?- '1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(N,S,_和).

N = 1,
S = '1^2',
_和 = 1;
N = 2,
S = '1^2+2^2',
_和 = 5;
N = 3,
S = '1^2+2^2+3^2',
_和 = 14;

<中略>

N = 9,
S = '1^2+2^2+3^2+4^2+5^2+6^2+7^2+8^2+9^2',
_和 = 285;
N = 10,
S = '1^2+2^2+3^2+4^2+5^2+6^2+7^2+8^2+9^2+10^2',
_和 = 385;
no.
?-



311 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 06:38:27 ]
pc11.2ch.net/test/read.cgi/db/1252492296/445
# MySQL 5.1での質問です。
#
# A B C
# 1 q name1
# 2 w name2
# 3 e name3
# 4 q name4
# 5 t name5
#
# 上記テーブルのB列の重複を除いたA,B,C列がほしい場合
#
# SELECT DISTINCT B FROM table_name;
#
# ではB列の重複を除くだけで他の列がとれません。他の列も併せて取得する場合はど
のような解決策がありますか?
#
# 望んでる結果は以下のものです。
#
# A B C
# 1 q name1
# 2 w name2
# 3 e name3
# 5 t name5
#

312 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 07:37:43 ]
ttp://pc12.2ch.net/test/read.cgi/tech/1260532772/866
#
# 【質問テンプレ】
# [1] 授業単元:C言語演習
# [2] 問題文(含コード&リンク): コマンド引数を使用して
# 以下のように指定した文字列中の指定番号の文字を表示するプログラムを作成せよ。
#
# 例:./prg1 abcde 1
# char 1 is "a"
# ./peg1 abcdef123456 10
# char 10 is "4"
#
# エラー処理もしっかり行うこと。

313 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 09:40:27 ]
>>311
使用言語:J

A=:,.1;2;3;4;5
B=:'q';'w';'e';'q';'t'
C=:,.'name1';'name2';'name3';'name4';'name5'

A,.B,.C
+-+-+-----+
|1|q|name1|
+-+-+-----+
|2|w|name2|
+-+-+-----+
|3|e|name3|
+-+-+-----+
|4|q|name4|
+-+-+-----+
|5|t|name5|
+-+-+-----+

(~:B)# A,.B,.C
+-+-+-----+
|1|q|name1|
+-+-+-----+
|2|w|name2|
+-+-+-----+
|3|e|name3|
+-+-+-----+
|5|t|name5|
+-+-+-----+


314 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 16:53:42 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/881
# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10376.txt
#
# 連立1次方程式の一般的な数値解法にはガウスの単純消去法がある。
# 下記の連立1次方程式の解法をC言語で表せ。
#
# x1 + 5x2 + x3 = 2
# 3x1 + 4x2 = 2
# 9x1 +10x2 + 4x3 = 8


315 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:00:18 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/881
# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10376.txt
#
# 問題文の構造が大きすぎてコピーできません。[2]のリンクを各自で見てください。

316 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:31:46 ]
>>313
解説お願い。

317 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:39:41 ]
>>315>>314と同じものになってしまいました。構造が多くてコピーできなかったのは
以下の問題です。
pc12.2ch.net/test/read.cgi/tech/1260532772/885
# [1] 授業単元:プログラミング(大学講義)
# [2] 問題文
# ハングマンを作成せよ。
# ime.nu/ipl.sfc.keio.ac.jp/text/comp-prog-2007-4/main_c9.html#doc1_id2542
# ime.nu/ipl.sfc.keio.ac.jp/text/comp-prog-2007-4/main_c10.html#doc1_id2748
#




318 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 19:16:26 ]
>>316
「~.」が通常のuniqですが、AとCを道連れにするするために
「~:」を使いました。これは、いきなりuniqせずに残す要素を1で
削除する要素を0で表したリストを返します。
「#」はコピーなんですが、1と0のリストを左引数に、操作するデータ
を右引数にすると1に対応するデータだけを返します。
B=:,.'q';'w';'e';'q';'t'
~. B
+-+
|q|
+-+
|w|
+-+
|e|
+-+
|t|
+-+

~: B
1 1 1 0 1

1 1 1 0 1 # B
+-+
|q|
+-+
|w|
+-+
|e|
+-+
|t|
+-+

319 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 19:52:42 ]
>>318
「~:」によって、どうして、
01111 ではなく 11101 の選択になるのですか?

320 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 19:55:31 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/894
# お願いします
# [1] 授業単元: プログラミング演習�
# [2] 問題文(含コード&リンク):
# Printfを作る。
# %d, %c, %sのみサポートする。



321 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 21:14:04 ]
>>319
J言語のuniqは重複した要素の内、最初にあらわれたものを
残すようです。

322 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 21:16:39 ]
pc12.2ch.net/test/read.cgi/tech/1258320456/85
# 【課題】
# 同じ長さのリストA,Bがある。Aはソート対象のデータ、Bは比較用の値が入っている。
# A,Bの2つの引数をとり、Bの値が昇順になるようにAをソートする関数を定義しなさい。
# 引数のリストは破壊しても良く、ソート結果は戻り値・引数Aを上書きのどちらでも良い。
# 処理の早いものには追加点を与える。
#

323 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 21:18:13 ]
>>321
ご丁寧な回答に感謝します。

324 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 06:01:26 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/911
# お願いします
# [1] 授業単元:電子演算機演習
# [2] 問題文(含コード&リンク):
#  2次元の文字配列が、main関数内において次の詞で初期化(空白行も含める)されている。
# 例によって、初期化に用いられた詞の文字数や行数などはわかっていないものとする。
#
#  (1)関数NumOfCharで総文字数(空白以外)を、(2)関数NumOfWordで単語数を、(3)関数
#  NumOfLineで行数(空白行は数えない。また、空白行が2行以上続くことはない)を、(4)main
#  関数内でキーボードから一文字入力し、関数NumOfCoinで入力した文字と一致する文字数を数えて、
#  main関数内でそれらの数を表示する。文字列に小細工をしないこと(単語:空白又は改行から空白
#  又は改行まで)


325 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 06:05:16 ]
pc12.2ch.net/test/read.cgi/tech/1248012902/728
# 【 課題 】国旗を表示するプログラム(日の丸、星条旗、ユニオンジャック等)を作れ。 指定された国旗を画面に表示する。少なくても8種類以上。 国旗の指定にはメニューとかボタンとかを表示して、選択させること。
# 国旗は図形として描くこと。写真を貼り付けたりしては駄目。


326 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 06:11:51 ]
pc12.2ch.net/test/read.cgi/tech/1262163854/238
# Repl-Aceというテキスト置換ツールを使っているんですが、
#
# 1月
# ・1日
# ・2日
# ・3日
# 2月
# ・1日
# ・2日
# ・3日
#
# といったテキストを、
#
# 1月1日
# 1月2日
# 1月3日
# 2月1日
# 2月2日
# 2月3日
#
# といったように置換することができず困っています。
# 単純な文字の置換や簡単な正規表現は理解できるのですが、
# 1月から2月までの「・」を「1月」に置換、2月から3月までの「・」を「2月」に置換、3月から(ry
# を一気に行えるような正規表現ってありますか?



327 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 06:15:06 ]
pc12.2ch.net/test/read.cgi/tech/1258320456/85
# 【課題】
# 同じ長さのリストA,Bがある。Aはソート対象のデータ、Bは比較用の値が入っている。
# A,Bの2つの引数をとり、Bの値が昇順になるようにAをソートする関数を定義しなさい。
# 引数のリストは破壊しても良く、ソート結果は戻り値・引数Aを上書きのどちらでも良い。



328 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 06:18:30 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/922
# visual studioのwindowsフォームアプリケーション visual C++のプログラミングについて質問です!!
# かなり急いでます。
# チェックボックスを5個とボタン1個を使いアンケートみたいなプログラムを作りたいのですができません。
#
# 内容としてはチェックの数で表示される答えを違うようにしたいのです。
# 0〜1個つけたら良い
# 2〜3個つけたら普通
# 4〜5個つけたら悪い
# みたいな感じで最後にボタンを押したら評価がでてくるというものです。
# すべてのプログラムを教えてください!!


329 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 07:04:45 ]
>>326
% Prolog

'1月から2月までの「・」を「1月」に置換、2月から3月までの「・」を「2月」に置換、
3月から...'(File) :-
  get_lines(File,Lines),
  月表示行まで読み飛ばし(Lines,R,_月),
  '.を月表示に置換'(Lines,_月,L),
  ならびを行表示(L).

'.を月表示に置換'([],_,[]) :- !.
'.を月表示に置換'([A|R1],_月,X) :-
  sub_atom(A,_,1,_,'月'),
  split(A,[月],[_月2|_]),
  '.を月表示に置換'(R1,_月2,X).
'.を月表示に置換'([A|R1],_月,[B|R2]) :-
  sub_atom(A,0,1,_,'.'),
  concat_atom([_月,A],B),
  '.を月表示に置換'(R1,_月,R2).

月表示行まで読み飛ばし(Lines,Lines2,_月) :-
  append(_,[A|Lines2],Lines),
  sub_atom(A,_,1,_,'月'),
  split(A,[月],[_月|_]),!.

330 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 07:28:37 ]
pc12.2ch.net/test/read.cgi/tech/1248012902/730
# 【 課題 】ime.nu/rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/881.zip
# Kadai.javaを以下のステップに沿って改めなさい。
# ファイル名およびクラス名はステップに沿ってKadai1,Kadai2というようにKadai+数字としなさい。
#
# Step1.
# 「入力」が押されると、テキストフィールドに入力されている文字とチェックボック>ス の状態を読み取って「名前,出席する(or しない),10000円(or 0円)」と、氏名、同窓 会の出欠、参加費をカンマ区切りでコマンドプロンプトに出力する機能を追加しなさい 。
#
# Step2.
# 「キャンセル」が押されるとテキストフィールドをクリアし、(もしチェックボックスにチェックされていれば)チェックを外す機能を追加しなさい。
#
# Step3.
# Step1と同じ内容をファイル「出席.txt」に書き込む(追い書き)する機能を追加しなさい。
#
# Step4.
# 右上の「×」ボタンを押す事でプログラムを終了する機能を追加しなさい。keizo@keiizo98:~/Desktop$




331 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 13:19:56 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/934
# [1]授業単元:C言語実習(専門学校:選択授業)
# [2]課題:
# コマンドライン引数に与えられた英数字からなる文字列を、長さが長いものが先、同じ長さのものどう
# しでは辞書に記載される場合に先頭のほうに書かれるものが先に出力されるように出力するCを作る。
# 引数が与えられてない場合は、何も出力しない。

332 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 13:36:52 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/942
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10378.txt
# リスト操作関数を作成する問いが5題ある。なお、ここで扱うリストは、ASCII文字を要素とする、頭を持った連結リスト(「文字リスト」と呼ぶ)である。
#
# ●問1.文字リストを作成する関数と印字する関数
#
# 与えられた文字列の各文字を要素とする文字リストを作成し返す関数make_clistと、与えられた文字リスト
# の内容を印字する関数print_clistを作成せよ。
#
#  【問1.については過去ログ等を調べつつ解答を導き出すことができました。コードを最下方に載せます。】
#



333 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 13:38:21 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/942
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10378.txt
# ●問2.リストの内容を比較する関数
#
#  与えられた二つのリストに含まれる文字の並びを辞書式順序(※)で比較し、第一のリストの方が小さければ負の
# 値、大きければ正の値、等しければ0を返す関数compareを作成せよ。
#



334 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 13:39:58 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/942
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10378.txt
# ●問3.リストの一部を取り除く関数
#
#  与えられた文字リストの先頭から見ていき、要素が'<'なら自身と(あれば)直前の要素を、'>'なら自身
# と(あれば)直後の要素を取り除く関数editを作成せよ。
#



335 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 13:41:20 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/942
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10378.txt
# ●問4.リストの一部を別のリストの内容で置き換える関数
#
#  引数として三種のリストが与えられると、第一のリスト内に含まれる第二のリストに一致する部分を第三の
# リストに置き換える関数replaceを作成せよ。ただし新たにリストを作成するのではなく、与えられたリスト
# の変形で実現すること。一度置き換えた部分を再び置き換えの対象としなくてよい。また関数の戻り値として
# 置き換えを行った回数を返すこと。


336 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 13:42:37 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/942
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10378.txt
# ●問5.複数回出現する要素からなるリストを返す関数
#
#  与えられた文字リスト中で複数回現れる文字を残して得られるリストを作成する関数multipleを作成せよ。
# ただし新たにリストを作成するのではなく、与えられたリストの変形で実現すること。また複数回現れる同種
# の文字は、そのいずれか1つだけを残すこと。

337 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 14:35:07 ]
>>327
A=:'chihayafuru';'yothubato';'tomehane'
B=:7;9;6
mysort=: /:

mysort B   単項演算子として使うと並べ替えるための指標(0オリジン)を返す。
2 0 1

A mysort B  二項演算子として使うと右引数のデータでつくった指標で左引数のデータを並べ替える。
+--------+-----------+---------+
|tomehane|chihayafuru|yothubato|
+--------+-----------+---------+

338 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 17:08:52 ]
>>312
% Prolog

program :-
  user_parameters(L),
  L = [S,A|_],
  atom_to_term(A,N,_),
  integer(N),
  sub_atom(S,N,1,_,X),
  write_formatted('Char %t is "%t"\n',[N,X]),
  halt.

339 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 20:19:00 ]
>>331
--luaで。 優先順位は、長さ>大文字区別無し辞書>バイナリ
function f(a,b)
if a:len()==b:len() then
if a:lower()==b:lower() then return a<b end
return a:lower()<b:lower()
end
return a:len()>b:len() and true or false
end
t={}
for i=1,#arg do
table.insert(t,arg[i])
end
print("before") print(unpack(t))
table.sort(t,f)
print("after") print(unpack(t))

340 名前:デフォルトの名無しさん [2010/01/18(月) 21:58:23 ]
ふらっとC#からきました。
宿題ではないんですが、C#でマルコフ連鎖で人工無脳を作りたいのです。
文章を単語に分けたあと(ここまではできてます)、それを配列にいれるんですか?
Rubyだとこう書くらしいんだけど、これをC#だとどう書けばいいんでしょう?
分かち書きにはChasenを使っています。
よろしくアドバイスお願いします。

# マルコフ連鎖で要約
t1 = data[0]['head']
t2 = data[0]['middle']
new_text = t1 + t2
while true
_a = Array.new
data.each do |hash|
_a.push hash if hash['head'] == t1 && hash['middle'] == t2
end

break if _a.size == 0
num = rand(_a.size) # 乱数で次の文節を決定する
new_text = new_text + _a[num]['end']
break if _a[num]['end'] == "EOS"
t1 = _a[num]['middle']
t2 = _a[num]['end']
end

d.hatena.ne.jp/zariganitosh/20090628/1246186477




341 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 05:20:14 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/977
# [1] 授業単元:C言語
# [2] 問題文(含コード&リンク):異なる自然数p,qと、もう一つの自然数dを入力する。
# d以下の自然数kのうちで、k=mp+nqと表すことの出来るもの(m,nは自然数)を小さい順に表示し、
# 最後にその個数を表示するプログラムを作成せよ。入力する数字はp、q、dの順とする
#
# 実行例
# 3 5 10
# 3 5 6 8 9 10
# 合計で6個あります

342 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 05:28:57 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/963
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10384.txt
# 括弧をすべて左にくくり直す式変形に加えて,分配法則を使って + を * の 外側へとくくり出す式変形をするプログラムを作ってください.
# ファイル exp.c に,+ を * の外側にくくり出す式変形をする 関数 dist_prod_exp() を作ること.
# 例えば,算術式 ((x+1)*(y+a)) の+を外にくくり出し,括弧を左にくくり直すことで, 次の式が順に得られればよい.
# ((x+1)*(y+a))
# (((x*y)+(1*y))+((x*a)+(1*a)))
# ((((x*y)+(1*y))+(x*a))+(1*a))
#
# 分配法則を使う順序によっては,結果の式の形が変わる.((A+B)*(C+D)) の形の式は,* の左の式 (A+B) を先に分配すると (((A+B)*C)+((A+B)*D))
# になり,右の式 (C+D) を先に分配すると ((A*(C+D))+(B*(C+D))) になる. 同じ位置で2通りに分配できる場合,この課題では,左の式の分配を優先する.
# 2分木の節を格納するためのデータ構造(Tree 型)を,次のように定義する.
#
# typedef struct _tree {
# char node; /* 節のデータ (1文字) */
# struct _tree *left; /* 左の子へのポインタ */
# struct _tree *right; /* 右の子へのポインタ */
# } Tree;


343 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 07:42:54 ]
pc12.2ch.net/test/read.cgi/tech/1260532772/961
# [1] 授業単元: プログラミング演習
# [2] 問題文(含コード&リンク): 4行4列のint型の行列を、転置するプログラムを作成し、
# 動作の確認のため、転置前と転置後 の行列の内容を表示するようにせよ。

344 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 07:46:58 ]
>>343
% Prolog

'4行4列のint型の行列を、転置する'([[A1,A2,A3,A4],[B1,B2,B3,B4],[C1,C2,C3,C4],[D1,D2,D3,D4]],[[A1,B1,C1,D1],
A2,B2,C2,D2],[A3,B3,C3,D3],[A4,B4,C4,D4]]).

345 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 07:51:53 ]
>>343
% Prolog "["がひとつ抜けた。これが答えといえるかどうか。

'4行4列のint型の行列を、転置する'([[A1,A2,A3,A4],[B1,B2,B3,B4],[C1,C2,C3,C4],[D1,D2,D3,D4]],[[A1,B1,C1,D1],[A2,B2,C2,D2],[A3,B3,C3,D3],[A4,B4,C4,D4]]).

346 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 07:54:00 ]
少なくともint型の検査はできていない。

347 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 10:11:17 ]
>>343
使用言語:J

a=:i.4 4
a
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15

,./a     各行を「,.」で連結すると転置になる
0 4 8 12
1 5 9 13
2 6 10 14
3 7 11 15

|:a      「|:」は組み込みの転置演算子
0 4 8 12
1 5 9 13
2 6 10 14
3 7 11 15

348 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 12:17:19 ]
>>341
使用言語:J

f=:monad define
'p q d'=.y
a=./:~~.,(p*i.d)+/q*i.d
b=.}.(d>:a)#a
smoutput b
smoutput '合計で',(":#b),'個あります'
)

f 3 5 10
3 5 6 8 9 10
合計で6個あります

349 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 19:56:12 ]
pc12.2ch.net/test/read.cgi/tech/1263824755/14
# [1] 授業単元: プログラミング演習�
# [2] 問題文(含コード&リンク):
# 終了時、xとB、まらはAとHの内積のどちらかが0のプログラム。
# (xを入力→Hを設定)
# AとBはそれぞれHやxの最小多項式の係数となるはず。
# X1=(x1,...,xn)の転置行列;
# H=(X1,...,Xt);


350 名前:345 mailto:sage [2010/01/19(火) 23:04:02 ]
>>347
プログラムというのは何をするのかを示すことなのではないか?



351 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 23:29:14 ]
pc12.2ch.net/test/read.cgi/tech/1263824755/22
# [1] 授業単元: プログラミング
# [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10392.txt
#
# 練習問題1*
#  以下に示すプログラムは、リストを操作するプログラムの一部である。このプログラムに、ジストの指定した位置(末尾以外)にノードを挿入する関数insert_nodeと、
# リストの指定した位置のノードを削除する関数delete_nodeを追加し、プログラムを完成させよ。
#  insert_nodeは引致として挿入位置の情報リストの何番目のノードかという情報)とデータ(文字列)を受け取るも
# のとする。また、挿入位置に元々あったノードは、新しく挿入するノードの次の要素となるものとする。
#  リストの先頭ノードとして挿入される場合にも正しく動くようにすること。
#  delete_nodeは、引数として削除位置の情報を受け取る。リストの先頭のノード、最後のノード、途中のノードが削除されたときにそれぞれ正しく動くようにすること。
# また、ノードが1個しかない場合にも正しく動<ようにすること。

352 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 07:55:26 ]
>>350
この問いかけはどう受け取ればいいのでしょうか。
「あなたの書き込みは組み込み機能の紹介で
プログラムじゃないよ」ということですか?






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

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

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