10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/15 10:40:01
>>253
% Prolog
% URLリンク(prolog.asia) などにすでにあります。ここでは、
西暦を入力させ、うるう年かどうかを判定する(_西暦) :-
西暦の年号が400で割り切れる年はうるう年(_西暦),!.
西暦を入力させ、うるう年かどうかを判定する(_西暦) :-
西暦の年号が400で割り切れないが、100で割り切れる年はうるう年でない(_西暦),!.
西暦を入力させ、うるう年かどうかを判定する(_西暦) :-
西暦の年号が100で割り切れないが、4で割り切れる年はうるう年(_西暦).
西暦の年号が400で割り切れる年はうるう年(_西暦) :- 割り切れる(_西暦,400),!.
西暦の年号が400で割り切れないが、100で割り切れる年はうるう年でない(_西暦) :-
\+(割り切れる(_西暦,400)),
割り切れる(_西暦,100),!,fail.
西暦の年号が100で割り切れないが、4で割り切れる年はうるう年(_西暦) :-
\+(割り切れる(_西暦,100)),
割り切れる(_西暦,4),!.
割り切れる(A,B) :- 0 is A mod B.
266:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/15 16:12:12
スレリンク(tech板:810番)
# [1] 授業単元:プログラミング論(大学)
# [2] 問題文:softbankのiPhoneの使用料金を計算するプログラムを作りなさい
270:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/15 17:08:31
スレリンク(tech板:812番)
# [1] 授業単元: 授業ではないですがお願いします
# [2] 問題文(含コード&リンク): 100個の0~10までの数字があるとするとき0じゃない数字の個数を数えて表示させたいんですが
# どうすればいいのかよくわかりませんのでお願いします
272:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/15 21:14:06
スレリンク(tech板:819番)
# [1] 授業単元:情報処理基礎
# [2] 問題文:以下はmain関数、サブ関数で作成します。
# 1.数値nを一つ入力し、各桁の和を求めよ。(123→6)
# 2.数値nを反転した値を表示せよ。(123→321)
277:デフォルトの名無しさん
10/01/15 21:15:57
スレリンク(tech板: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:デフォルトの名無しさん
10/01/15 21:39:51
スレリンク(tech板:821番)
# [1] 授業単元: コンパイラ
# [2] 問題文(含コード&リンク):
# PAdaで記述されたソースプログラムをC言語のソースプログラムに
# 変換するコンパイラを作成しなさい。
# URLリンク(ime.nu)
#
279:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/15 22:36:02
スレリンク(tech板: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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/16 05:09:26
スレリンク(tech板:834番)
# [2010/01/15 19:27:07] リュック: 【質問テンプレ】
# [1] 授業単元: プログラミング演習
# [2] 問題文(含コード&リンク): URLリンク(ime.nu)
# [2] のコピー: URLリンク(prolog.asia)
285:デフォルトの名無しさん
10/01/16 05:37:43
スレリンク(tech板:827番)
# 下記の機能を備えた極めて単純なデータベースシステムであるカード型データベースシステムの構築を考える。
# 課題7-1
# 下記のような方針でプログラムを作成せよ。
# 新しい科目を登録する機能
# すでに登録されている科目を修正(更新)する機能
# 登録科目のソート(並び替え)を行う機能
# 登録科目の一部分のみを検索して取り出し、表示する機能
# 登録科目から、卒業までに必要な単位を計算し、表示する機能
# データベースファイルの仕様
# データベースファイルについては、本格的なデータベースになると、アクセス性や
# 安定性など様々な要求を満たす必要があるが、ここでは最も単純なテキストファイルとする。
# さらに、書き込みをfprintfで、読み込みをfscanfで行えるように、 1行中に、
# それぞれの項目(フィールド)がスペースで区切られているようなファイルとする。
# なお、この場合、それぞれの項目はスペースを含んでいけないこととなる。
# 履修科目データベースシステムの例においては、例えば、
# 単位の種類(必修、選択必修など)、単位数、年次、前期か後期か、再履修かどうか、成績の6項目を含むこととする。
# ここで、いくつかの選択肢から選択するものについては、数字で置き換えることとする。
# このような仕様に基づいたファイルの例は以下のようなものになる。ここでは、ファイル名は、"ユーザ名_kamokudb.txt"とする。
286:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/16 06:44:06
>>269
% Prolog (その一)
:- op(350,xf,円).
お客様データベース('長石 輝',ホワイトプラン通話料,2130).
お客様データベース('長石 輝',ホワイトプランメールウェブ利用料金,0).
お客様データベース('長石 輝',パケット使用量,47310).
iphoneのご利用料金(_お客様名,_ご利用料金 円) :-
お客様データベース(_お客様名,ホワイトプラン通話料,_通話料),
お客様データベース(_お客様名,ホワイトプランメールウェブ利用料金,_メール
ウェブ利用料金),
お客様データベース(_お客様名,パケット使用量,_パケット使用量),
'ホワイトプラン(i)'(_通話料,_メールウェブ利用料金,_ホワイトプラン料金
円),
パケット料金(_パケット使用量,_パケット料金 円),
_ご利用料金 is _ホワイトプラン料金 + _パケット料金.
'ホワイトプラン(i)'(_ホワイトプラン料金 円) :-
ホワイトプラン基本使用料・通話料(_通話料 円,_基本使用料・通話料 円),
ホワイトプランメールウェブ利用料金(_メールウェブ利用料金 円),
_ホワイトプラン料金 is _基本使用料・通話料 + _メールウェブ利用料金,!.
ホワイトプラン基本使用料・通話料(_通話料 円,_基本使用料・通話料 円) :-
_基本使用料・通話料 is 980 + _通話料.
288:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/16 09:25:52
スレリンク(tech板:841番)
# [1] 授業単元: コンピュータシミュレーション
# [2] 問題文(含コード&リンク):円盤状に分布させた質点に回転の初期条件をあたえたいのですが、
# 中心からの距離、位置により速度の大きさと向きが変わるのでどのようにおけばいいのかお願いします。
#
292:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/16 10:20:25
>>293 訂正
% Prolog この定義の一番最後は _辞書順に整列された語彙ならび でないといけない。
標準入力から読み込んだテキストファイルを辞書順に整列して標準出力する :-
標準的整列ルール(32,127,_標準的整列ルール),
例外的整列ルール(_例外的整列ルール),
get_lines(user_input,Lines),
concat_atom(Lines,' ',S),
split(S,[' '],_語彙ならび),
辞書順整列(_語彙ならび,_標準的整列ルール,_例外的整列ルール,[],_辞書順に整列された語彙ならび),
語彙ならびを標準出力する(_辞書順に整列された語彙ならび).
295:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/16 11:37:09
>>257
% Prolog 問題3 これもこれまで何度も定義された。
行列の転置([[]|_],[]) :- !.
行列の転置(_副行列,[_第一要素ならび|R]) :-
第一要素と残り要素の収集(_副行列,_第一要素ならび,_残り要素ならび),
行列の転置(_残り要素ならび,R),!.
第一要素と残り要素の収集([],[],[]) :- !.
第一要素と残り要素の収集([[A|R1]|R2],[A|R3],[R1|R4]) :-
第一要素と残り要素の収集(R2,R3,R4).
297:デフォルトの名無しさん
10/01/16 11:47:35
スレリンク(tech板: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:デフォルトの名無しさん
10/01/16 16:32:10
スレリンク(tech板:847番)
# [1] 授業単元: プログラミング演習
# [2] 問題文(含コード&リンク): URLリンク(ime.nu)
#
299:デフォルトの名無しさん
10/01/16 16:37:32
# 基本課題 2a(数式の読み込みと表示)
# 課題 2a と 2b では,算術式を読み,表示し,値を求めるプログラムを作る.
# 限られた時間内で数式処理の本質部分を効率よく学ぶために,
# 入力できる算術式の構文を,次の BNF で定めるものに限る.
#
# 定数 ::= 0 | 1 | … | 9
# 変数 ::= a | b | … | z | A | B | … | Z
# 算術式 ::= 定数
# | 変数
# | (算術式+算術式)
# | (算術式*算術式)
#
# つまり,1桁の定数や1文字の変数の和や積からなる式が入力である.
#
# 入力された算術式を読み込み,2分木データとして格納し,そのデータをもとに
# 入力と同じ算術式を表示する,という処理を繰り返すプログラムを作れ.
#
# 次の要求を満たすものを作り,仕様の不明確な部分は各自で詳細化すること.
#
# ・算術式は標準入力から読む
# ・2つの算術式の区切りは1つの空白 (間隔文字や改行文字など) とする
# ・結果は標準出力に書く
# ・構文に合わない算術式を読んだらプログラムを終了する
300:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/17 05:37:41
スレリンク(tech板: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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/17 06:38:27
スレリンク(db板: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:デフォルトの名無しさん
10/01/17 07:37:43
スレリンク(tech板:866番)
#
# 【質問テンプレ】
# [1] 授業単元:C言語演習
# [2] 問題文(含コード&リンク): コマンド引数を使用して
# 以下のように指定した文字列中の指定番号の文字を表示するプログラムを作成せよ。
#
# 例:./prg1 abcde 1
# char 1 is "a"
# ./peg1 abcdef123456 10
# char 10 is "4"
#
# エラー処理もしっかり行うこと。
313:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/17 16:53:42
スレリンク(tech板:881番)
# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):URLリンク(ime.nu)
#
# 連立1次方程式の一般的な数値解法にはガウスの単純消去法がある。
# 下記の連立1次方程式の解法をC言語で表せ。
#
# x1 + 5x2 + x3 = 2
# 3x1 + 4x2 = 2
# 9x1 +10x2 + 4x3 = 8
315:デフォルトの名無しさん
10/01/17 17:00:18
スレリンク(tech板:881番)
# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):URLリンク(ime.nu)
#
# 問題文の構造が大きすぎてコピーできません。[2]のリンクを各自で見てください。
316:デフォルトの名無しさん
10/01/17 17:31:46
>>313
解説お願い。
317:デフォルトの名無しさん
10/01/17 17:39:41
>>315 は>>314と同じものになってしまいました。構造が多くてコピーできなかったのは
以下の問題です。
スレリンク(tech板:885番)
# [1] 授業単元:プログラミング(大学講義)
# [2] 問題文
# ハングマンを作成せよ。
# URLリンク(ime.nu)
# URLリンク(ime.nu)
#
318:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/17 19:52:42
>>318
「~:」によって、どうして、
01111 ではなく 11101 の選択になるのですか?
320:デフォルトの名無しさん
10/01/17 19:55:31
スレリンク(tech板:894番)
# お願いします
# [1] 授業単元: プログラミング演習�
# [2] 問題文(含コード&リンク):
# Printfを作る。
# %d, %c, %sのみサポートする。
321:デフォルトの名無しさん
10/01/17 21:14:04
>>319
J言語のuniqは重複した要素の内、最初にあらわれたものを
残すようです。
322:デフォルトの名無しさん
10/01/17 21:16:39
スレリンク(tech板:85番)
# 【課題】
# 同じ長さのリストA,Bがある。Aはソート対象のデータ、Bは比較用の値が入っている。
# A,Bの2つの引数をとり、Bの値が昇順になるようにAをソートする関数を定義しなさい。
# 引数のリストは破壊しても良く、ソート結果は戻り値・引数Aを上書きのどちらでも良い。
# 処理の早いものには追加点を与える。
#
323:デフォルトの名無しさん
10/01/17 21:18:13
>>321
ご丁寧な回答に感謝します。
324:デフォルトの名無しさん
10/01/18 06:01:26
スレリンク(tech板:911番)
# お願いします
# [1] 授業単元:電子演算機演習
# [2] 問題文(含コード&リンク):
# 2次元の文字配列が、main関数内において次の詞で初期化(空白行も含める)されている。
# 例によって、初期化に用いられた詞の文字数や行数などはわかっていないものとする。
#
# (1)関数NumOfCharで総文字数(空白以外)を、(2)関数NumOfWordで単語数を、(3)関数
# NumOfLineで行数(空白行は数えない。また、空白行が2行以上続くことはない)を、(4)main
# 関数内でキーボードから一文字入力し、関数NumOfCoinで入力した文字と一致する文字数を数えて、
# main関数内でそれらの数を表示する。文字列に小細工をしないこと(単語:空白又は改行から空白
# 又は改行まで)
325:デフォルトの名無しさん
10/01/18 06:05:16
スレリンク(tech板:728番)
# 【 課題 】国旗を表示するプログラム(日の丸、星条旗、ユニオンジャック等)を作れ。 指定された国旗を画面に表示する。少なくても8種類以上。 国旗の指定にはメニューとかボタンとかを表示して、選択させること。
# 国旗は図形として描くこと。写真を貼り付けたりしては駄目。
326:デフォルトの名無しさん
10/01/18 06:11:51
スレリンク(tech板: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:デフォルトの名無しさん
10/01/18 06:15:06
スレリンク(tech板:85番)
# 【課題】
# 同じ長さのリストA,Bがある。Aはソート対象のデータ、Bは比較用の値が入っている。
# A,Bの2つの引数をとり、Bの値が昇順になるようにAをソートする関数を定義しなさい。
# 引数のリストは破壊しても良く、ソート結果は戻り値・引数Aを上書きのどちらでも良い。
328:デフォルトの名無しさん
10/01/18 06:18:30
スレリンク(tech板:922番)
# visual studioのwindowsフォームアプリケーション visual C++のプログラミングについて質問です!!
# かなり急いでます。
# チェックボックスを5個とボタン1個を使いアンケートみたいなプログラムを作りたいのですができません。
#
# 内容としてはチェックの数で表示される答えを違うようにしたいのです。
# 0〜1個つけたら良い
# 2〜3個つけたら普通
# 4〜5個つけたら悪い
# みたいな感じで最後にボタンを押したら評価がでてくるというものです。
# すべてのプログラムを教えてください!!
329:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/18 07:28:37
スレリンク(tech板:730番)
# 【 課題 】URLリンク(ime.nu)
# Kadai.javaを以下のステップに沿って改めなさい。
# ファイル名およびクラス名はステップに沿ってKadai1,Kadai2というようにKadai+数字としなさい。
#
# Step1.
# 「入力」が押されると、テキストフィールドに入力されている文字とチェックボック>ス の状態を読み取って「名前,出席する(or しない),10000円(or 0円)」と、氏名、同窓 会の出欠、参加費をカンマ区切りでコマンドプロンプトに出力する機能を追加しなさい 。
#
# Step2.
# 「キャンセル」が押されるとテキストフィールドをクリアし、(もしチェックボックスにチェックされていれば)チェックを外す機能を追加しなさい。
#
# Step3.
# Step1と同じ内容をファイル「出席.txt」に書き込む(追い書き)する機能を追加しなさい。
#
# Step4.
# 右上の「×」ボタンを押す事でプログラムを終了する機能を追加しなさい。keizo@keiizo98:~/Desktop$
331:デフォルトの名無しさん
10/01/18 13:19:56
スレリンク(tech板:934番)
# [1]授業単元:C言語実習(専門学校:選択授業)
# [2]課題:
# コマンドライン引数に与えられた英数字からなる文字列を、長さが長いものが先、同じ長さのものどう
# しでは辞書に記載される場合に先頭のほうに書かれるものが先に出力されるように出力するCを作る。
# 引数が与えられてない場合は、何も出力しない。
332:デフォルトの名無しさん
10/01/18 13:36:52
スレリンク(tech板:942番)
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):URLリンク(ime.nu)
# リスト操作関数を作成する問いが5題ある。なお、ここで扱うリストは、ASCII文字を要素とする、頭を持った連結リスト(「文字リスト」と呼ぶ)である。
#
# ●問1.文字リストを作成する関数と印字する関数
#
# 与えられた文字列の各文字を要素とする文字リストを作成し返す関数make_clistと、与えられた文字リスト
# の内容を印字する関数print_clistを作成せよ。
#
# 【問1.については過去ログ等を調べつつ解答を導き出すことができました。コードを最下方に載せます。】
#
333:デフォルトの名無しさん
10/01/18 13:38:21
スレリンク(tech板:942番)
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):URLリンク(ime.nu)
# ●問2.リストの内容を比較する関数
#
# 与えられた二つのリストに含まれる文字の並びを辞書式順序(※)で比較し、第一のリストの方が小さければ負の
# 値、大きければ正の値、等しければ0を返す関数compareを作成せよ。
#
334:デフォルトの名無しさん
10/01/18 13:39:58
スレリンク(tech板:942番)
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):URLリンク(ime.nu)
# ●問3.リストの一部を取り除く関数
#
# 与えられた文字リストの先頭から見ていき、要素が'<'なら自身と(あれば)直前の要素を、'>'なら自身
# と(あれば)直後の要素を取り除く関数editを作成せよ。
#
335:デフォルトの名無しさん
10/01/18 13:41:20
スレリンク(tech板:942番)
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):URLリンク(ime.nu)
# ●問4.リストの一部を別のリストの内容で置き換える関数
#
# 引数として三種のリストが与えられると、第一のリスト内に含まれる第二のリストに一致する部分を第三の
# リストに置き換える関数replaceを作成せよ。ただし新たにリストを作成するのではなく、与えられたリスト
# の変形で実現すること。一度置き換えた部分を再び置き換えの対象としなくてよい。また関数の戻り値として
# 置き換えを行った回数を返すこと。
336:デフォルトの名無しさん
10/01/18 13:42:37
スレリンク(tech板:942番)
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):URLリンク(ime.nu)
# ●問5.複数回出現する要素からなるリストを返す関数
#
# 与えられた文字リスト中で複数回現れる文字を残して得られるリストを作成する関数multipleを作成せよ。
# ただし新たにリストを作成するのではなく、与えられたリストの変形で実現すること。また複数回現れる同種
# の文字は、そのいずれか1つだけを残すこと。
337:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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
URLリンク(d.hatena.ne.jp)
341:デフォルトの名無しさん
10/01/19 05:20:14
スレリンク(tech板: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:デフォルトの名無しさん
10/01/19 05:28:57
スレリンク(tech板:963番)
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
# 括弧をすべて左にくくり直す式変形に加えて,分配法則を使って + を * の 外側へとくくり出す式変形をするプログラムを作ってください.
# ファイル 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:デフォルトの名無しさん
10/01/19 07:42:54
スレリンク(tech板:961番)
# [1] 授業単元: プログラミング演習
# [2] 問題文(含コード&リンク): 4行4列のint型の行列を、転置するプログラムを作成し、
# 動作の確認のため、転置前と転置後 の行列の内容を表示するようにせよ。
344:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/19 07:54:00
少なくともint型の検査はできていない。
347:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/01/19 19:56:12
スレリンク(tech板:14番)
# [1] 授業単元: プログラミング演習�
# [2] 問題文(含コード&リンク):
# 終了時、xとB、まらはAとHの内積のどちらかが0のプログラム。
# (xを入力→Hを設定)
# AとBはそれぞれHやxの最小多項式の係数となるはず。
# X1=(x1,...,xn)の転置行列;
# H=(X1,...,Xt);
350:345
10/01/19 23:04:02
>>347
プログラムというのは何をするのかを示すことなのではないか?
351:デフォルトの名無しさん
10/01/19 23:29:14
スレリンク(tech板:22番)
# [1] 授業単元: プログラミング
# [2] 問題文(含コード&リンク):URLリンク(ime.nu)
#
# 練習問題1*
# 以下に示すプログラムは、リストを操作するプログラムの一部である。このプログラムに、ジストの指定した位置(末尾以外)にノードを挿入する関数insert_nodeと、
# リストの指定した位置のノードを削除する関数delete_nodeを追加し、プログラムを完成させよ。
# insert_nodeは引致として挿入位置の情報リストの何番目のノードかという情報)とデータ(文字列)を受け取るも
# のとする。また、挿入位置に元々あったノードは、新しく挿入するノードの次の要素となるものとする。
# リストの先頭ノードとして挿入される場合にも正しく動くようにすること。
# delete_nodeは、引数として削除位置の情報を受け取る。リストの先頭のノード、最後のノード、途中のノードが削除されたときにそれぞれ正しく動くようにすること。
# また、ノードが1個しかない場合にも正しく動<ようにすること。
352:デフォルトの名無しさん
10/01/20 07:55:26
>>350
この問いかけはどう受け取ればいいのでしょうか。
「あなたの書き込みは組み込み機能の紹介で
プログラムじゃないよ」ということですか?
353:デフォルトの名無しさん
10/01/20 08:52:50
>>352
半分は自問。
スレリンク(tech板) の第一夜を書いたのは
私です。このスレの最後に書き込まれた
>>第二夜?は第一夜とは正反対の主張の方と考えてよいのでしょうか?
を読んで書いてみたのが>>345です。>>347は説明的で冗長な>>345の対極にあるかなと思い、
さらに>>350で問いかけました。
私は、オペレータを知らないとそのプログラムの意味がわからない(APL的)ことは、
関数型言語の欠点ではないかと思っています。
354:デフォルトの名無しさん
10/01/20 09:42:40
補足。説明を論理式で書き表すことができるならば、その論理式が
すなわちプログラムである。というのがPrologの"売り"なんですね。
上の論理式の部分を数式に置き換えて、はたして本当にその数式が
"説明"になっているかということを問題にしているのです。常に
完全に理解している事が前提になっているのではないか、と。
355:デフォルトの名無しさん
10/01/20 10:20:42
>>354
プログラムを使うためのもの見るか、理解するためのものと見るかという違いかな。
このスレの魅力は議論を排除してプログラムコードが並んでいるところだから、
ここではあまりやって欲しくはないが、興味深いテーマではあるね。
356:デフォルトの名無しさん
10/01/20 12:39:24
>>353
>私は、オペレータを知らないとそのプログラムの意味がわからない(APL的)ことは、
>関数型言語の欠点ではないかと思っています。
知らないとわからないのは、あたりまえです。
手続き型言語をひとつ覚えると他の手続き型言語のコードがなんとなくわかる
気がするのは前提とする知識がほとんど同じだからじゃないでしょうか。
357:デフォルトの名無しさん
10/01/20 13:32:59
スレリンク(tech板:22番)
# 次のゲームを考える
# ・二人のプレイヤーA、Bにそれぞれ持ち点m点を与える
# ・コイントスをして表が出たらAからBへ、裏が出たらBからAへ、1点渡す
# ・コイントスをくりかえして先に持ち点がなくなったほうが負け
#
# 一個の自然数mをキーボード入力から読み取ってこのゲームをたとえば1000ゲーム繰り返して、
# 平均何回のコイントスで勝負がつくか、シュミレーションして求めるプログラムを作成してください。
# ただしコイントスを10000回繰り返しても勝負がつかない場合があるかもしれないので、それは回数オーバーとして別にカウントしてください。
#
358:デフォルトの名無しさん
10/01/20 13:35:56
スレリンク(tech板:797番)
# 質問です!
# 文字列を受け取ってスペースと記号を削除した文字列を返すメソッドを作りたいんですが
# どうすればいいでしょうか?
# ちなみに条件はgsubメソッドをつかうこと
# 記号は全角も半角も含む(","とか"。"とか"?"とか"?"とか)
# どなたかお願いします
#
359:デフォルトの名無しさん
10/01/20 16:49:25
>>358
% Prolog
文字列を受け取ってスペースと記号を削除した文字列を返す(_文字列,_スペースと記号を削除された文字列) :-
atom_codes(_文字列,Codes),
文字コードならびからスペースと記号を削除する(Codes,Codes2),
atom_codes(_スペースと記号を削除された文字列,Codes2).
文字コードならびからスペースと記号を削除する([],[]) :- !.
文字コードならびからスペースと記号を削除する([A|R1],X) :-
全角記号範囲(_コード下限,_コード上限),
A >= _コード下限,A =< _コード上限,
文字コードならびからスペースと記号を削除する(R1,X),!.
文字コードならびからスペースと記号を削除する([A|R1],X) :-
半角記号範囲(_コード下限,_コード上限),
A >= _コード下限,A =< _コード上限,
文字コードならびからスペースと記号を削除する(R1,X),!.
文字コードならびからスペースと記号を削除する([A|R1],[A|R2]) :-
文字コードならびからスペースと記号を削除する(R1,R2),!.
全角記号範囲(41376,41726).
半角記号範囲(32,47).
半角記号範囲(58,64).
半角記号範囲(91,96).
360:デフォルトの名無しさん
10/01/20 17:45:16
>>358
使用言語:J
f=:-.&(ucp&',.?、。?')
a=:ucp'a,い、b?ろ?c.は。'
f a
aいbろcは
361:デフォルトの名無しさん
10/01/20 18:02:12
>>358
使用言語:J
NB.f=:-.&(ucp&',.?、。?')間違えたので、訂正します。ucpの後ろの&はいりませんでした。
f=:-.&(ucp',.?、。?')
a=:ucp'a,い、b?ろ?c.は。'
f a
aいbろcは
362:デフォルトの名無しさん
10/01/20 18:19:02
スレリンク(tech板:31番)
# [1] プログラミング実習
# [2] URLリンク(ime.nu)
#
# 以下に示すプログラムは、リストを操作するプログラムの一部である。この
# プログラムに、リストの指定した位置(末尾以外)にノードを挿入する関数insert_nodeと、
# リストの指定した位置のノードを削除する関数delete_nodeを追加し、プログラムを完成させよ。
# insert_nodeは引数として挿入位置の情報(リストの何番目かという情報)とデータ(文字列)を受け取るものとする。
# また、挿入位置にもともとあったノードは、新しく挿入するノードの次の要素となるものとする。
# リストの先頭ノードとして挿入される場合も正しく動作するようにすること。
# delete_nodeは、引数として削除位置の情報を受け取る。リストの先頭のノード、
# 最後のノード、途中のノードが削除されたときにそれぞれ正しく動くようにすること。
# また、ノードが一個しかない場合も正しく動くようにすること。
363:デフォルトの名無しさん
10/01/20 18:21:50
スレリンク(tech板:755番)
# 【 課題 】インターネット書店を作成せよ
# <条件>
# ・画面サイズ→VGAとする
# ・書籍は5ジャンル150冊
# ・1回の注文で5種類まで書籍を注文可能
# ・書籍の値段は20円単位とし、書籍の値段は自由
# ・書籍価格の合計金額の2%のポイントが与えられる。(ただし、ポイントは第一ジャンルは2倍、第二ジャンルは3倍になる)
# ・注文終了後、注文確認画面で注文と支払い代金、獲得ポイントが確認できる。(支払い代金とは、注文図書の合計金額と消費税の和)
# ・貯まったポイントを併用して支払いが可能(ポイントの価値は、1ポイント1円)
# ・書籍の発送は電子メールの添付ファイルで行う(発送は出来なくてよい)
# ・ソフトキーボードのみ使用可能
#
# 【 補足 】実用的な画面インタフェースでは取消機能が必要であるが、ここでは取消機能については
# 考えなくてよい。
# また、ユーザーは正しい操作を行うものと仮定して良い。
364:デフォルトの名無しさん
10/01/20 18:40:51
>>362 は >>351 と同じ問題でした。
365:デフォルトの名無しさん
10/01/20 19:14:59
>>357
% Prolog (その一)
一個の自然数mをキーボード入力から読み取ってこのゲームをたとえば1000ゲーム
繰り返して、平均何回のコイントスで勝負がつくか、シュミレーションして求める(_平
均コイントス数) :-
催促付き整数入力('A,Bが持つコイン数を入力してください :',M),
このゲームをたとえば1000ゲーム繰り返して、平均何回のコイントスで勝負が
つくか(1,M,_無効ゲーム数,_平均コイントス数),!.
このゲームをたとえば1000ゲーム繰り返して、平均何回のコイントスで勝負がつく
か(M,_無効ゲーム数,_平均コイントス数) :-
このゲーム(1,M,_有効コイントス総数,_無効ゲーム数),
\+(_無効ゲーム数 = 1000),
_平均コイントス数 is _有効コイントス総数 / (1000 - _無効ゲーム数).
このゲーム(N,_,0,0) :- N > 1000,!.
このゲーム(N,M,_コイントス総数,_無効ゲーム数) :-
コイントスシミュレーション(1,M,M,_トス数),
N2 is N + 1,
このゲーム(N,_,_コイントス総数の二,_無効ゲーム数),
_コイントス総数 is _コイントス総数の二 + _トス数,!.
このゲーム(N,M,_コイントス総数,_無効ゲーム数) :-
N2 is N + 1,
このゲーム(N,M,_コイントス総数,_無効ゲーム数の一),
_無効ゲーム数 is _無効ゲーム数の一 + 1,!.
366:デフォルトの名無しさん
10/01/20 19:18:39
>>357 改行位置を間違えたので書き直し。
% Prolog (その一)
一個の自然数mをキーボード入力から読み取ってこのゲームをたとえば1000ゲームを繰り返して、平均何回のコイントスで勝負がつくか、シュミレーションして求める(_平均コイントス数) :-
催促付き整数入力('A,Bが持つコイン数を入力してください :',M),
このゲームをたとえば1000ゲーム繰り返して、平均何回のコイントスで勝負がつくか(1,M,_無効ゲーム数,_平均コイントス数),!.
このゲームをたとえば1000ゲーム繰り返して、平均何回のコイントスで勝負がつくか(M,_無効ゲーム数,_平均コイントス数) :-
このゲーム(1,M,_有効コイントス総数,_無効ゲーム数),
\+(_無効ゲーム数 = 1000),
_平均コイントス数 is _有効コイントス総数 / (1000 - _無効ゲーム数).
このゲーム(N,_,0,0) :- N > 1000,!.
このゲーム(N,M,_コイントス総数,_無効ゲーム数) :-
コイントスシミュレーション(1,M,M,_トス数),
N2 is N + 1,
このゲーム(N,_,_コイントス総数の二,_無効ゲーム数),
_コイントス総数 is _コイントス総数の二 + _トス数,!.
このゲーム(N,M,_コイントス総数,_無効ゲーム数) :-
N2 is N + 1,
このゲーム(N,M,_コイントス総数,_無効ゲーム数の一),
_無効ゲーム数 is _無効ゲーム数の一 + 1,!.
367:デフォルトの名無しさん
10/01/20 19:20:20
>>357
% Prolog (その二)
コイントスシミュレーション(N,_,_,_) :- N > 10000,!,fail.
コイントスシミュレーション(N,A,B,N) :- コイントスをくりかえして先に持ち点がなくなったほうが負け(A,B,_),!.
コイントスシミュレーション(N,A1,B1,X) :-
コイントス(_表か裏か),
表が出たらAからBへ、裏が出たらBからAへ、1点渡す(表,A1,B1,A2,B2),
N2 is N + 1,
コイントスシミュレーション(N,A2,B2,X),!.
表が出たらAからBへ、裏が出たらBからAへ、1点渡す(表,A1,B1,A2,B2) :- A2 is A1 -1,B2 is B1 + 1,!.
表が出たらAからBへ、裏が出たらBからAへ、1点渡す(裏,A1,B1,A2,B2) :- B2 is B1 -1,A2 is A1 + 1,!.
コイントスをくりかえして先に持ち点がなくなったほうが負け(0,_,'Aの負け').
コイントスをくりかえして先に持ち点がなくなったほうが負け(_,0,'Bの負け').
コイントス(_表か裏か) :- N is (random mod 2) + 1,list_nth(N,[表,裏],_表か裏か).
368:デフォルトの名無しさん
10/01/20 19:59:07
>>351
% Prolog
'リストの指定した位置(末尾以外)にノードを挿入する'(_指定した位置,Node,_リスト,_挿入されたリスト) :-
insert_node(_指定した位置,Node,_リスト,_挿入されたリスト).
insert_node(_,_,[],_) :- !,fail.
insert_node(0,Node,_リスト,[Node|_リスト]) :- !.
insert_node(_指定した位置,Node,[A|R1],[A|R2]) :-
_指定した位置の一 is _指定した位置 - 1,
insert_node(_指定した位置の一,Node,R1,R2).
リストの指定した位置のノードを削除する(_指定した位置,_リスト,_指定した位置のノードが削除されたリスト) :-
delete_node(_指定した位置,_リスト,_指定した位置のノードが削除されたリスト).
delete_node(1,[_|R],R) :- !.
delete_node(_指定した位置,[A|R1],[A|R2]) :-
_指定した位置の一 is _指定した位置 - 1,
delete_node(_指定した位置の一,R1,R2).
369:デフォルトの名無しさん
10/01/20 20:43:07
>>332
% Prolog
与えられた文字列の各文字を要素とする文字リストを作成し返す(_文字列,_各文字を要素とする文字リスト) :-
make_clist(_文字列,_各文字を要素とする文字リスト).
make_clist(_文字列,_各文字を要素とする文字リスト) :-
sub_atom(_文字列,_,_文字列の長さ,_,_文字列),
make_clist(0,_文字列の長さ,_文字列,_各文字を要素とする文字リスト).
make_clist(N,N,_文字列,[]) :- !.
make_clist(N,_文字列の長さ,_文字列,[_文字|R]) :-
sub_atom(_文字列,N,1,_,_文字),
N2 is N + 1,
make_clist(N2,_文字列の長さ,_文字列,R).
与えられた文字列の各文字を要素とする文字リストの内容を印字する(_文字リスト) :-
print_clist(_文字リスト).
print_clist([]).
print_clist([_文字|R]) :-
put_char(_文字),
print_clist(R).
370:デフォルトの名無しさん
10/01/20 22:14:25
>>333
% Prolog
'与えられた二つのリストに含まれる文字の並びを辞書式順序(※)で比較し、第一のリストの方が小さければ負の値、大きければ正の値、等しければ0を返す'(_文字リスト_1,_文字リスト_2,_返り値) :-
compare(_文字リスト_1,_文字リスト_2,_返り値).
compare([],[],0).
compare([],[_|_],-1).
compare([_|_],[],1).
compare([A|_],[B|_],-1) :-
char_code(A,CodeA),CodeA >= 65,CodeA =< 90,
char_code(B,CodeB),CodeB >= 97,CodeB =< 122,
CodeC is CodeB - 32,
CodeC >= CodeA,!.
compare([A|_],[B|_],1) :-
char_code(A,CodeA),CodeA >= 97,CodeA =< 122,
char_code(B,CodeB),CodeB >= 65,CodeB =< 90,
CodeC is CodeA - 32,
CodeC =< CodeA,!.
compare([A|_],[B|_],-1) :- A @< B,!.
compare([A|_],[B|_],1) :- A @> B,!.
compare([A|R1],[A|R2],X) :-
compare(R1,R2,X).
371:デフォルトの名無しさん
10/01/20 22:36:28
>>334
% Prolog
'与えられた文字リストの先頭から見ていき、要素が"<"なら自身と(あれば)直前の要素を、">"なら自身と(あれば)直後の要素を取り除く'(_文字リスト,_編集された文字リスト) :-
edit(_文字リスト,_編集された文字リスト).
edit([],[]).
edit([_,'<'|R1],R2) :- edit(R1,R2),!.
edit(['>',_|R1],R2) :- edit(R1,R2),!.
edit([A|R1],[A|R2]) :- edit(R1,R2).
372:デフォルトの名無しさん
10/01/20 22:45:36
>>335
% Prolog の場合与えられたリストの変形(破壊代入)は使えない。
引数として三種のリストが与えられると、第一のリスト内に含まれる第二のリストに一致する部分を第三のリストに置き換える(_リスト_1,_リスト2,_リスト_3,L) :-
replace(_リスト_1,_リスト_2,_リスト_3,L).
replace(L1,L2,L3,L) :-
append(L0,L2,L4,L1),
append(L0,L3,L4,L).
373:デフォルトの名無しさん
10/01/20 22:58:22
>>336
% Prolog リストの変形では得られない点は同じ。
与えられた文字リスト中で複数回現れる文字を残して得られるリストを作成する(_文字リスト,_複数回現れる文字を残して得られるリスト) :-
multiple(_文字リスト,_複数回現れる文字を残して得られるリスト).
multiple(_文字リスト,_複数回現れる文字を残して得られるリスト) :-
findall(_文字,(append(L1,[_文字|L2],_文字リスト),\+(member(_文字,L1)),member(_文字,L2)),_複数回現れる文字を残して得られるリスト).
374:デフォルトの名無しさん
10/01/20 23:01:33
スレリンク(tech板:33番)
# [1] プログラミング基礎実習
# [2] 文字列strを逆順に格納する関数("SEC"を受け取ったら"CES"とする)
# void rev_string(char str[]){ /*…*/ }
# を作成せよ。
375:デフォルトの名無しさん
10/01/21 06:11:46
>>374
% Prolog 全然、説明的でない例
'文字列strを逆順に格納する'(_Str,Rstr) :-
rev_string(Str,Rstr).
rev_string(Str,Rstr) :-
sub_atom(Str,_,Len,_,Str),
findall(Char,(for(0,N,Len-1),sub_atom(Str,_,1,N,Char)),L),
concat_atom(L,Rstr).
376:デフォルトの名無しさん
10/01/21 06:17:12
>>374
% Prolog ふつうは
'文字列strを逆順に格納する'(_Str,Rstr) :-
rev_string(Str,Rstr).
rev_string(Str,Rstr) :-
atom_chars(Str,Chars),
rev_string(Chars,[],RChars),
atom_chars(Rstr,RChars).
rev_string([],X,X).
rev_string([A|R],Y,X) :- rev_string(R,[A|Y],X).
377:デフォルトの名無しさん
10/01/21 06:25:13
スレリンク(tech板:38番)
# 長くなったのでうpロダお借りしました。
#
# 問題1
# URLリンク(ime.nu)
# コピーさせていただきました URLリンク(nojiriko.asia)
378:デフォルトの名無しさん
10/01/21 06:28:56
スレリンク(tech板:38番)
# [1] 授業単元:応用プログラミング
# [2] 問題文(含コード&リンク):
# 直方体のデータが格納されたファイルを取り扱うプログラムを実装したい。
# プログラムリスト中に必要な関数を実装し、プログラムを完成させよ。尚、プログラムは以下の前提条件(1)-(4)を満たすよう作成せよ。
# (1)新たに大域変数やクラス、クラス内のメンバ変数を宣言してはならない。
#(2)main関数を含む既存の関数、クラス内のメンバ変数は一切変更してはならない。
#(3)直方体のデータが一行毎に、直方体の名前、幅、奥行き、高さ、の順に、スペース区切りで格納されているファイルを読み込める。
#(4)最大20個分のデータを読み込める。
#(5)初めに読み込むファイル名を入力した後、読み込んだデータ数を表示する。
#(6)(5)の表示後、以下に示す操作が繰り返し実行可能であること。
# 操作方法と出力の詳細については、実行例を参考にすること。
# (ア)データを読み込んだ順に表示する。
# (イ)体積、もしくは表面積の大きい順に表示する。
# (ウ)立方体、もしくは正四角柱のみを表示する。
# (エ)直方体を1個指定し、3辺の長さ(幅、奥行き、高さ)を指定した倍率だけ伸縮する。
379:デフォルトの名無しさん
10/01/21 07:01:07
昨日から悩んでいること。出題が
# 与えられた文字列の各文字を要素とする文字リストを作成し返す関数make_clistと、与えられた文字リスト
# の内容を印字する関数print_clistを作成せよ。
の場合、導入述語名は
'与えられた文字列の各文字を要素とする文字リストを作成し返す関数make_clistと、与えられた文字リストの内容を印字する関数print_clistを作成せよ'(_文字リスト_1,_文字リスト_2,_返り値) :-
make_list(_文字リスト_1,_文字リスト_2,_返り値).
であるべきか、あるいは、>>370のように、
'与えられた二つのリストに含まれる文字の並びを辞書式順序(※)で比較し、第一のリストの方が小さければ負の値、大きければ正の値、等しければ0を返す'(_文字リスト_1,_文字リスト_2,_返り値) :-
compare(_文字リスト_1,_文字リスト_2,_返り値).
とした方がよいか・・。 前の方の定義だと引数を持っていることが不自然かなと思い採用しなかった。
380:デフォルトの名無しさん
10/01/21 13:02:50
>>379
二番目の定義が次の問題になってしまった。結果として意味不明。
make_clistがmake_listになってるところもあるし。>>379はなかったことにしてください。
381:デフォルトの名無しさん
10/01/22 18:38:58
>>341
% Prolog
'異なる自然数p,qと、もう一つの自然数dを入力する。d以下の自然数kのうちで、k=mp+nqと表すことの出来るもの(m,nは自然数)を小さい順に表示し、最後にその個数を表示する' :-
'異なる自然数p,qと、もう一つの自然数dを入力する'(_p,_q,_d),
findall(K,'d以下の自然数kのうちで、k=mp+nqと表すことの出来るもの(m,nは自然数)を小さい順に集め'(_p,_q,_d,L),
concat_atom(L,' ',S),
write_formatted('%t\n',[S]),
length(L,_その個数),
write_formatted('合計で%t個あります\n',[_その個数]),!.
'異なる自然数p,qと、もう一つの自然数dを入力する'(_p,_q,_d) :-
get_line(Line),
split(Line,[' '],[_p,_q,_d]),!.
'd以下の自然数kのうちで、k=mp+nqと表すことの出来るもの(m,nは自然数)を小さい順に集め'(_p,_q,_d,_kならび) :-
findall(N,for(0,N,10),L1),
findall(_k,(for(0,_k,_d),順列(L1,2,[_m,_n]),'d以下の自然数kのうちで、k=mp+nqと表すことの出来るもの'(_p,_q,_d,_m,_n,_k)),_kならび),!.
'd以下の自然数kのうちで、k=mp+nqと表すことの出来るもの'(_p,_q,_d,_m,_n,_k) :-
_k is _p * _m + _q * _n,
_k =< _d,!.
382:デフォルトの名無しさん
10/01/22 20:06:16
>>381 訂正
% Prolog
'異なる自然数p,qと、もう一つの自然数dを入力する。d以下の自然数kのうちで、k=mp+nqと表すことの出来るもの(m,nは自然数)を小さい順に表示し、最後にその個数を表示する' :-
'異なる自然数p,qと、もう一つの自然数dを入力する'(_p,_q,_d),
'd以下の自然数kのうちで、k=mp+nqと表すことの出来るもの(m,nは自然数)を小さい順に集め'(_p,_q,_d,L),
'表示し'(L),
最後にその個数を表示する(L),!.
表示し(L) :-
concat_atom(L,' ',S),
write_formatted('%t\n',[S]),!.
最後にその個数を表示する(L) :-
length(L,_その個数),
write_formatted('合計で%t個あります\n',[_その個数]),!.
'異なる自然数p,qと、もう一つの自然数dを入力する'(_p,_q,_d) :-
get_line(Line),
split(Line,[' '],[_p,_q,_d]),!.
'd以下の自然数kのうちで、k=mp+nqと表すことの出来るもの(m,nは自然数)を小さい順に集め'(_p,_q,_d,_kならび) :-
findall(N,for(0,N,10),L1),
findall(_k,(for(0,_k,_d),順列(L1,2,[_m,_n]),'d以下の自然数kのうちで、k=mp+nqと表すことの出来るもの'(_p,_q,_d,_m,_n,_k)),_kならび),!.
'd以下の自然数kのうちで、k=mp+nqと表すことの出来るもの'(_p,_q,_d,_m,_n,_k) :-
_k is _p * _m + _q * _n,
_k =< _d,!.
383:デフォルトの名無しさん
10/01/22 20:10:32
スレリンク(tech板:771番)
# 【 課題 】
# サーバとクライアントでの間で文字列を送り合うプログラムをつくれ。
# ただし、以下の条件を満たすようにすること。
# アドレス、ポート、名前、文字列はキーボード入力し、お互いに自由に指定できるようにする。
# クライアントで quit が入力された場合、クライアントは接続を切りプログラムを終了し、
# サーバは接続が切られたら、次のクライアントの接続を待つ
# サーバで quit が入力された場合、サーバは接続を切り、次のクライアントの接続を待ち、
# クライアントは接続が切られたらプログラムを終了する
# エンターキーのみが入力された場合は、文字列を送らずもう一度文字列を入力させて、
# その文字列を送るようにする。
384:デフォルトの名無しさん
10/01/22 20:13:21
スレリンク(tech板:74番)
# [1] 授業単元:プロトタイプ宣言
# [2] 問題文(含コード&リンク):『私は○○です』と表示する関数を作成して
# main関数でそれを三回呼び出して、画面に三回出力プログラムを作成せよ。
# 表示のための関数の名前は『display_name』とせよ
#
385:デフォルトの名無しさん
10/01/22 20:19:16
>>384
% Prolog programがmainにあたる。
display_name :-
write('私は○○です\n').
program :-
for(1,N,3),display_name,N=3,halt.
386:デフォルトの名無しさん
10/01/22 21:09:18
>>384
このプログラムのドコが「説明を論理式で書き表すことができるならば、
その論理式がすなわちプログラムである」のだろうか。
387:386
10/01/22 23:43:35
アンカミス
X:>>384 --> O:>>385
388:デフォルトの名無しさん
10/01/23 03:44:26
スレリンク(tech板:77番)
# [1] 授業単元:プログラミング実習
# [2] 問題文:クラスタリングk-means法
# 1、初期値として、クラスタ数および初期のデータ分割を与える。
# 2、データ分割に基づき各分割の重心を求める。
# さらに、重心と各事例データとの距離を求める
# 3、各事例を最も近いクラスタに割り当てる。
# 4、上記の割り当てが前回と同じであれば終了。
# 更新があれば2に戻る
389:デフォルトの名無しさん
10/01/23 03:51:44
スレリンク(tech板:79番)
# [1] 授業単元:応用プログラミング
# [2] 問題文(含コード&リンク):
# URLリンク(ime.nu)
#
# 直方体のデータが格納されたファイルを取り扱うプログラムを実装したい。
# プログラムリスト中に必要な関数を実装し、プログラムを完成させよ。尚、プログラムは以下の前提条件(1)-(4)を満たすよう作成せよ。
# (1)新たに大域変数やクラス、クラス内のメンバ変数を宣言してはならない。
# (2)main関数を含む既存の関数、クラス内のメンバ変数は一切変更してはならない。
# (3)直方体のデータが一行毎に、直方体の名前、幅、奥行き、高さ、の順に、スペース区切りで格納されているファイルを読み込める。
# (4)最大20個分のデータを読み込める。
# (5)初めに読み込むファイル名を入力した後、読み込んだデータ数を表示する。
# (6)(5)の表示後、以下に示す操作が繰り返し実行可能であること。
# 操作方法と出力の詳細については、実行例を参考にすること。
# (ア)データを読み込んだ順に表示する。
# (イ)体積、もしくは表面積の大きい順に表示する。
# (ウ)立方体、もしくは正四角柱のみを表示する。
# (エ)直方体を1個指定し、3辺の長さ(幅、奥行き、高さ)を指定した倍率だけ伸縮する。
390:デフォルトの名無しさん
10/01/23 03:59:06
>>386 >>387
>>382 の方ではなくて? これは結構苦闘してる。
>>385 は「説明を論理式で書き表すことができるならば、その論理式がすなわちプログラムである」の
意識の全くないプログラムだけど。題意もつかめなかった。
391:デフォルトの名無しさん
10/01/23 04:11:07
>>386
>>385 は
# prolog -e 私は○○です.pro
私の名前は○○です
#
と表示されるためには、mainではなく、述語名がprogramである必要が
あることを示すために書いたコードです。
392:391
10/01/23 04:33:07
すみません。私の名前は○○ですを3回繰り返すのを忘れました。
393:デフォルトの名無しさん
10/01/23 04:53:45
>>384
% Prolog この問題は編集を余儀なくされました。もっと素直な表現がありそう。
program :-
『私は○○です』と画面に表示する関数display_nameを三回呼び出して出力する,
終了.
『私は○○です』と画面に表示する関数display_nameを三回呼び出して出力する :-
display_name,
display_name,
display_name.
display_name :- write('私は私は○○です\n').
終了 :- halt.
394:デフォルトの名無しさん
10/01/23 05:00:40
--lua
function display_name()
print "私は私は○○です"
end
function main()
display_name()
display_name()
display_name()
end
main()
395:デフォルトの名無しさん
10/01/23 05:01:31
>>379 でそれに関することを書きたかったのですが、
># [2] 問題文(含コード&リンク):『私は○○です』と表示する関数を作成して
># main関数でそれを三回呼び出して、画面に三回出力プログラムを作成せよ。
># 表示のための関数の名前は『display_name』とせよ
「関数を作成して」あたりを切り落としたくないのですが、述語名に取り込む
方法が今のところ見つからない。
396:デフォルトの名無しさん
10/01/23 05:11:05
function display_name(name)
print("私は私は"..name.."です")
end
function main()
name=io.read()
display_name(name)
name=io.read()
display_name(name)
name=io.read()
display_name(name)
end
main()
397:デフォルトの名無しさん
10/01/23 07:44:33
>>395 これではだめかいwww
program :-
『私は○○です』と表示する関数を作成してmain関数でそれを三回呼び出して、画
面に三回出力プログラムを作成せよ .
『私は○○です』と表示する関数を作成してmain関数でそれを三回呼び出して、画面に
三回出力プログラムを作成せよ :-
『私は○○です』と表示する関数を作成して ,
main.
『私は○○です』と表示する関数を作成して :-
assertz((display_name :- write('私は○○です\n'))).
main :- display_name,display_name,display_name.
398:デフォルトの名無しさん
10/01/23 09:03:32
>>389 の URLリンク(kansai2channeler.hp.infoseek.co.jp)
には大量の実行例とデータが載っています。2レスに分けて掲載します。
# [実行例]
# ファイル名を入力して下さい => data.txt
# 5個のデータを読み込みました.
# 1: 入力順に表示 2: 整列 3: 探索 4: 拡大・縮小 0: 終了
# 何をしますか? => 1
# No. Name Width Depth Height Volume Area
# [ 1] A 1 2 3 6 22
# [ 2] B 3 3 3 27 54
# [ 3] C 3 2 1 6 22
# [ 4] D 2 2 2 8 24
# [ 5] E 5 1 5 25 70
# 1: 入力順に表示 2: 整列 3: 探索 4: 拡大・縮小 0: 終了
# 何をしますか? => 1
# 何順に整列しますか?(0:体積 1:表面積) => 0
# No. Name Width Depth Height Volume Area
# [ 2] B 3 3 3 27 54
# [ 5] E 5 1 5 25 70
# [ 4] D 2 2 2 8 24
# [ 1] A 1 2 3 6 22
# [ 3] C 3 2 1 6 22
399:デフォルトの名無しさん
10/01/23 09:04:22
# 1: 入力順に表示 2: 整列 3: 探索 4: 拡大・縮小 0: 終了
# 何をしますか? => 3
# 何を探索しますか?(0:体積 1:表面積) => 1
# No. Name Width Depth Height Volume Area
# [ 2] B 3 3 3 27 54
# [ 4] D 2 2 2 8 24
# [ 5] E 5 1 5 25 70
# 1: 入力順に表示 2: 整列 3: 探索 4: 拡大・縮小 0: 終了
# 何をしますか? => 4
# どの直方体ですか?(1~5) => 1
# 何倍しますか? => 1.5
# 1: 入力順に表示 2: 整列 3: 探索 4: 拡大・縮小 0: 終了
# 何をしますか? => 1
# No. Name Width Depth Height Volume Area
# [ 1] A 1.5 3 4.5 20.25 49.5
# [ 2] B 3 3 3 27 54
# [ 3] C 3 2 1 6 22
# [ 4] D 2 2 2 8 24
# [ 5] E 5 1 5 25 70
# 1: 入力順に表示 2: 整列 3: 探索 4: 拡大・縮小 0: 終了
# 何をしますか? => 0
# 終了します.
400:デフォルトの名無しさん
10/01/23 09:06:12
# データファイル
# A 1 2 3
# B 3 3 3
# C 3 2 1
# D 2 2 2
# E 5 1 5
401:デフォルトの名無しさん
10/01/23 09:08:27
>>384
使用言語:J
display_name=:[: smoutput '私は○○です。'"_
main=:display_name^:(3)
main ''
私は○○です。
私は○○です。
私は○○です。
402:デフォルトの名無しさん
10/01/23 16:25:45
スレリンク(tech板:83番)
# [1]プログラミング演習(大学専門過程演習授業)
# [2] コマンドライン引数で与えられたテキストファイルを読み込み
# 空行でなければ、その行に含まれているスペース、タブを
# 除去したものを標準出力するプログラム。但し英数字と"_"で
# 構成される文字列同士の間には一つのスペースは残す。
# ",'で囲まれた部分に関してはスペース、タブはそのまま残す
# "で囲まれた部分について最後の文字が¥であってはならない。
# 'で囲まれた部分について最後の文字が¥であってはならない。
# (テキストファイルの空行と余計な空白/タブを除去する
# プログラムでクオテーションに配慮したもの)
403:デフォルトの名無しさん
10/01/23 23:22:54
スレリンク(tech板:91番)
# [1] 授業単元:情報処理
# [2] 問題文:
#
# 問1 キーボードから3個の実数(整数でない)値を1行に1組として計5組入力し、
# ファイル(ファイル名data1.txt)に保存する。
#
# 問2
# 問1で作ったファイルから実数値を読み込み、総合計と各組の実数の平均を求める
# ただし、ファイルに書かれている組の数は不明とする。
404:デフォルトの名無しさん
10/01/24 06:23:46
スレリンク(tech板:93番)
# [1] 授業単元:プロトタイプ宣言
# [2] 問題文(含コード&リンク):
# 次の式を以下の条件(値)に基づいて計算.表示するプログラムを作成せよ。ただし式は簡単化せずそのままプログラムすることとして、更に表示するときは計算の答えと合� 錣擦鴇魴�値)も表示して分かりやすくせよ。
#
# 計算する式
# {(a+b)c-a(b-c)}/{(c/b)a+abc-ca}
#
# 条件1
# a=3 b=4 c=2
# a=3 b=4.3 c=2.5
# a=32.6 b=57.82 c=2.543
#
# この問題を、
# 式の分だけを関数化した場合
# 式と出力部分を関数化した場合
# の2つの場合でプログラムを作成せよ
405:デフォルトの名無しさん
10/01/24 06:24:41
スレリンク(tech板:94番)
# [1] C
# [2]
# 反復列 x_n+1=a*x_n(1-x_n),0<=a<=4,0<=x<=1
# に対して、x_nが1周期(不動点)、2周期、4周期、8周期、16周期
# をもつaの範囲について、プログラムを作成して確かめよ。
# ※
# ○周期というのはaがある値のとき、○個の解で振動するという意味です※
406:デフォルトの名無しさん
10/01/24 06:28:27
スレリンク(tech板:95番)
# [1] 授業単元: プログラミング演習
# [2] 問題文(含コード&リンク):URLリンク(ime.nu)
#
# 等しい合計点
#
# 太郎と花子はそれぞれカードを何枚か持っている.各カードには点数が書かれている.
# 太郎のカードと花子のカードを 1 枚ずつ交換して,それぞれの持つカードの合計点数が等しくなるようにしたい.
# どのカードとどのカードを交換したらよいか.
#
# ただし,カードを交換しなくても合計点数が等しい場合でも,必ずカードの交換を行うものとする.
407:デフォルトの名無しさん
10/01/24 07:02:19
スレリンク(tech板:778番)
# 【 課題 】1.任意のWEBページからURLリンク(ime.nu)で始まるハイパーリンクを抽出するプログラムの作成
# URLリンク(ime.nu)
# 2.任意のWEBページ10ページに含まれる単語のうち,上位10位の単語リストとその出現頻度
# URLリンク(ime.nu)
# 【 形態 】1. Javaアプリケーション(main()で開始)
# 【 GUI 】制限なし
# 【 期限 】1/25
# 【 Ver 】1.6.0_14
# 【 補足 】1.に関してはプログラムはあっていると思うのですがなぜか実行
# できないので、実行できたら結果をコピペで教えてもらえたら嬉しいです
# 2.に関しては実行結果があるのですが、上から多い順に並んでいます
# プログラムのどの部分でその並べ替えを行っているのか、またどんな
# アルゴリズムを用いて並べ替えているのかを教えてもらえたら嬉しいです
408:デフォルトの名無しさん
10/01/24 12:47:28
スレリンク(tech板:102番)
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):URLリンク(ime.nu)
#
# ●問2.リストの一部を取り除く関数
#
# 与えられた文字リストの先頭から見ていき、要素が'<'なら自身と(あれば)直前の要素を、'>'なら自身
# と(あれば)直後の要素を取り除く関数editを作成せよ。
# editは与えられたリスト自体を変形し、変形後のリストを返す。
#
# ●問3.いずれか一方のリストに含まれる要素からなるリストを返す関数
#
# 引数として二種の文字リストが与えられると、いずれか一方のリストにのみ含まれる 要素を持つリストを新たに作成し返す関数exclusiveを作成せよ。
#
409:デフォルトの名無しさん
10/01/24 16:43:52
>>408 問2
使用言語:J
edit=:monad define
r=.y#~-.(+._1&|.)(<'>')=y
r#~-.(+.1&|.)(<'<')=r
)
]C=:;/'a<bcd>ef>ghi'
+-+-+-+-+-+-+-+-+-+-+-+-+
|a|<|b|c|d|>|e|f|>|g|h|i|
+-+-+-+-+-+-+-+-+-+-+-+-+
edit C
+-+-+-+-+-+-+
|b|c|d|f|h|i|
+-+-+-+-+-+-+
410:デフォルトの名無しさん
10/01/24 16:50:03
>>408 問3
使用言語:J
exclusive=:dyad def '(x -. y) , y -. x'
]A=:;/'abcdef'
+-+-+-+-+-+-+
|a|b|c|d|e|f|
+-+-+-+-+-+-+
]B=:;/'defghi'
+-+-+-+-+-+-+
|d|e|f|g|h|i|
+-+-+-+-+-+-+
A exclusive B
+-+-+-+-+-+-+
|a|b|c|g|h|i|
+-+-+-+-+-+-+
411:デフォルトの名無しさん
10/01/24 20:46:43
スレリンク(tech板:103番)
# [1] 授業単元:Cプログラミング演習2
# [2] 問題文(含コード&リンク):URLリンク(ime.nu)
# (1) 指定した10 個の整数のうち,指定した数で割り切れる整数の個数を求めるプログラムを作成せよ.
# 以下の関数を利用すること.
# int div_enable(int *in, int num, int divisor)
# in 複数の整数値が格納された配列の(先頭)ポインタ
# num 入力値の数
# divisor 割り切れるかどうかの判定に使う除数
# 戻り値 入力値のうち, divisor で割り切れる整数の数
# 入力に関して
# キーボードから整数(被除数用)をスペース1つずつ空けて10 個入力して改行する.次に除数用
# の自然数を1 つ入力し,改行する.この一連の入力時,例題や解答例のような入力を促す文字
# 等は決して表示しないこと.
# 出力に関して
# 割り切れる整数の個数を数値のみ (+改行)を出力する.指定した数値・改行以外の文字等の出
# 力は一切行わないこと.
412:デフォルトの名無しさん
10/01/24 21:21:01
>>411
使用言語:J
div_enable=: dyad def '+/0=x|y'
]in=:>:i.10
1 2 3 4 5 6 7 8 9 10
3 div_enable in
3
413:デフォルトの名無しさん
10/01/25 05:35:28
スレリンク(tech板:103番)
# [1] 授業単元:Cプログラミング演習2
# [2] 問題文(含コード&リンク):URLリンク(ime.nu)
# (2) 2 つの4×4 行列を2 次元配列に格納し,それらの積を求めるプログラムを作成せよ.以下の関数を
# 利用すること.
# void mult_array(int a0[4][4], int a1[4][4], int result[4][4])
# a0,a1 入力された行列の値が格納された2 次元配列のポインタ
# result 演算結果の行列の値が格納された2 次元配列のポインタ
# 戻り値 なし
# 入力に関して
# キーボードからまず,1 つめの行列の1 行目の4 つの整数をスペース1 つ開けて1 行で入力し,
# 改行する.以下同様に1 つめの行列の2 行目,3 行目,4 行目,2 つめの行列の1・・・4 行目
# を入力する.この一連の入力時,入力を促す文字等は決して表示しないこと.
# 出力に関して
# 1行目に結果の行列の1 行目をスペース1 つあけて特に整形せず数値のみ出力(+改行),以下同
# 様に2 行目,3 行目,4 行目を特に整形せず数値のみ出力する.指定した数値・改行以外の文
# 字等の出力は一切行わないこと.
414:デフォルトの名無しさん
10/01/25 05:37:43
スレリンク(tech板:103番)
# [1] 授業単元:Cプログラミング演習2
# [2] 問題文(含コード&リンク):URLリンク(ime.nu)
#
# (3) 平均値と中央値を求める関数を作成し,その関数を使用して平均値と中央値を出力するプログラム
# を作成せよ.関数は下記の通りとする.
# int median(int *in, int num)
# in 複数の整数値が格納された配列の(先頭)ポインタ
# num 入力値の数
# 戻り値 中央値
# int avg (int *in, int num)
# in 複数の整数値が格納された配列の(先頭)ポインタ
# num 入力値の数
# 戻り値 平均値(四捨五入した整数値, 負の場合丸め方は任意)
# 入力に関して
# キーボードから入力する整数の個数を入力し(最大で128 に対応すること)改行する.次に指
# 定した数の整数をスペース1つずつ開けて1行で入力し,改行する.この一連の入力時,例題
# や解答例のような入力を促す文字等は決して表示しないこと.
# 出力に関して
# 中央値 平均値(+改行)のみ出力.中央値と平均値の間はスペースを1 つ入れること.指定した
# 数値・改行以外の文字等の出力は一切行わないこと.
415:デフォルトの名無しさん
10/01/25 06:03:31
スレリンク(tech板:104番)
#
# 課題1 20 桁までの自然数の足し算と掛け算を浮動小数点演算を用いないで実施するプログラムlongcomp.c を
# 作成し、C のソースコードを提出しなさい。足し算は必須課題、掛け算はオプション課題です。
# 実行形式をlongcomp とした動作仕様は以下である1
# >./longcomp 12345678901234567890 + 12345678901234567890
# >12345678901234567890 + 12345678901234567890 = 24691357802469135780
# >./longcomp 1234567890 * 1234567890
# >1234567890 * 1234567890 = 1524157875019052100
416:デフォルトの名無しさん
10/01/25 06:05:44
スレリンク(tech板:105番)
#
# 課題2 b01, b001 のように二進数をb で始まるように表記する。二進数の集合を、できるだけ少ないノード数
# の二分木に分類するためには、二分木のノードに蓄積する二進数の桁数を可変にすることが有効である。
# こうすることで二進数表記した値(たとえばキーワードとか、位置とか、日付とか)に紐づけられたデータを少ない検索で見つけることができる。
# 扱う二進数の集合を、たとえば
# b00, b001, b0011, b00111, b1000, b11100, b0
# として、これらを図1に示すようにニ分木に分類して、帰りがけ(ポストオーダ)で次のように出力するプログラム(tree) を作成し、C のソースコードを提出しなさい。
# >./tree
# >1 1 1 0 0 000 1100 1 b
#
417:デフォルトの名無しさん
10/01/25 06:14:47
スレリンク(tech板:124番)
# [1] 授業単元: Cプログラミング入門
# [2] 問題文(含コード&リンク): 入力された2つの文字列(日本語その他バイト文字は不可)
# を比較するプログラムを作成せよ。ただし、大文字小文字の違いは無視。単語間に連続して
# スペース・タブが複数入っていても単独のスペースとしない。
#
# [5] その他の制限: 文字列とポインタまでやってます。
# 入力に関して、キーボードから1つ目の文字列を1行で入力し、改行する。
# この時、入力を促す文字は一切表示しない。入力文字数は128文字まで。
# 出力に関して、一致すれば何も表示しない。不一致の場合は最初に不一致となる
# 入力1の文字と入力2の文字(1文字+スペース+1文字+改行)を表示する。
# どちらかが末端の場合は代わりにスペースで埋める。
418:デフォルトの名無しさん
10/01/25 06:22:12
スレリンク(tech板:135番)
# [1] 授業単元:C言語
# [2] 問題文(含コード&リンク):URLリンク(ime.nu)
#
# (1)複数の整数を平均値に近い順にソートするプログラムを作成せよ。
# 平均値は切り捨てして整数値で求めるものとし、平均値との距離が等しい
# 場合は値の小さな整数が優先されるものとする。
#
# 入力に関して
# キーボードからまず、入力する整数の個数を入力(最大で100とする)し、改行。
# 次に指定した数の整数をスペース1つ開けて1行で入力し、改行する。
# この時、入力を促す文字は一切表示しないこと。
# 出力に関して
# ソートした整数をスペース1つのみあけて1行で出力する(+改行)。指定した数改行
# 以外の出力は一切行わないこと。
419:デフォルトの名無しさん
10/01/25 07:12:24
スレリンク(tech板:137番)
# [1] 授業単元: プログラミング概論
# [2] 問題文:"in_file"という名前のファイルの中に18個の整数データが空白や改行コードで区切られて並んでいると仮定した上で、
# この入力ファイルの中のデータを1行に5個ずつきれいに並べて"out_file"という名前のファイルに
# 出力するCプログラムを作成せよ。
# 入力ファイルの内容が
# -1111111111 2222222 333333 4444 55 6 7 8 9 0 1 2 3 4
# 5 6 7890123
# -5666
# の時には、例えば次のような内容を"out_file"に書き出す
# _-1111111111_____2222222______333333________4444__________55
# _________________6_______________7______________8_____________9___________0
# ________________ 1_______________2______________3_____________4___________5
# _________________6_____7890123________-5666
#
420:デフォルトの名無しさん
10/01/25 07:23:27
>>418
;; Common Lisp
(defun sort-ave (lst)
(let ((abs-ave (floor (abs (/ (reduce #'+ lst) (length lst))))))
(sort lst
#'(lambda (a b)
(let ((ax (abs (- (abs a) abs-ave))) (bx (abs (- (abs b) abs-ave))))
(if (= ax bx)
(< a b)
(< ax bx)))))))
(defun main ()
(let ((num (read)) lst)
(cond ((<= num 100)
(dotimes (i num)
(push (read) lst))
(format t "~{~A ~}~%" (sort-ave lst))))))
421:デフォルトの名無しさん
10/01/25 12:56:07
>>418
使用言語:J
f=:monad def '}.|:/:~|:y,:~|y-<.(+/%#)y'
f 0 7 8 9 2 2 5 5 5 3
3 5 5 5 2 2 7 0 8 9
422:デフォルトの名無しさん
10/01/25 15:28:46
スレリンク(tech板:143番)
# [1] データ構造とプログラミング
# [2]
# 演習問題4.5 逆ポーランド記法による入力文字列(空白で区切られている)に対して
、
# 16進数と10進数で答えを返すプログラムrpnを作りなさい。
# (入力例)rpn 5 2 + 7 *
# (出力例)0x31, 49(decimal)
#