いろんな言語で宿題 第五編
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/06/19(土) 00:00:380002デフォルトの名無しさん
2010/06/19(土) 00:06:50# 期限6月21日18時
# よろしくお願いします。
#
# 3次元の実数ベクトルを、要素がfloat型で要素数3の配列を用いて表すものとする。
# 二つの3次元ベクトルに対して、それらの和、差、内積、外積を求める関数を定義する。
# 和、差、内積、外積を計算する関数はそれぞれaddvec、subvec、innervec、outervecとし、
# それぞれの関数定義の頭部は
# void addvec(const float x[3], const float y[3], float z[3])
# void subvec(const float x[3], const float y[3], float z[3])
# float innervec(const float x[3], const float y[3])
# void outervec(const float x[3], const float y[3], float z[3])
# とする。
# プログラムの動作は、二つの3次元ベクトルaとbの各成分をじゅんじに入力して、それらの和、差、内積、外積を求めて出力する。
# 以上の説明に沿ったプログラムをC言語を用いて書け。
#
0003デフォルトの名無しさん
2010/06/19(土) 00:09:04# [1] 授業単元:Cプログラミング演習
# [2] 問題文(含コード&リンク):
# 問題1:文字列"Computer1Programing2Communication3Electro4"を、"test.txt"に書き込むプログラムを作成せよ。
# 問題2:ファイル"test.txt"から文字列も読み込み、並びを逆にしてファイル"sample.txt"に出力するプログラムを作成せよ。("test.txt"は問題1で作成したものを使用すること。)
# 問題3:ファイル"sample.txt"から大文字だけを画面に表示させるプログラムを作成せよ。("sample.txt"は問題2で作成したものを使用すること。)
#
0004デフォルトの名無しさん
2010/06/19(土) 00:11:08# ベクトルを規格化する関数 normal
#
# 2つのベクトルの差の大きさを返す関数 dist を作成せよ。
#
# よろしくお願いします
#
0005デフォルトの名無しさん
2010/06/19(土) 00:13:51# 次の問題を解くプログラムを再帰を使って実装せよ。
# 問題 コインの種類として、1,5,8,10,15の5種類を与える。
# に対して、最小枚数のコインでmを支払うときの枚数を求めよ。
#
0006デフォルトの名無しさん
2010/06/19(土) 00:24:25# 期間の抽出について相談です。
# 元情報
# ID START END
# ----- ----- -----
# 10 2010/06/01 2010/06/12
# 10 2010/06/13 2010/06/14
# 10 2010/06/15 NULL
# 20 2010/06/01 2010/06/11
# 20 2010/06/13 2010/06/15
# ↓
# 欲しい情報
# ID START END
# ----- ----- -----
# 10 2010/06/01 NULL
# 20 2010/06/01 2010/06/11
# 20 2010/06/13 2010/06/15
#
# ・開始日、終了日の期間重複はなし
# ・IDごとにデータを抽出。抽出単位は連続している期間の最小開始日と最大終了日
# ・期間は綺麗に連続(ID=10)することもあれば非連続することもある(ID=20)
0007デフォルトの名無しさん
2010/06/19(土) 00:27:38# 質問です。
# Oracle10gです。
#
# 部門の親子関係を示す以下のようなテーブルがある。
#
# 親部門ID 子部門ID 子部門の区分
# 1 2 0
# 1 3 1
# 3 4 0
# 3 5 1
# 5 6 0
# 7 8 0
# 7 9 1
# 9 10 0
#
# ある親部門IDを指定し、その部門以下の階層に含まれる部門のうち区分が0となっているものを取得したい。
# 上の例だと部門ID=1と指定した場合2,4,6を取得したい。
#
0008デフォルトの名無しさん
2010/06/19(土) 04:52:35使用言語:J
read=:1!:1
write=:1!:2
N.B.問題1
'Computer1Programing2Communication3Electro4' write <'test.txt'
N.B.問題2
reverse=: |.
(reverse read <'test.txt') write <'sample.txt'
N.B.問題3
ascii=: a. & i.
isUpper=: 65&<: *. 90&>:
smoutput (#~ isUpper@ascii) read <'sample.txt'
ECPC
0009デフォルトの名無しさん
2010/06/19(土) 08:30:47# アルゴリズムや処理の高速化の知恵をお借りしたく。宿題ではありません。
#
# Cで英単語のスペルチェッカを作って、タイムアタックするYO!というお題。
# 与えられているのは、14万語強の英単語リスト(約1.4MB)、
# 700万語強の照合するテキスト(約39MB)と、プログラムのテンプレ。
# これに、各自で辞書の読み込みload()、チェックルーチンcheck()、
# 辞書の単語数のカウントcount()、メモリの開放unload()を実装するようです。
# 照合の仕様は、単純に辞書に同じ単語があるかどうかだけです。
# ただし大文字小文字は区別しません。
#
# 試しに手元のMacBook+gccで配列に突っ込んだ辞書を
# 逐一リニアサーチさせてみると9700秒、
# 辞書を50万個のハッシュの中に無理矢理おさめて14秒です。
#
# 講義で想定している実装は、ハッシュ+片方向の連結リスト。
# あるいはトライ木。ぼちぼちと試していくつもりですが、
# ↓の結果(クラウドなサーバー上で実行)を見る限り、
# トップのあたりはどうも想像の斜め上をいく実装をしている模様。
# ttp://www.cs50.net/boards/pset6.php
# みなさんなら、どう攻めますか?
# お題の詳細は↓の中のpset6.pdf、辞書はwords、
# テンプレのプログラムと照合テキストはpset6.zipにあります。
# ttp://cdn.cs50.net/2009/fall/psets/6/
0010デフォルトの名無しさん
2010/06/19(土) 14:22:34% Prolog
'ある親部門IDを指定し、その部門以下の階層に含まれる部門のうち区分が0となっているものを取得したい。'(_親部門ID,_区間が0となっている子部門ID) :-
部門(_親部門ID,_子部門ID,_子部門の区分),
その部門以下の階層に含まれる部門のうち区分が0となっているものを取得(_子部門ID,_子部門区分,_区間が0となっている子部門ID).
その部門以下の階層に含まれる部門のうち区分が0となっているものを取得(_子部門ID,0,_子部門ID).
その部門以下の階層に含まれる部門のうち区分が0となっているものを取得(_子部門ID_1,_子部門の区分,X) :-
部門(_子部門ID_1,_子部門ID_2,_子部門の区分_2),
その部門以下の階層に含まれる部門のうち区分が0となっているものを取得(_子部門ID_2,_子部門の区分_2,X).
0011デフォルトの名無しさん
2010/06/19(土) 14:24:53% Prolog
'IDごとにデータを抽出。抽出単位は連続している期間の最小開始日と最大終了日' :-
findsetof(_ID,期間(_ID,_期間下限,_期間上限),L1),
findall([_ID,_最小開始日,_最大終了日],(
member(_ID,L1),
findmin([_ID,_開始日],開始日(_ID,_開始日),_最小開始日),
findmax([_ID,_終了日],終了日(_ID,_終了日),_最大終了日)),
L).
write('ID START END \n----- ----- ----- \n'),
append(_,[[_ID,_Start,_End]|R],L),
write_formatted('%t %t %t\n',[_ID,_Start,_End]),
R = [].
開始日(_ID,_開始日) :- 期間(_ID,_開始日,_).
終了日(_ID,_終了日) :- 期間(_ID,_開始日,_終了日),\+(_終了日='NULL').
0012デフォルトの名無しさん
2010/06/19(土) 14:28:05% Prolog
'与えられた金額に対して、最小枚数のコインでmを支払うときの枚数を求めよ。'(_m,_最小コイン枚数) :-
暫定候補枚数を得る(_m,[15,10,8,5,1],0,_暫定候補枚数),
最小枚数のコインでmを支払うときの枚数(_暫定候補枚数,_最小コイン枚数).
暫定候補枚数を得る(0,_,X,X) :- !.
暫定候補枚数を得る(_m,[P|R1],S1,X) :-
D is _m // P,
_m_2 is _m mod P,
S2 is S + D,
暫定候補枚数を得る(_m_2,S2,X).
最小枚数のコインでmを支払うときの枚数(_m,_暫定候補枚数,_最小コイン枚数) :-
findmin(_枚数,暫定候補枚数より少ない支払いを探す(_m,_暫定候補枚数,_枚数,_最小コイン枚数),!.
暫定候補枚数より少ない支払いを探す(_m,_暫定候補枚数,_枚数) :-
for(0,A,_暫定候補枚数),
for(0,B,_暫定候補枚数),
for(0,C,_暫定候補枚数),
for(0,D,_暫定候補枚数),
for(0,E,_暫定候補枚数),
_m is 1 * A + 5 * B + 8 * C + 10 * D + 15 * E,
_枚数 A + B + C + D + e,
_枚数 =< _暫定候補枚数.
0013デフォルトの名無しさん
2010/06/19(土) 15:24:49使用言語:Io
P1 := method(
File clone open("test.txt") do(
write("Computer1Programing2Communication3Electro4\n")
close
)
)
P2 := method(
File clone open("sample.txt") do(
f := File clone open("test.txt")
write(f readLine reverse,"\n")
f close
close
)
)
P3 := method(
File clone open("sample.txt") do(
foreach(v,if(v>=65 and v<=90,v asCharacter print))
""println
close
)
)
P1;P2;P3
0014デフォルトの名無しさん
2010/06/19(土) 15:53:08# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):
# 以下のプログラムで、pointを昇順に並び替えるプログラムを作る。ソートの部分の
みを書き換え、プログラムを作りなさい。
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10713.tx
#
# struct data {
# int car_num;
# char name[MAX_LEN];
# char cons[MAX_LEN];
# char nationality[MAX_LEN];
# int birth;
# double point;
# };
0015デフォルトの名無しさん
2010/06/19(土) 15:55:02% Prolog
http://nojiriko.asia/prolog/c136_955.html
0016デフォルトの名無しさん
2010/06/19(土) 16:21:50# 【 課題 】入力したテキストに含まれる文字を種類別に使用回数を表示し、降順にソートし出力するプログラムを作れ。
# 【 形態 】Javaアプリケーション(main()で開始)
# 【 期限 】6月22日
# 【 Ver 】1.6.0_20
# 【 補足 】../test/read.cgi/tech/1267796762/83と同様の問題ですが漢字や記号など全ての種類によらずに統計したい場合です。よろしくお願いします。
#
#
0017デフォルトの名無しさん
2010/06/19(土) 17:13:41% Prolog
http://nojiriko.asia/prolog/j69_170.html
0018デフォルトの名無しさん
2010/06/19(土) 21:35:13% Prolog
'二つの3次元ベクトルaとbの各成分をじゅんじに入力して、それらの和、差、内積、外積を求めて出力する' :-
write('入力してください X1,Y1,Z1 : '),get_split_line([','],[X1,Y1,Z1]),
write('入力してください X2,Y2,Z2 : '),get_split_line([','],[X2,Y2,Z2]),
ベクトルの和([[X1],[Y1],[Z1]],[[X2],[Y2],[Z2]],_ベクトルの和),
ベクトルの差([[X1],[Y1],[Z1]],[[X2],[Y2],[Z2]],_ベクトルの差),
ベクトルの内積([[X1],[Y1],[Z1]],[[X2],[Y2],[Z2]],_ベクトルの内積),
ベクトルの外積([[X1],[Y1],[Z1]],[[X2],[Y2],[Z2]],_ベクトルの外積),
write_formatted('和は %t \n差は %t \n内積は %t \n外積は %t です\n').
ベクトルの和([],[],[]) :- !.
ベクトルの和([[A]|R1],[[B]|R2],[[C]|R3]) :-
C is A + B,
ベクトルの和(R1,R2,R3).
ベクトルの差([],[],[]) :- !.
ベクトルの差([[A]|R1],[[B]|R2],[[C]|R3]) :-
C is A - B,
ベクトルの差(R1,R2,R3).
0019デフォルトの名無しさん
2010/06/19(土) 21:36:39% Prolog (その二)
ベクトルの内積([],[],0) :- !.
ベクトルの内積([[A]|R1],[[B]|R2],X) :-
X is Y + A * B.
ベクトルの内積(R1,R2,Y),
innervec([],[],0) :- !.
innervec([A|R1],[B|R2],Inner) :-
innervec(R1,R2,Inner2),
Inner is Inner2 + A * B,!.
ベクトルの外積([[X1],[Y1],[Z1]],[[X2],[Y2],[Z2]],_ベクトルの外積) :-
X3 is Y1 * Z2 - Z1 * Y2,
Y3 is Z1 * X2 - X1 * Z2,
Z3 is X1 * Y2 - Y1 * X2,
_ベクトルの外積 = [[X3],[Y3],[Z3]],!.
0020デフォルトの名無しさん
2010/06/19(土) 21:59:08使用言語:maxima
P1():=(f:openw("test.txt"),
printf(f,"Computer1Programing2Communication3Electro4~%"),
close(f)
);
P2():=(fin:openr("test.txt"),fout:openw("sample.txt"),
printf(fout,"~a~%",sreverse(readline(fin))),
close(fin),
close(fout)
);
P3():=(fin:openr("sample.txt"),
text:readline(fin),
for v in charlist(text) do if uppercasep(v) then printf(true, "~a", v),
close(fin),
print("")
);
P1();P2();P3();
0021デフォルトの名無しさん
2010/06/19(土) 22:39:23% Prolog (その一)
'文字列"Computer1Programing2Communication3Electro4"を、"test.txt"に書き込む' :-
open('test.txt',write,Output),
write(Output,'Computer1Programing2Communication3Electro4'),
close(Output).
'ファイル"test.txt"から文字列も読み込み、並びを逆にしてファイル"sample.txt"に出力する' :-
get_lines('test.txt',Lines),
open('sample.txt',write,Output),
append(_,[Line|R],Lines),
並びを逆に(Line,_並びを逆にしたLine),
write_formatted(Output,_並びを逆にしたLine),
R = [],
close(Output).
並びを逆に(Line,_並びを逆にしたLine) :-
atom_chars(Line,Chars),
reverse(Chars,Rchars),
atom_chars(_並びを逆にしたLine,Rchars).
0022デフォルトの名無しさん
2010/06/19(土) 22:40:44% Prolog (その二)
'ファイル"sample.txt"から大文字だけを画面に表示させる' :-
get_chars('sample.txt',Chars),
append(_,[Char|R],Chars),
大文字だけを画面に表示させる(Char),
R = [],!.
大文字だけを画面に表示させる(Char) :- Char @>= 'A',Char @=< 'Z',
write(Char).
大文字だけを画面に表示させる(Char) :- \+((Char @>= 'A',Char @=< 'Z')).
0023デフォルトの名無しさん
2010/06/20(日) 06:44:30使用言語:J
f=:monad def ';:inv":&.>(\:{:"1)(~.;"0#/.~)y'
f ucp'a/bb/ccc/漢字'
/ 3
c 3
b 2
a 1
漢 1
字 1
0024デフォルトの名無しさん
2010/06/20(日) 15:11:56使用言語:J
addvec=: +
subvec=: -
innervec=: +/ .*
outervec=: [:(-/ .*)&>2<\(}.,2&{.)@,.
A=: 1 2 3
B=: 4 5 6
A addvec B
5 7 9
A subvec B
_3 _3 _3
A innervec B
32
A outervec B
_3 6 _3
0025デフォルトの名無しさん
2010/06/20(日) 16:41:55使用言語:maxima
load("eigen");
addvec(a,b):= a + b;
subvec(a,b):= a - b
innervec(a,b):= inprod(a,b);
outervec(a,b):= transpose(adjoint(matrix(A,B,[1,1,1])))[3];
(%i102) A:[1,2,3];
(%i103) B:[4,5,6];
(%i105) addvec(A,B);
(%o105) [5, 7, 9]
(%i106) subvec(A,B);
(%o106) [- 3, - 3, - 3]
(%i107) innervec(A,B);
(%o107) 32
(%i111) outervec(A,B);
(%o111) [- 3, 6, - 3]
0026デフォルトの名無しさん
2010/06/20(日) 21:41:07使用言語:十進BASIC
DIM a(3),b(3),c(3)
DATA 1,2,3
DATA 4,5,6
MAT READ a
MAT READ b
SUB addvec(a(),b(),c())
MAT c=a+b
END SUB
SUB subvec(a(),b(),c())
MAT c=a-b
END SUB
FUNCTION innervec(a(),b())
LET innervec=DOT(a,b)
END FUNCTION
SUB outervec(a(),b(),c())
MAT c=cross(a,b)
END SUB
CALL addvec(a,b,c)
MAT PRINT c
CALL subvec(a,b,c)
MAT PRINT c
PRINT innervec(a,b)
CALL outervec(a,b,c)
MAT PRINT c
END
0027デフォルトの名無しさん
2010/06/20(日) 23:14:50# 1から10までの積を計算するプログラムを書け。このとき,whileループを用いて、
# 画面に 1*2*3*・・・・*10 = という風に表示されるようにすること。
0028デフォルトの名無しさん
2010/06/20(日) 23:18:23# [1] 授業単元:数値計算法
# [2] 問題文(含コード&リンク):
# 与えられた零以上の実数(a,b,c,d)と正の実数(e,f)に対して
# つぎのロンバーグ表と積分値を求めるプログラムを作成せよ
# (分割数:n=2^k≧16,推定回数:m≧3)
#
# I=∫ 1/(a*x^3+b*x^2+c*x+d)dx (e≦x≦f)
#
# ただし、キーボードから(a,b,c,d,e,f)を入力すれば
# 上記の定積分のロンバーグ表の値と積分値が画面表示
# されるようなプログラムを作ること。
#
0029デフォルトの名無しさん
2010/06/20(日) 23:28:41# DATE | DATA
# ------------+----------
# 2010-06-01 | aaa
# 2010-06-02 | bbb
# 2010-06-03 | ccc
# 2010-06-04 | ddd
# 2010-06-05 | eee
# 2010-06-06 | fff
# 2010-06-07 | ggg
#
# ・欲しい結果
# 最新3件を昇順で。
# DATE | DATA
# ------------+----------
# 2010-06-05 | eee
# 2010-06-06 | fff
# 2010-06-07 | ggg
#
# ・説明
# select DATE, DATA from TABLE order by DATE desc limit 3;
# とすれば、最新3件を降順で取得できますが、
# できれば降順でなく昇順で最新3件を取得したいです。
0030デフォルトの名無しさん
2010/06/21(月) 00:38:32% Prolog
'DATEの最新3件を昇順で取得する'(L) :-
findsort([DATE],テーブル(DATE,DATA),L1),
length(L,3),
append(_,L,L1).
findsort(_鍵ならび,P,_解ならび) :-
P =.. [F|L1],
append(_鍵ならび,L1,L2),
findall(L2,P,L3),
sort(L3,L4),
findall(L1,member(L2,L4),_解ならび).
0031デフォルトの名無しさん
2010/06/21(月) 07:40:51% Prolog
'1から10までの積を計算する。このとき,画面に 1*2*3*・・・・*10 = という風に表示
されるようにする' :-
'1から10までの積を計算する。このとき,画面に 1*2*3*・・・・*10 = という
されるようにする'(1,1).
'1から10までの積を計算する。このとき,画面に 1*2*3*・・・・*10 = という風に表示
されるようにする'(10,S1) :-
S is S1 * 10,
write_formatted('10 = %t\n',[S]),!.
'1から10までの積を計算する。このとき,画面に 1*2*3*・・・・*10 = という風に表示
されるようにする'(N,S1) :-
S2 is S1 * N,
N2 is N + 1,
write_formatted('%t*',[N]),
'1から10までの積を計算する。このとき,画面に 1*2*3*・・・・*10 = という
風に表示されるようにする'(N2,S2).
0032デフォルトの名無しさん
2010/06/21(月) 08:07:14% Prolog 改行の補正をし忘れた。すみません。
'1から10までの積を計算する。このとき,画面に 1*2*3*・・・・*10 = という風に表示されるようにする' :-
'1から10までの積を計算する。このとき,画面に 1*2*3*・・・・*10 = というされるようにする'(1,1).
'1から10までの積を計算する。このとき,画面に 1*2*3*・・・・*10 = という風に表示されるようにする'(10,S1) :-
S is S1 * 10,
write_formatted('10 = %t\n',[S]),!.
'1から10までの積を計算する。このとき,画面に 1*2*3*・・・・*10 = という風に表示されるようにする'(N,S1) :-
S2 is S1 * N,
N2 is N + 1,
write_formatted('%t*',[N]),
'1から10までの積を計算する。このとき,画面に 1*2*3*・・・・*10 = という風に表示されるようにする'(N2,S2).
0033デフォルトの名無しさん
2010/06/21(月) 21:42:27% Prolog
ベクトルの正規化(V1,V2) :-
flat(V1,L1),
分散(L1,_分散),
U is sqrt(_分散) / _分散,
行列の積(V1,[[U]],V2).
ベクトルの差([],[],[]) :- !.
ベクトルの差([[A]|R1],[[B]|R2],[[C]|R3]) :-
C is A - B,
ベクトルの差(R1,R2,R3).
normal(V1,V2) :- ベクトルの正規化(V1,V2).
dist(V1,V2,Dist) :- ベクトルの差(V1,V2,Dist).
0034デフォルトの名無しさん
2010/06/22(火) 11:49:26# [1] 授業単元:C言語プログラミング
# [2] 問題文(含コード&リンク):
# [1] 授業単元:
# char buf[80];
# int main(int ac, char ** av)
# {
# int i;
# buf[0] = '\0';
# for(i = 1; i < ac; i++){
# printf("%3d \"%s\"\n", strlen(av[i]), av[i]);
# strcat(buf, av[i]);
# }
# printf("%3d \"%s\"\n", strlen(buf), buf);
#
# これを入力した文字列を逆順に表示できるように書き換えよ
#
0035デフォルトの名無しさん
2010/06/22(火) 12:22:29% Prolog 視点を少しずらしてみた。EUC版は易しい。
バイナリーモードで読み込まれたバイトコードならびを逆順に並べ変えた後に、EUC全角文字を復元して文字列を作る'(_コードならび,_逆順文字列) :-
reverse(_コードならび,_逆転したコードならび),
'EUC全角文字コードを復元する'(_コードならび,_文字単位ならび),
atom_codes(_逆順文字列,_文字単位ならび).
'EUC全角文字コードを復元する'([],[]) :- !.
'EUC全角文字コードを復元する'([C1,C2|R1],[C|R2]) :-
C1 > 127,
C2 > 127,
C is C2 * 256 + C1,
'EUC全角文字コードを復元する'(R1,R2),!.
'EUC全角文字コードを復元する'([C|R1],[C|R2]) :-
'EUC全角文字コードを復元する'(R1,R2),!.
0036デフォルトの名無しさん
2010/06/22(火) 15:47:03# 1] 授業単元:システムコール
# [2] 問題文(含コード&リンク):
# コマンドライン引数で指定された文字列のいずれかと一致する名前の環境変数につい てのみ、
# #include <stdio.h>
# #include <stdlib.h>
# extern char **environ;
# main()
# {
# char **p;
# for (p = environ; *p != NULL; p ++) {
# printf("%s\n", *p);}
# return 0;}
# や
# #include <stdio.h>
# #include <stdlib.h>
# main(int argc, char *argv[], char *envp[])
# {
# char **p;
# for (p = envp; *p != NULL; p ++) {
# printf("%s\n", *p);}
# return 0;}
# のように変数名と値を表示するプログラムを書け。
# ただし、コマンドライン引数に重複があっても、対応する環境変数について複数回表示してはならない
0037デフォルトの名無しさん
2010/06/22(火) 15:48:33% Prolog
program :-
user_parameters(L),
append(_,[_環境変数名|R],L),
環境変数の表示(_環境変数名),
R = [].
環境変数の表示(_環境変数名) :-
getenv(_環境変数名,_値),
write_formatted('%t=%t\n',[_環境変数名,_値]),!.
環境変数の表示(_).
0038デフォルトの名無しさん
2010/06/22(火) 16:43:01# 【 課題 】 GUIで電卓の機能をもったプログラムを作成してください。デザインや機能は自由ですが、最低四則演算はできるようにしてください。
# アプレットのソースは結構あるのですがXPに入っている電卓のようなものが
# 一番ベストです!!
# よろしくお願いします
0039デフォルトの名無しさん
2010/06/22(火) 17:47:07# 配列a[n],配列b[n] と配列の大きさn を渡すと配列の
# 要素を入れ換えるプログラムをポインタを用いて作成せよ.
# 例えば,a[3]={1,2,3},b[3]={101,102,103}とすると
# き,結果として,a[3]={101,102,103},b[3]={1,2,3}と
# なるようにせよ.
0040デフォルトの名無しさん
2010/06/22(火) 17:53:17% Prolog
二つのリストの最初のN要素だけ入れ替える(L1_1,L2_1,N,L1_2,L2_2) :-
length(L1_0,N),
length(L2_0,N),
append(L1_0,R1,L1),
append(L2_0,R2,L2),
append(L2_0,R1,L3),
append(L1_0,R2,L4),!.
0041デフォルトの名無しさん
2010/06/22(火) 18:18:11% Prolog 論理変数名が間違ってました。ついでに2パターン追加。
二つのリストの最初のN要素だけ入れ替える(L1_1,L2_1,N,L1_2,L2_2) :-
length(L1_0,N),
length(L2_0,N),
append(L1_0,R1,L1_1),
append(L2_0,R2,L2_1),
append(L2_0,R1,L1_2),
append(L1_0,R2,L2_2),!.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
二つのリストの最初のN要素だけ入れ替える(L1_1,L2_1,N,L1_2,L2_2) :-
integer(N),
length(LN,N),
二つのリストの最初のN要素だけ入れ替える(L1_1,L2_1,LN,L1_2,L2_2).
二つのリストの最初のN要素だけ入れ替える(R1,R2,[],R1,R2).
二つのリストの最初のN要素だけ入れ替える([A|R1_1],[B|R2_1],[_|R],[B|R1_2],[A|R2_2]) :-
二つのリストの最初のN要素だけ入れ替える(R1_1,R2_1,R,R1_2,R2_2).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
二つのリストの最初のN要素だけ入れ替える(R1,R2,0,R1,R2).
二つのリストの最初のN要素だけ入れ替える([A|R1_1],[B|R2_1],N,[B|R1_2],[A|R2_2]):-
N1 is N - 1,
二つのリストの最初のN要素だけ入れ替える(R1_1,R2_1,N1,R1_2,R2_2).
0042デフォルトの名無しさん
2010/06/22(火) 18:49:57# [1] 授業単元:C・プログラミング
# [2] 問題文(含コード&リンク):
# 深さ優先探索をリスト表現で表すプログラムを作成せよ。
# 制限は特にないです。
#
0043デフォルトの名無しさん
2010/06/22(火) 19:56:45# 【 課題 】GUIを使って、Gメールなどのユーザー名とパスワードを入力する画面を作成する。また、アカウントを持ってない人用の
# ページも作成し、そこに入力した内容はDBにデータが保存されるようにプログラムを作りなさい。
0044デフォルトの名無しさん
2010/06/22(火) 20:34:45# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10733.txt
# 次の構造体について要素数3の構造体配列を宣言し、
# それぞれの値を標準入力(キーボードから入力)し、
# 各科目の平均点を表示するプログラムを作成しなさい。
# なお、表示は実効例通りになるようにすること。
#
# struct Score{
# int english; // 英語の点数
# int math; // 数学の点数
# int physics; // 物理の点数
# 実効例
# 1人目
# 英語:(入力した点数)
# 数学:(入力した点数)
# 物理:(入力した点数)
# 2人目
# 英語:(入力した点数)
# 数学:(入力した点数)
# 物理:(入力した点数)
# 3人目
# 英語:(入力した点数)
# 数学:(入力した点数)
# 物理:(入力した点数)
# 英語の平均点は(英語の平均点の計算結果を表示)です。
# 数学の平均点は(数学の平均点の計算結果を表示)です。
# 物理の平均点は(物理の平均点の計算結果を表示)です。
0045デフォルトの名無しさん
2010/06/23(水) 04:47:09# [1] 授業単元:C++プログラミング
# [2] 問題文(含コード&リンク):三目並べを作成せよ。ポインタとクラスを使用。
0046デフォルトの名無しさん
2010/06/23(水) 04:49:28# 表示例のように,名前,性別,身長,体重,腹囲(ウエスト)を3人分入力した後, 3名全員について入力データに加えてBMI値とメタボリック症候群の疑いの判定を 表示するプログラムを作成しなさい.
# プログラムでは,名前,性別,身長,体重,腹囲をまとめて 個人データとして表すための構造体を定義して利用すること.
# 注意
# " 体重はkg, 身長,腹囲はcmで入力する.
# " 性別は 1 で男性,2で女性を表す.
# " BMI値 = 体重(kg) / 身長(m)2
# " 男性は腹囲85cm以上,女性は腹囲90cm以上でメタボリック症候群の疑い がある
#
# 表示例
# データ1を入力してください
# 名前: Hanako
# 性別: 2
# 身長: 156.4
# 体重: 65.3
# 腹囲: 93.4
# 名前: Hanako, 性別: 女, 身長: 156.4, 体重: 65.3, 腹囲: 93.4, BMI: 26.7, メタボリック症候群の疑いがあります
0047デフォルトの名無しさん
2010/06/23(水) 06:38:39% Prolog 相当に無理があるが、構造体配列に近いものを定義してみた。
構造体(点数([英語(_英語),数学(_数学),物理(_物理)])).
要素数3の構造体配列を宣言 :-
length(L,3),
findall(L1,(member(L1,L),構造体(点数(L1))),X),
assertz(構造体配列(点数構造体ならび,X)).
:- 要素数3の構造体配列を宣言.
'それぞれの値を標準入力(キーボードから入力)し、各科目の平均点を表示する'
構造体配列(点数構造体ならび(L)),
findall(L1,(member(L1,L),三科目を入力する(L1)),L),
各科目の平均点を表示する(L).
三科目を入力する([]) :- !.
三科目を入力する([P|R]) :-
P =.. [F,Q],
write_formatted('%t:',[F]),get_integer(Q),
三科目を入力する(R).
各科目の平均点を表示する(L) :-
構造体(点数(L0)),
member(_科目構造,L0),
_科目構造=..[_科目名,_点数],
findavg(_点数,(member(L1,L),member(_科目構造,L1)),_平均点),
write_formatted('%tの平均点は%tです。\n',[_科目名,_平均点]),
fail.
各科目の平均点を表示する(_).
0048デフォルトの名無しさん
2010/06/23(水) 07:26:59% Prolog
出会うまでリストを手繰る(_求めるもの,[_求めるもの|R]) :-
write_formatted('!%t!\n',[_求めるもの]).
出会うまでリストを手繰る(_求めるもの,[A|R]) :-
list(A),
write_formatted('%t-',[A]),
出会うまでリストを手繰る(_求めるもの,A);
\+(list(A)),
write_formatted('%t-',[A]),
出会うまでリストを手繰る(_求めるもの,R).
0049デフォルトの名無しさん
2010/06/23(水) 07:56:07% Prolog 間違えました。>>48は、深く潜ってのリストの探索に失敗するとそれで終わりになってしまいます。
出会うまでリストを手繰る(_求めるもの,[_求めるもの|R]) :-
write_formatted('!%t!\n',[_求めるもの]).
出会うまでリストを手繰る(_求めるもの,[A|R]) :-
list(A),
出会うまでリストを手繰る(_求めるもの,A);
出会うまでリストを手繰る(_求めるもの,R).
出会うまでリストを手繰る(_求めるもの,[A|R]) :-
\+(list(A)),
write_formatted('%t-',[A]),
出会うまでリストを手繰る(_求めるもの,R).
0050デフォルトの名無しさん
2010/06/23(水) 08:17:40% Prolog これも致命的な欠陥がありました。一応訂正したものから示すと、
出会うまでリストを手繰る(_求めるもの,[_求めるもの|R]) :-
write_formatted('!%t!\n',[_求めるもの]).
出会うまでリストを手繰る(_求めるもの,[A|R]) :-
list(A),
出会うまでリストを手繰る(_求めるもの,A).
出会うまでリストを手繰る(_求めるもの,[_|R]) :-
list(A),
出会うまでリストを手繰る(_求めるもの,R).
出会うまでリストを手繰る(_求めるもの,[A|R]) :-
\+(list(A)),
write_formatted('%t-',[A]),
出会うまでリストを手繰る(_求めるもの,R).
% >>49 のどこがいけないかというと、Aがリストでないとき、
% \+(list(A))の節が実行されるのではなく、list(A)の節の ;より後の副目標が
% 実行されてしまいます。これだと write_formatted('%t-',[A]),による
% トレースができませんね。
出会うまでリストを手繰る(_求めるもの,[A|R]) :-
list(A),
出会うまでリストを手繰る(_求めるもの,A);
出会うまでリストを手繰る(_求めるもの,R).
出会うまでリストを手繰る(_求めるもの,[A|R]) :-
\+(list(A)),
write_formatted('%t-',[A]),
出会うまでリストを手繰る(_求めるもの,R).
0051デフォルトの名無しさん
2010/06/23(水) 12:21:01% Prolog
'名前,性別,身長,体重,腹囲(ウエスト)を3人分入力した後, 3名全員について入力 データに加えてBMI値とメタボリック症候群の疑いの判定を表示する' :-
'名前,性別,身長,体重,腹囲(ウエスト)を3人分入力'(L),
'3名全員について入力データに加えてBMI値とメタボリック症候群の疑いの判定を表示する'(L).
'名前,性別,身長,体重,腹囲(ウエスト)を3人分入力'(L) :-
findall([_名前,_性別,_身長,_体重,_腹囲],(
for(1,N,3),
write('名前:'),get_line(_名前),
write('性別:'),get_integer(_性別),
write('身長:'),get_integer(_身長),
write('体重:'),get_integer(_体重),
write('腹囲:'),get_integer(_腹囲)),
L).
'3名全員について入力データに加えてBMI値とメタボリック症候群の疑いの判定を表示する'([]) :- !.
'3名全員について入力データに加えてBMI値とメタボリック症候群の疑いの判定を表示する'([[_名前,_性別,_身長,_体重,_腹囲]|R]) :-
write_formatted('%t:%t, %t:%t, %t:%t, %t:%t,%t :%t, ',[名前,性別,身長,体重,腹囲,_名前,_性別,_身長,_体重,_腹囲]),
_BMI値 = _体重 / ((_身長 / 100) ^ 2),
write_formatted('%t:%t, ',['BMI値:',_BMI値]),
診断(_性別,_腹囲,_診断),
write_formatted('%t\n',[_診断]),
'3名全員について入力データに加えてBMI値とメタボリック症候群の疑いの判定を表示する'(R).
診断(1,_腹囲,メタボリック症候群の疑いがあります) :- _腹囲 >= 85,!.
診断(2,_腹囲,メタボリック症候群の疑いがあります) :- _腹囲 >= 90,!.
診断(_,_,'').
0052デフォルトの名無しさん
2010/06/23(水) 12:51:11% Prolog 名前が整数では困りますね。それから整数とは限らない入力が多いようなので
'名前,性別,身長,体重,腹囲(ウエスト)を3人分入力'(L) :-
findall([_名前,_性別,_身長,_体重,_腹囲],(
for(1,N,3),
write('名前:'),get_line(_名前),
write('性別:'),get_line(Line),atom_to_term(Line,_性別,_),
write('身長:'),get_line(Line),atom_to_term(Line,_身長,_),
write('体重:'),get_line(Line),atom_to_term(Line,_体重,_),
write('腹囲:'),get_line(Line),atom_to_term(Line,_腹囲,_)),
L).
0053デフォルトの名無しさん
2010/06/23(水) 16:37:12# 【質問テンプレ】
# [1] 授業単元: C言語プログラミング
# [2] 問題文(含コード&リンク):
# 1.関数sqrtを使って1〜10までの二乗根の和を求めなさい。
# 2.16進数ABC.DEを10進数にしなさい。
0054デフォルトの名無しさん
2010/06/23(水) 16:48:16% Prolog
'関数sqrtを使って1〜10までの二乗根の和を求める'(X) :-
findsum(Y,(for(1,N,10),Y is sqrt(N)),X).
'16進数ABC.DEを10進数に変換'(X) :-
小数点を含む16進数を10進数に変換('ABC.DE',X).
小数点を含む16進数を10進数に変換(_16進文字列,_10進数) :-
sub_atom(_16進文字列,S,1,RLen,'.'),
sub_atom(_16進文字列,0,S,_,S_1),
sub_atom(_16進文字列,S+1,RLen,_,S_2),
'16進文字列表現を10進整数に変換'(S_1,N1),
'16進文字列表現を10進整数に変換'(S_2,N2),
Z is truncate(16 ^ RLen),
_10進数 is N1 + N2 / Z.
% '16進文字列表現を10進整数に変換'/2 は http://nojiriko.asia/prolog/c136_75.html 参照
0055デフォルトの名無しさん
2010/06/23(水) 16:51:36# 【質問テンプレ】
# [1] 授業単元: プログラミングB
# [2] 問題文(含コード&リンク):実行したい処理を選ぶことが可能なプログラムを作りなさい。このとき、実
# 行できる処理は以下の三つとする。
#
# 処理1:複数の2択問題への回答に応じた結果を表示する。(例:職種選択、旅行先選び
#
# 処理2:文字コード一覧表を出力する。(文字コード32~126を一行に8文字ずつ)
#
# 処理3:本のページ数を入力し、その本を読み切るために必要な日数を表示
# する。このとき、初日は10ページ、2日目は20ページ,,,と読むページ
# 数は増加するものとする。
#
# 以下の仕様で作成すること
#
# キーボードから入力された数に応じて、switch文で各処理に移動する。
# 処理1:if文を使って
# 処理2:for文を使って
# 処理3:while文またはdo・while文を使って。
0056デフォルトの名無しさん
2010/06/24(木) 05:39:57# モンテカルロ法で√2の近似値を求めたいのですが、
# ネット調べてみるとモンテカルロ法と言えばπの近似に関するばかりで・・・
# どなたか教えてくださいませ
#
0057デフォルトの名無しさん
2010/06/24(木) 05:42:12# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):
# 問題1:char name[20], int english, int mathematicsをメンバとする構造体 scoreを定義せよ
# 問題2:以下の5人の情報をもつ配列 seito[5] を、問題1で作成した構造体 score 型を使って宣言せよ。なお、5人の情報は初期値として宣言することにする。
# name english mathematics
# "yamada" 50 70
# "tanaka" 70 60
# "suzuki" 80 70
# "yamamoto" 40 60
# "sakata" 90 80
# 問題3:問題2で初期値を代入した構造体 score 型の構造体配列 seito[5] を宣言し、各メンバ変数をソートする関数を作成せよ。
0058デフォルトの名無しさん
2010/06/24(木) 11:10:470059デフォルトの名無しさん
2010/06/24(木) 11:13:05% Prolog 字化けしてしまいました。書き直し。
モンテカルロ法で√2の近似値を求める(_試行回数,_除数,X) :-
count((for(1,N,_試行回数),U is (random mod _除数) ^ 2,U < _除数 * _除数/ 2),Y),
X is Y / (_試行回数 / 2).
0060デフォルトの名無しさん
2010/06/24(木) 12:13:40# [1] 授業単元:情報処理
# [2] 問題文:ガウスの消去法のプログラムをピボット対応と
# ピボット非対応の2つ作成し、連立方程式の解を求めよ。
# (ただし解くべき連立方程式は5元1次方程式で、ピボットの
# 発生するものと発生しないものの2種類とする)
0061デフォルトの名無しさん
2010/06/24(木) 13:56:28# 演習6-1
#
# 複数の文字列を読み込み,それらの文字列を空白を入れて繋ぎ合わせるプログラムを作成せよ.
#
# 【実行例】
#
# 何個の文字列を入力しますか?:3
# 入力文字列[1]:A
# 入力文字列[2]:B
# 入力文字列[3]:C
#
# 結果:A B C
#
# 演習6-3
#
# 入力したDNA塩基配列中にある塩基 t, c, a, gそれぞれの個数をカウントするプログラムを作成せよ.
# 【実行例】
#
# % ./a.out
# tataatccg ← 入力し,リターンを押して ^D
# Thymine (t) : 3
# Cytosine (c) : 2
# Adenine (a) : 3
# Guanine (g) : 1
# %
0062デフォルトの名無しさん
2010/06/24(木) 14:47:25% Prolog
http://nojiriko.asia/prolog/c137_196.html
0063デフォルトの名無しさん
2010/06/24(木) 17:43:23# ファイルkadai.txt に記述された数行の数値を表す文字列を読み込み、
# 整数に変更して数値として表示するプログラムを作成せよ。
# 関数としてstrtol()を使用すれば問題ないが、同じ機能の関数を作成すること。
# 基数の設定に関する引数は必要なくデフォルト(先頭が0 なら8 進、それ以外は10 進、16 進は使用しない)とする
#
0064デフォルトの名無しさん
2010/06/24(木) 19:06:29% Prolog
'ファイルkadai.txt に記述された数行の数値を表す文字列を読み込み、整数に変更して数値として表示する' :-
get_lines('kadai.txt',_行ならび),
append(_,[_行文字列|R],_行ならび),
整数に変更して(_行文字列,_整数),
write_formatted('%t\n',[_整数]),
R = [].
整数に変更して(_行文字列,_整数) :-
sub_atom(_行文字列,0,1,_,'0'),
atom_codes(_行文字列,Codes),
reverse(Codes,Codes2),
反転した基数コードならびから10進数を得る(8,Codes2,_整数),!.
整数に変更して(_行文字列,_整数) :-
atom_codes(_行文字列,Codes),
reverse(Codes,Codes2),
反転した基数コードならびから10進数を得る(10,Codes2,_整数),!.
反転した基数コードならびから10進数を得る(_,[],0) :- !.
反転した基数コードならびから10進数を得る(_基数,[C|R],M) :-
\+((C >=48,C =< 57)),
反転した基数コードならびから10進数を得る(_基数,R,M),!.
反転した基数コードならびから10進数を得る(_基数,[C|R],M) :-
M0 is C - 48,
反転した基数コードならびから10進数を得る(_基数,R,M2),
M is M2 * _基数 + M0.
0065デフォルトの名無しさん
2010/06/24(木) 21:18:45# n-1回の走査をしなければならない. すなわち, n(n-1)/2回の比較が行われなければならない. そこで, 各回の走査の終わりに,
# 交換が行われたか否かをチェックするようにし, 交換が行われていなければそれ以上走査の必要はないのでソートを完了するようなプログラムを作成しなさい.
# sizeofは使わない。
# ↓のような出力結果になるようにする。
# 初期状態: 10, 3, 1, 15, 2, 7
# [1回目の走査]
# 1回目の交換: 3, 10, 1, 15, 2, 72回目の交換: 3, 1, 10, 15, 2, 73回目の交換: 3, 1, 10, 2, 15, 74回目の交換: 3, 1, 10, 2, 7, 15
# [2回目の走査]
# 1回目の交換: 1, 3, 10, 2, 7, 15 2回目の交換: 1, 3, 2, 10, 7, 15 3回目の交換: 1, 3, 2, 7, 10, 15
# [3回目の走査]
# 1回目の交換: 1, 2, 3, 7, 10, 15
# [4回目の走査]
#
# 最終状態: 1, 2, 3, 7, 10, 15
0066デフォルトの名無しさん
2010/06/25(金) 02:41:43# [1] 授業単元: 数値解析
# [2] 問題文(含コード&リンク): http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10745.txt
# ニュートン・ラフソン法についての問題です。教科書に例題として載っていたプログラミングに今回問題となっている方程式の当てはめ方がわかりません(おそらく初歩的な事だと思われます)
#
0067デフォルトの名無しさん
2010/06/25(金) 02:43:01#
# [1] 授業単元:数値計算
# [2] 問題文(含コード&リンク):
#
# 以下に示す2階の定係数線形同次微分方程式につ
# いて,初期値y(0)=a, y’(0)=bをキーボードから入力し,
# t=4における値を出力するプログラムを作成する.
#
# y''(t)+2y'(t)+2y(t)=0
# 条件 y(0)=2 , y'(0)=-2
#
# 答え y(4)=-0.02394
#
0068デフォルトの名無しさん
2010/06/25(金) 02:52:19# 学校でSQLの授業とっててこんな問題が出たけど理解不能だったんで助けてくだしあ。
#
# XMLについて、その概要をコンピュータの意味処理という視点から書いて下さい。
# また、実際にどのような分野で使われていますか?
# 具体例を一つあげて説明してください。
#
0069デフォルトの名無しさん
2010/06/25(金) 05:37:46#
# --------------テキストA-------------------
# fcart1 -0.0000000000E+00 -0.0000000000E+00 1.0770536961E-04
# -0.0000000000E+00 -0.0000000000E+00 6.6543134784E-04
# -0.0000000000E+00 -0.0000000000E+00 -7.7313671745E-04
# getden1 0
# ------------------------------------------
#
# --------------テキストB--------------------
# xred 0.0 0.0 0.047843858990
# 0.0 0.0 0.000434433306
# 1/3 2/3 -0.011730466739
# #Definition of the planewave basis set
# ------------------------------------------
# テキストAの一番右の列の数値3つをそれぞれ上から順番に、テキストBの一番右の列の数値に足したいのですが
# どのようにしたらいいでしょうか
0070デフォルトの名無しさん
2010/06/25(金) 06:32:37% Prolog (その一)
テキストAの一番右の列の数値3つをそれぞれ上から順番に、テキストBの一番右の列の
数値に足す(_テキストA,_テキストB) :-
get_lines(_テキストA,LinesA),
get_lines(_テキストB,LinesB),
テキストAの一番右の列の数値3つをそれぞれ上から順番に、テキストBの一番
右の列の数値に足す(LinesA,LinesB,LinesC),
put_lines(_テキストB,LineC).
テキストAの一番右の列の数値3つをそれぞれ上から順番に、テキストBの一番右の列の
数値に足す(LinesA,LinesB,LinesC) :-
テキストの一番右の列の数値を切り取る(LinesA,LA),
テキストの一番右の列の数値を切り取る(LinesB,LB),
加算([LA,LB],LC),
テキストBの最終数値要素を置換(LB,LC,LineC).
テキスト一番右の列の数値を切り取る([],[]) :- !.
テキスト一番右の列の数値を切り取る([Line|R1],[V|R2]) :-
split(Line,[ ],L),
数値要素が3個以上(L),
last(L,V),
テキストAの一番右の列の数値を切り取る(R1,R2).
0071デフォルトの名無しさん
2010/06/25(金) 06:33:34% Prolog (その二)
テキストBの最終数値要素を置換([],_,[]) :- !.
テキストBの最終数値要素を置換([Line|R1],[V|R2],[LineC|R3]) :-
sPLIT(Line,[ ],L1),
数値要素が3個以上(L1),
length(L1,Len),
findmax(Nth,(
for(1,Nth,Len),
list_nth(Nth,L1,V1),number(V1)),
LastNth),
要素番号によるならびの置換(LastNth,V,L1,L3),
concat_atom(L3,LineC),
テキストBの最終数値要素を置換(R1,R2,R3),!.
テキストBの最終数値要素を置換([Line|R1],L2,[Line|R3]) :-
テキストBの最終数値要素を置換(R1,L2,R3),!.
数値要素が3個以上(L1) :-
count((member(A,L1),number(A)),Count),
Count >= 3,!.
0072デフォルトの名無しさん
2010/06/25(金) 06:38:10% Prolog 改行位置の調整をし忘れた。これを忘れるとatomの途中で改行してしまう。
http://nojiriko.asia/prolog/perl_ni_tsuite43_627.html を参照してください。
0073デフォルトの名無しさん
2010/06/25(金) 07:44:06使用言語:J
マイナス符号を変換しなくてはいけないのがめんどう。
(9!:11)16 NB.表示桁数を16桁にする
load 'strings'
read=: 1!:1
f=: monad define
".>}:{:@cutopen;._2 toJ (read y) rplc '-';'_'
)
(f <'texta.txt') + f <'textb.txt'
0.04795156435961 0.00109986465384 _0.01250360345645
0074デフォルトの名無しさん
2010/06/25(金) 08:02:01# 日本語文章中の複数の単語を置換したいです。
# ファイルは一つのディレクトリに複数あります。
# >http://ime.nu/www.machu.jp/diary/20070224.html#p01
# ファイル検索はcygwin かlinux上なので上記を参考にしています。
# trではうまくいきませんでした。
#
# お題
#
# 拡張子が .rb の全てのファイルに対して、
#
# #!/usr/bin/env ruby
#
# を
#
# #!/usr/local/bin/ruby
#
# に置換する。ついでに、「ruby」という文字を「perl」に置き換える
007569
2010/06/25(金) 08:34:450076デフォルトの名無しさん
2010/06/25(金) 08:41:00% Prolog
'拡張子が .rb の全てのファイルに対して、#!/usr/bin/env ruby を #!/usr/local/bin/ruby に置換する。ついでに、「ruby」という文字を「perl」に置き換える' :-
shs('ls -N *.cs',Files),
append(_,[File|R],Files),
get_lines(File,Lines),
指定された内容に文字列を置換する(Lines,Lines2),
put_lines(File,Lines2),
R = [].
指定された内容に文字列を置換する([],[]) :- !.
指定された内容に文字列を置換する([Line|R1],[Line2|R2]) :-
sub_atom(Line,_,_,_,A1,'#!/usr/bin/env ruby',A3,L1,L2,L3),
concat_atom([A1,'#!/usr/local/bin/ruby',A3],Line1),
rubyをperlに置換する(Line1,Line2),
指定された内容に文字列を置換する(R1,R2),!.
指定された内容に文字列を置換する([Line|R1],[Line2|R2]) :-
rubyをperlに置換する(Line,Line2),
指定された内容に文字列を置換する(R1,R2).
rubyをperlに置換する(Line,Line2) :-
replace_all(Line,ruby,perl,Line2).
% replace_all/3は http://nojiriko.asia/prolog/replace_atom.html 参照
0077デフォルトの名無しさん
2010/06/25(金) 09:28:41#
# 問題
# 適当な数字a,b,cを用いてax^3+bx^2-cx=0なる3次方程式をニュートン・ラフソン法を用いて解く為のプログラムを作成せよ。
#
# 以下は教科書に載っていたx^3-1=0を解く為の参考とするプログラムです。これを今回の問題に当てはめて解くようです。
#
# /* 《 ニュートン・ラフソン法の関数 》 */
# void S_NEWT(int *n,double *x0,double e,int NMAX,double (*FUNC)())
# /* n : スカラー 反復回数 (Out)
# x0 : スカラー 初期値(解) (In/Out)
# e : スカラー 収束判定定数 (In)
# NMAX : スカラー 最大反復回数 (In)
# FUNC : ユーザー定義関数 (In) */
0078デフォルトの名無しさん
2010/06/25(金) 12:16:13% Prolog
'適当な数字a,b,cを用いてax^3+bx^2-cx=0なる3次方程式をニュートン・ラフソン法を用いて解く'(_最大反復回数,_収束判定定数,A,B,C,X0,X) :-
Y0 is A * X0 ^ 3 + B * X0 ^ 2 + C * X0,
'3次曲線上の(X0,Y0)が接点となる直線がX座標と交差する(X1,0)は'(1,_最大反復回数,_収束判定定数,A,B,C,X0,Y0,X).
'3次曲線上の(X0,Y0)が接点となる直線がX座標と交差する(X1,0)は'(N,_最大反復回数,_,_,_,X,_,X) :- N > _最大反復回数,!.
'3次曲線上の(X0,Y0)が接点となる直線がX座標と交差する(X1,0)は'(_,_,_収束判定定数,_,_,_,X,_,X) :-
Y =< _収束判定定数,!.
'3次曲線上の(X0,Y0)が接点となる直線がX座標と交差する(X1,0)は'(N,_最大反復回数,_収束判定定数,A,B,C,X0,Y0,X) :-
次のXはX軸との交点のX座標(A,B,C,X0,Y0,_X軸との交点のX座標,Y1),
N2 is N + 1,
'3次曲線上の(X0,Y0)が接点となる直線がX座標と交差する(X1,0)は'(N2,_最大反復回数,_収束判定定数,A,B,C,_X軸との交点のX座標,Y1,X).
次のXはX軸との交点のX座標(A,B,C,X0,Y0,_X軸との交点のX座標,Y1) :-
_傾き is 3 * A * (X0 ^ 2) + 2 * B * X0 + C,
_Y軸との交点のY座標 is Y0 - _傾き * X0,
_X軸との交点のX座標 is (-1) * (_Y軸との交点のY座標) / _傾き,
Y1 is A * _X軸との交点のX座標 ^ 3 + B * _X軸との交点のX座標 ^ 2 + C * _X軸との交点のX座標,!.
0079デフォルトの名無しさん
2010/06/25(金) 12:20:29# [1] 授業単元: 画像処理
#
# [2] 問題文(含コード&リンク):
# 入力した2値白黒画像をハフ変換して直線および円を検出し、結果を表示するプログラムを作成せよ。
# 直線の式はρ= xcosθ + ysinθを、円の式はr2= (x-a)2 + (y-b)2をそれぞれ使用する。
#
# なお、直線について処理後のρθ平面を濃淡画像として出力せよ。
# 円については処理後のabrパラメータ空間をGnuplotを用いて、
# 1点のエッジに対する軌跡(円錐)と2点以上のエッジに対する軌跡(円錐)を出力せよ。
#
# また、円と直線両方について、3種類以上に閾値を変化させた実験結果を逆変換し、
# その結果を原画像に投影した画像も出力せよ。
0080デフォルトの名無しさん
2010/06/25(金) 14:49:52# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):
# 午前四時から正午までは Good Morning! と、
# 正午から午後八時までは Good Afternoon! と、
# 午後八時から午前四時までは Good Evening! と、表示するプログラムを書け。ただし、境界の時刻は前の時間帯に含まれるものとする
#
#
0081デフォルトの名無しさん
2010/06/25(金) 15:12:36% Prolog
挨拶 :-
'午前四時から正午までは Good Morning! と、正午から午後八時までは Good Afternoon! と、午後八時から午前四時までは Good Evening! と、表示する'.
'午前四時から正午までは Good Morning! と、正午から午後八時までは Good Afternoon! と、午後八時から午前四時までは Good Evening! と、表示する' :-
_時刻 is time,
localtime(_時刻,_年,_月,_日,_曜日番号,_通算日数,_時,_分,_秒),
挨拶を表示する(_時,_分,_秒),!.
挨拶を表示する(_時,_分,_秒) :-
[_時,_分,_秒] @> [4,0,0],
[_時,_分,_秒] @=< [12,0,0],
write(' Good Mornig! \n').
挨拶を表示する(_時,_分,_秒) :-
[_時,_分,_秒] @> [12,0,0],
[_時,_分,_秒] @=< [20,0,0],
write(' Good Afternoon! \n').
挨拶を表示する(_時,_分,_秒) :-
[_時,_分,_秒] @> [20,0,0],
write(' Good Evening! \n').
挨拶を表示する(_時,_分,_秒) :-
[_時,_分,_秒] @=< [4,0,0],
write(' Good Evening! \n').
0082デフォルトの名無しさん
2010/06/25(金) 15:45:05使用言語:J
f=: monad define
'Good ',>(3|<.8%~4+3{6!:0''){'Evening!';'Morning!';'Afternoon!'
)
f ''
Good Afternoon!
0083デフォルトの名無しさん
2010/06/25(金) 16:47:19# 以下の問題を頼む。(ルンゲクッタ、クラス、配列、ファイルの書き込み、反復処理を使って)
#
# GAを使って理想的なドアになるようにkp,kd,mを求める
# m:ドアの重さ
# v:ドアの閉まる速さ
# kp:ばね定数
# kd:ダンパー
# x:距離
# x':xをtで微分
# x'':xをtで二階微分
#
# eq of motion
# -kp*x-kd*x'=m*x''
#
0084デフォルトの名無しさん
2010/06/25(金) 17:25:48# [1] 授業単元: プログラム
# [2] 問題文(含コード&リンク): 番号 国語 数学 英語のメンバを持っている構造体を作って各教科の平均値と、全平均値を求めてください。(人数は4人とか5人で行ってください。あと番号っていうのは、番号は、4人なら1〜4までで5人なら1〜5までです)
0085デフォルトの名無しさん
2010/06/25(金) 19:10:36使用言語:Io
f := method(
writeln("Good ",list("Evening!","Morning!","Afternoon!")at(((Date hour + 4) / 8) floor % 3))
)
Io> f()
Good Afternoon!
==> nil
0086デフォルトの名無しさん
2010/06/25(金) 20:07:02% Prolog
構造定義(成績,成績(_番号,_国語,_数学,_英語)).
構造検査(成績,成績(_番号,_国語,_数学,_英語)) :-
integer(_番号),integer(_国語),integer(_数学),integer(_英語).
'番号 国語 数学 英語のメンバを持っている構造体を作る :-
'番号 国語 数学 英語のメンバを持っている構造体を作る'(1,L).
'番号 国語 数学 英語のメンバを持っている構造体を作る(_,[]) :-!.
'番号 国語 数学 英語のメンバを持っている構造体を作る(N,[[A,B,C]|R]) :-
assertz(成績(N,A,B,C)),
N2 is N + 1,
'番号 国語 数学 英語のメンバを持っている構造体を作る(N2,R).
各教科の平均値と、全平均値を求める(_各教科の平均,_全平均値) :-
findavg([_国語,_数学,_英語],(
成績(_,_国語,_数学,_英語),
_各教科の平均値ならび),
findavg(_個人合計,(
成績(_,_国語,_数学,_英語),
_個人合計 is _国語 + _数学 + _英語),
_全平均値).
0087デフォルトの名無しさん
2010/06/25(金) 20:09:37% Prolog 述語名の終わりの'が落ちているところがあった。
構造定義(成績,成績(_番号,_国語,_数学,_英語)).
構造検査(成績,成績(_番号,_国語,_数学,_英語)) :-
integer(_番号),integer(_国語),integer(_数学),integer(_英語).
'番号 国語 数学 英語のメンバを持っている構造体を作る' :-
'番号 国語 数学 英語のメンバを持っている構造体を作る'(1,L).
'番号 国語 数学 英語のメンバを持っている構造体を作る'(_,[]) :-!.
'番号 国語 数学 英語のメンバを持っている構造体を作る'(N,[[A,B,C]|R]) :-
assertz(成績(N,A,B,C)),
N2 is N + 1,
'番号 国語 数学 英語のメンバを持っている構造体を作る'(N2,R).
各教科の平均値と、全平均値を求める(_各教科の平均,_全平均値) :-
findavg([_国語,_数学,_英語],(
成績(_,_国語,_数学,_英語),
_各教科の平均値ならび),
findavg(_個人合計,(
成績(_,_国語,_数学,_英語),
_個人合計 is _国語 + _数学 + _英語),
_全平均値).
0088デフォルトの名無しさん
2010/06/25(金) 21:43:05>>82 >>85 はボツにしてください。
0089デフォルトの名無しさん
2010/06/26(土) 05:51:28# [1] 授業単元: 解析
#
# [2] 問題文(含コード&リンク):
# x=1.0, 1.1,...,3.9, 4.0が与えられた時のlogxの値をラグランジュ補間で求め、
# その近似値とlogxの真値をそれぞれ出力せよ。
# また、求めた値と真値との誤差(絶対値)も求め、一次多項式の誤差と2次多項式の誤差を
# それぞれ出力せよ。
0090デフォルトの名無しさん
2010/06/26(土) 05:53:29# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):
# 構造体Triangleを下のように定義する。
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10750.txt
# この構造体により一つの三角形を表現する。
# Triangle構造体の構成要素は、三つの頂点のx座標、y座標をメンバとして持つ構造体Pointである。
# このTriangle構造体を用いて、以下の使用に従う関数を作成し、任意の三角形の面積、その三角形を適切な2×2行列で線形変換した結果の三角形の座標とその面積、および任意の二つの三角形が合同であるかどうかを表示するプログラムを実装しなさい。
# ・一つのTriangle構造体の変数を引数とし、その構造体が表す三角形の面積を返す関数。
# ・一つのTriangle構造体の変数と、double型の二次元配列(2×2行列Aとする)を引数とし、引数で与えた三角形を行列Aによって線形変換した後の三角形を返す関数。
# ・二つのTriangle構造体の変数を引数とし、その構造体が合同であれば1を、合同でなければ0を返す関数。
#
0091デフォルトの名無しさん
2010/06/26(土) 06:13:34# 【質問テンプレ】
# [1] 授業単元:画像処理
# [2] 問題文:http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10749.txt
#
# <問題>
# 画像ファイル1つに対して、ラプラシアンマスクを適用した画像を作成せよ。
# ラプラシアンマスクは下図に示す8近傍方を使用すること。
# | -1|-1 |-1|
# | -1| 8 |-1|
# | -1|-1 |-1|
#
# ラプラシアンマスクを画像に適用したあとの画素値が(0〜255 の範囲外になった場合、0よりも小さいならば0に、255以上ならば255にすること。)
# 今回は画像の縁については処理を行わなくてよい。
#
# 画像の作成にはbmp.hに定義されたSaveBMPを用いて行う。
# ヘッダファイルの定義は http://nojiriko.asia/data/10669.txt にコピー保存させていただきました。
0092デフォルトの名無しさん
2010/06/26(土) 06:18:09# ・DBMS名とバージョン
# VB2008でOLEDBを使ってOracle10gに繋いでます。
#
# ・テーブルデータ
# どの部品にはどの部品が使われてて〜といううような、
# 部品の構成を表す、下記のような親子関係と必要数のテーブルがあります
# -------------
# OYA KO KAZU
# -------------
# A B 1
# A G 1
# B C 1
# B F 1
# C D 1
# C E 1
# G C 2
# G H 1
#
0093デフォルトの名無しさん
2010/06/26(土) 06:20:45#
# ツリーで表記すると、
# A
# ├B
# │├C
# ││├D
# ││└E
# │└F
# └G
# ├C
# │├D
# │└E
# └H
#
# Aという部品は、BとGの部品で出来ている。
# Bという部品はCとFの部品で出来ている〜という感じです。
#
0094デフォルトの名無しさん
2010/06/26(土) 06:43:550095デフォルトの名無しさん
2010/06/26(土) 06:45:39# ・欲しい結果
# これを階層のレベルと、それぞれの子の合計数を出したい。
# ここでいうBの下のCは1なので、DもEも1だが、
# Gの下のCは2なので、DもEもx2されて2になる
# ----------------
# LV KO GOUKEI
# ----------------
# 1 B 1
# 2 C 1
# 3 D 1
# 3 E 1
# 2 F 1
# 1 G 1
# 2 C 2
# 3 D 2
# 3 E 2
# 2 H 1
#
0096デフォルトの名無しさん
2010/06/26(土) 06:49:00# JDK1.4とオラクル9iです
#
# TESTのテーブルから下の結果を得たいのですが可能でしょうか?
#
# 1カラム目はIDで
# 2カラム目は開始日で
# 3カラム目は終了日です
#
#
# テーブルTEST
# a,20110403,20110611
# b,20110505,20110721
#
# 結果
# a,201104
# a,201105
# a,201106
# b,201105
# b,201106
# b,201107
#
0097デフォルトの名無しさん
2010/06/26(土) 06:53:43使用言語:J
分、秒も参照するようにしました。
f=: monad define
'Good ',>(3|<.8%~3+({.>.@+[:*[:+/}.)3 4 5{6!:0''){'Evening!';'Morning!';'Afternoon!'
)
f ''
Good Morning!
0098デフォルトの名無しさん
2010/06/26(土) 13:24:31% Prolog
標本値を採取(LX,LY) :-
findall(X,(for(10,N,40),X is N / 10),LX),
findall(Y,(member(V,LX),Y is log(V)),LY).
ラグランジェ補間(X,Y) :-
標本値を採取(LX,LY),
ラグランジェ補間(LX,LY,X,0.0,Y).
ラグランジェ補間(_,_,[],[],_,Y,Y) :- !.
ラグランジェ補間([B|R1],[C|R2],X,A,Y) :-
ラグランジェ補間(LX,[B|R1],X,1.0,U),
A2 is A + U * C,
ラグランジェ補間(R1,R2,X,A2,Y).
ラグランジェ補間([],_,_,U,U) :- !.
ラグランジェ補間([C|R1],[B|R2],X,D,U) :-
\+(R1=R2),!,
D2 is D * (X-C) / (B-C),
ラグランジェ補間(R1,[B|R2],X,D2,U).
ラグランジェ補間([C|R1],[B|R2],X,D,U) :-
ラグランジェ補間(R1,[B|R2],X,D,U).
0099デフォルトの名無しさん
2010/06/26(土) 17:41:40# 【課題 】ネストを用いて九九を出力するためのプログラムを2種類作成
# 【 補足】出力画面は1行で1*1=1〜1*9、2行目は1*2=2〜9*2となるように表示するプログラムと(下は例)
# 1*1=1 2*1=1 3*1=3 4*1=4 5*1=5 6*1=6 7*1=7 8*1=8 9*1=9
# 1*2=2 2*2=2 3*2=6 4*2=8 5*2=10 6*2=12 7*2=14 8*2=16 9*2=18
# ・
# 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 8*9=72
# 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9*=81
# もうひとつは下記みたいに数字が横3つごとにに出力されるプログラムです
# 1*1=1 2*1=2 3*1=3
# 1*2=2 2*2=4 3*2=6
# ・ ・ ・
# 1*8=8 2*8=16 3*8=24
# 1*9=9 2*9=18 3*9=27
#
# 4*1=4 5*1=5 6*1=6
# 4*2=8 5*2=10 6*2=12
# ・ ・ ・
# 4*8=32 5*8=40 6*8=48
# 4*9=36 5*9=45 6*9=54
#
# 7*1=7 8*1=8 9*1=9
# ・ ・ ・
# 7*9=63 8*9=72 9*9=81
# 行数の関係で・・と省略したところもありますが実際は・を省略せずに作成してください
0100デフォルトの名無しさん
2010/06/26(土) 17:46:42# [1]授業単元:システムプログラミング
# [2]課題:http://nojiriko.asia/data/10751.txt にコピーさせていただきました。
#
0101デフォルトの名無しさん
2010/06/26(土) 20:02:13使用言語:J
f=:dyad define
7{.(":x),'*',(":y),'=',":x*y
)
NB. p1
;"1|:<@f"0/~>:i.9
1*1=1 2*1=2 3*1=3 4*1=4 5*1=5 6*1=6 7*1=7 8*1=8 9*1=9
1*2=2 2*2=4 3*2=6 4*2=8 5*2=10 6*2=12 7*2=14 8*2=16 9*2=18
:
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
NB. p2
;"1(|:"2)3 3 9$,<@f"0/~>:i.9
1*1=1 2*1=2 3*1=3
1*2=2 2*2=4 3*2=6
:
1*9=9 2*9=18 3*9=27
4*1=4 5*1=5 6*1=6
4*2=8 5*2=10 6*2=12
:
4*9=36 5*9=45 6*9=54
7*1=7 8*1=8 9*1=9
7*2=14 8*2=16 9*2=18
:
7*9=63 8*9=72 9*9=81
0102デフォルトの名無しさん
2010/06/26(土) 20:18:09使用言語:J
NB. p1
+/%:>:i.10
22.4683
NB. p2
16babc.de
2748.87
0103デフォルトの名無しさん
2010/06/27(日) 03:13:49% Prolog (最初のパターン)
九九 :- 九九([_],[_]).
九九([_,_,_,_,_,_,_,_,_,_],_) :- !.
九九(L1,[_,_,_,_,_,_,_,_,_,_]) :-
write('\n'),
九九([_|L1],[_]),!.
九九(L1,L2) :-
掛け算(L1,L2,LX),
'式をN1*N2=N3で表現する'(L1,L2,LX,N1,N2,N3),
九九(L1,[_|L2]).
掛け算(L1,L2,X) :- list(L1),list(L2),掛け算(L1,L2,[],X).
掛け算([],_,LX,LX) :- !.
掛け算([_|R1],L2,LY,LX) :-
append(L2,LY,LY2),
掛け算(R1,L2,LY2,LX).
'式をN1*N2=N3で表現する'(L1,L2,L3,N1,N2,N3) :-
length(L1,N1),
length(L2,N2),
length(L3,N3),
write_formatted('%d*%d=%2d ',[N1,N2,N3]).
0104デフォルトの名無しさん
2010/06/27(日) 08:08:10% Prolog (第二パターン) 変数_にしておくより、具体的なアトムの方が実効速度が100倍も速くなるようなので_をaに変更。
九九_3 :- 九九([a],[a],[a,a,a,a],[a]).
九九([a,a,a,a,a,a,a,a,a,a],_,_,_) :- !.
九九(LK,L11,LK,L2) :-
write('\n'),
九九(L11,L11,LK,[a|L2]).
九九(L1,L11,LK,[a,a,a,a,a,a,a,a,a,a]) :-
九九([a,a,a|L11],[a,a,a|L11],[a,a,a|LK],[a]),!.
九九(L1,L11,LK,L2) :-
掛け算(L1,L2,LX),
'式をN1*N2=N3で表現する'(L1,L2,LX,N1,N2,N3),
九九([a|L1],L11,LK,L2).
0105デフォルトの名無しさん
2010/06/27(日) 08:19:43% Prolog length/2 を使うのが不本意なら、
'式をN1*N2=N3で表現する'(L1,L2,L3,N1,N2,N3) :-
割り算(L1,[a,a,a,a,a,a,a,a,a,a],LM1),
ならびによる数表現を数値文字列に変換(LM1,S1),
割り算(L2,[a,a,a,a,a,a,a,a,a,a],LM2),
ならびによる数表現を数値文字列に変換(LM2,S2),
割り算(L3,[a,a,a,a,a,a,a,a,a,a],LM3),
ならびによる数表現を数値文字列に変換(LM3,S3),
write_formatted('%t*%t=%2s ',[S1,S2,S3]),!.
割り算(L1,L2,L) :- list(L1),list(L2),割り算(L1,L2,[],[],L).
割り算([],_,_,U,U) :- !.
割り算(L1,L2,LD1,U,X) :-
append(L2,R1,L1),
割り算(R1,L2,[a|LD1],U,X).
割り算(LM,L2,LD,U,X) :-
割り算(LD,L2,[],[LM|U],X).
0106デフォルトの名無しさん
2010/06/27(日) 08:20:49% Prolog (つづき)
ならびと数字の対応([],'0').
ならびと数字の対応([a],'1').
ならびと数字の対応([a,a],'2').
ならびと数字の対応([a,a,a],'3').
ならびと数字の対応([a,a,a,a],'4').
ならびと数字の対応([a,a,a,a,a],'5').
ならびと数字の対応([a,a,a,a,a,a],'6').
ならびと数字の対応([a,a,a,a,a,a,a],'7').
ならびと数字の対応([a,a,a,a,a,a,a,a],'8').
ならびと数字の対応([a,a,a,a,a,a,a,a,a],'9').
ならびによる数表現を数値文字列に変換([],'') :- !.
ならびによる数表現を数値文字列に変換([L|R],_数値文字列) :-
ならびと数字の対応(L,S),
ならびによる数表現を数値文字列に変換(R,_数値文字列2),
concat_atom([S,_数値文字列2],_数値文字列).
0107デフォルトの名無しさん
2010/06/27(日) 08:41:03もし、Prologに整数がなかったら、九九表はこのように書く、というのが>>106
組込述語length/2の第二引数は整数となるから、「整数がない」と言うわけにはいかない。
それでlength/2を排除しようとしている。
0108デフォルトの名無しさん
2010/06/27(日) 08:55:58# [1] 授業単元:計算機とアルゴリズム
# [2] 問題文(含コード&リンク):数列と漸化式を表示できるように9行目からお願いし
ます。http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10754.txt
# 練習問題1
# 01: #include<stdio.h>
# 02:
# 03: main()
# 04:{
# 05: int n, m, an, sum;
# 06:
# 07: m = 5;
# 08: printf("数列 an = n*n とその和を %d 項目まで表示します\n",m);
#
# 練習問題2
# 01: #include<stdio.h>
# 02:
# 03: main()
# 04:{
# 05: int n, m, an;
# 06:
# 07: m = 5;
# 08: printf("漸化式 a(n) = 2*a(n-1), a1 = 2 で生成される数列を %d 項目まで表示します\n");
0109デフォルトの名無しさん
2010/06/27(日) 09:31:35% Prolog
連続した日付の生成(_ID,_年月) :-
'TEST'(_ID,_開始日,_終了日),
sub_atom(_開始日,0,6,_,_開始年月),
sub_atom(_終了日,0,6,_,_終了年月),
年月の生成(_開始年月,_年月,_終了年月).
年月の生成(_開始年月,_,_終了年月) :- _開始年月 @> _終了年月,!.
年月の生成(_開始年月,_開始年月,_終了年月).
年月の生成(_開始年月,_年月,_終了年月) :-
次の年月(_開始年月,_次の年月),
年月の生成(_次の年月,_年月,_終了年月).
次の年月(_年月,_次の年月) :-
sub_atom(_年月,4,2,_,'12'),
sub_atom(_年月,0,4,_,_年),
atom_to_term(_年,_年整数,_),
_年整数2 is _年整数 + 1,
number_chars(_年整数2,Chars),
atom_chars(_次の年,Chars),
concat_atom([_次の年,'01],_次の年月),!.
次の年月(_年月,_次の年月) :-
atom_to_term(_年月,_年月整数,_),
_年月整数2 is _年月整数 + 1,
number_chars(_年月整数2 is Chars),
atom_chars(_次の年月,Chars).
0110デフォルトの名無しさん
2010/06/27(日) 09:38:00% Prolog 日付ではなかった。述語名を連続した年月の生成に訂正。
連続した年月の生成(_ID,_年月) :-
'TEST'(_ID,_開始日,_終了日),
sub_atom(_開始日,0,6,_,_開始年月),
sub_atom(_終了日,0,6,_,_終了年月),
年月の生成(_開始年月,_年月,_終了年月).
年月の生成(_開始年月,_年月,_終了年月) :-
次の年月(_開始年月,_次の年月),
年月の生成(_次の年月,_年月,_終了年月).
次の年月(_年月,_次の年月) :-
sub_atom(_年月,4,2,_,'12'),
sub_atom(_年月,0,4,_,_年),
atom_to_term(_年,_年整数,_),
_年整数2 is _年整数 + 1,
number_chars(_年整数2,Chars),
atom_chars(_次の年,Chars),
concat_atom([_次の年,'01],_次の年月),!.
次の年月(_年月,_次の年月) :-
atom_to_term(_年月,_年月整数,_),
_年月整数2 is _年月整数 + 1,
number_chars(_年月整数2 is Chars),
atom_chars(_次の年月,Chars).
0111デフォルトの名無しさん
2010/06/27(日) 10:32:23% Prolog
'数列 an = n*n とその和をM項目まで表示する'(M) :-
'数列 an = n*n とその和をM項目まで'(M,_数列,_和),
write_formatted('%t 和=%t\n',[_数列,_和]).
'数列 an = n*n とその和をM項目まで'(M,_数列,_和) :-
findall(U,(for(1,N,M),U is N * N),_数列),
加算(_数列,_和_1),
_和 is truncate(_和_1).
'漸化式 a(n) = 2*a(n-1), a1 = 2 で生成される数列をM項目まで表示します'(M) :-
'漸化式 a(n) = 2*a(n-1), a1 = 2 で生成される数列をM項目まで'(M,_数列),
write_formatted('%t\n',[_数列]).
'漸化式 a(n) = 2*a(n-1), a1 = 2 で生成される数列をM項目まで'(M,_数列) :-
findall(U,(for(1,N,M),a(N,U)),_数列).
a(1,2).
a(N,X) :- N1 is N - 1,a(N1,Y),X is 2 * Y.
0112デフォルトの名無しさん
2010/06/27(日) 13:37:37% Prolog
部品('A','G',1).
部品('B','C',1).
部品('B','F',1).
部品('C','D',1).
部品('C','E',1).
部品('G','C',2).
部品('G','H',1).
階層のレベルと、それぞれの子の合計数を出力する :-
階層のレベルと、それぞれの子の合計数を出力する(0,'A',_,A,B,C).
階層のレベルと、それぞれの子の合計数を出力する.
階層のレベルと、それぞれの子の合計数を出力する(_階層,_部品,_個数,_階層,_部品,_個数) :-
\+(_階層=0),
write_formatted('%t,%t,%t\n',[_階層,_部品,_個数]),
fail.
階層のレベルと、それぞれの子の合計数を出力する(_階層1,_親1,_,_階層,_親,_個数) :-
部品(_親1,_子,_個数2),
_階層2 is _階層1 + 1,
階層のレベルと、それぞれの子の合計数を出力する(_階層2,_子,_個数2,_階層,_親,_個数).
0113デフォルトの名無しさん
2010/06/27(日) 17:45:12# 【質問テンプレ】
# [1] 授業単元: プログラミング演習
# [2] 問題文(含コード&リンク): 入力した2つの整数の間 (入力した数も範囲に含める) にある
# 「2の倍数でない」かつ「3の倍数でない」かつ「5の倍数でない」
# の条件を満たす整数を順に表示し,最後にその個数を表示するプログラムを作成せよ
#
0114デフォルトの名無しさん
2010/06/27(日) 19:44:13% Prolog
'入力した2つの整数の間 (入力した数も範囲に含める) にある「2の倍数でない」かつ「3の倍数でない」かつ「5の倍数でない」の条件を満たす整数を順に表示し,最後にその個数を表示する' :-
入力した2つの整数(N1,N2),
count((for(N1,N,N2),\+(0 is N mod 2),\+(0 is N mod 3),\+(0 is N mod 5),write_formatted('%t ',[N])),Count),
write_formatted('\n個数 = %t\n',[Count]).
入力した2つの整数(N1,N2) :-
催促付き整数入力('開始整数を入力してください : ',N1),
催促付き整数入力('終了整数を入力してください : ',N2).
0115デフォルトの名無しさん
2010/06/27(日) 20:39:28使用言語:J
((,'*'&,)&":/,' = '"_,":@(*/))>:i.10
1*2*3*4*5*6*7*8*9*10 = 3628800
0116デフォルトの名無しさん
2010/06/27(日) 21:16:43使用言語:J
f=:dyad define
a=.x+i.>:y-x
b=.(0~:*/*2 3 5|/a)#a
smoutput b
smoutput #b
)
1 f 100
1 7 11 13 17 19 23 29 31 37 41 43 47 49 53 59 61 67 71 73 77 79 83 89 91 97
26
0117デフォルトの名無しさん
2010/06/28(月) 03:56:30# 【 課題 】下記参照です。
# 【 形態 】1. Javaアプリケーション(main()で開始)/
# 【 期限 】6/29
# 【 Ver 】"1.6.0_20"
# 【 補足 】丸投げです。よろしくお願いします。
#
# キーホ゛ート゛から整数(0-100)をいくつか入力し、終わった時点で、それらの最大値・最小値・平均を表示させよう。
# 「!」の入力で処理を終了する。
# 数値の入力のたびにすべきこと:
# 最大値と最小値の更新
# 入力の総和に加算
# 入力の個数を1増加
#
0118デフォルトの名無しさん
2010/06/28(月) 03:58:47# [1] 授業単元:情報処理学
# [2] 問題文(含コード&リンク):
# do-while文を用いて、キーボードから入力された値が素数であるかどうかを
# 判別するプログラムを作成せよ。入力された値が素数の場合は"素数"と出力し、
# 素数でない場合は最小の因数を出力せよ。
0119デフォルトの名無しさん
2010/06/28(月) 04:02:00# 1] 授業単元:情報処理学
# [2] 問題文(含コード&リンク):
# 1次元配列に34 57 45 21 89 63 39 48 78 68 76 84 92 53 62 のデータをセットして、
# これらの平均値を求めよ。さらにint eval[3]という1次元配列を用意して
# eval[0]には0〜60の数の個数
# eval[1]には61〜80の数の個数
# eval[2]には81〜100の数の個数
# を格納するようにし、それらを出力するプログラムを作成せよ。(配列、for文、if文を使って)
0120デフォルトの名無しさん
2010/06/28(月) 04:03:21# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):
# 次のように表示するプログラムを作りなさい。
#
# 私の学籍番号は0000000Aです。
# 氏名は aaaaa aaaaaaaaです。
# ↑半角スペース
#
0121デフォルトの名無しさん
2010/06/28(月) 05:07:38% Prolog (その一)
'キーホ゛ート゛から整数(0-100)をいくつか入力し、終わった時点で、それらの最大値・最小値・平均を表示させよう。「!」の入力で処理を終了する。'((-1),_度数,_合計値,_最大値,_最小値) :-
'終わった時点で、それらの最大値・最小値・平均を表示させよう。'(_度数1,_合計値,_最大値,_最小値).
'キーホ゛ート゛から整数(0-100)をいくつか入力し、終わった時点で、それらの最大値・最小値・平均を表示させよう。「!」の入力で処理を終了する。'(N1,_度数1,_合計値1,_最大値1,_最小値1) :-
N1 < _最小値1,
_度数2 is _度数 + 1,
_合計値2 is _合計値1 + N1,
'キーホ゛ート゛から整数(0-100)を入力し'(N2),
'キーホ゛ート゛から整数(0-100)をいくつか入力し、終わった時点で、それらの最大値・最小値・平均を表示させよう。「!」の入力で処理を終了する。'(N2,_度数2,_合計値2,_最大値1,N1),!.
'キーホ゛ート゛から整数(0-100)をいくつか入力し、終わった時点で、それらの最大値・最小値・平均を表示させよう。「!」の入力で処理を終了する。'(N1,_度数1,_合計値1,_最大値1,_最小値1) :-
N1 > _最大値1,
_度数2 is _度数 + 1,
_合計値2 is _合計値1 + N1,
'キーホ゛ート゛から整数(0-100)を入力し'(N2),
'キーホ゛ート゛から整数(0-100)をいくつか入力し、終わった時点で、それらの最大値・最小値・平均を表示させよう。「!」の入力で処理を終了する。'(N2,_度数2,_合計値2,N1,_最小値1),!.
'キーホ゛ート゛から整数(0-100)をいくつか入力し、終わった時点で、それらの最大値・最小値・平均を表示させよう。「!」の入力で処理を終了する。'(N1,_度数1,_合計値1,_最大値1,_最小値1) :-
_度数2 is _度数 + 1,
_合計値2 is _合計値1 + N1,
'キーホ゛ート゛から整数(0-100)を入力し'(N2),
'キーホ゛ート゛から整数(0-100)をいくつか入力し、終わった時点で、それ らの最大値・最小値・平均を表示させよう。「!」の入力で処理を終了する。'(N2,_度数2,_合計値2,_最大値1,_最小値1),!.
0122デフォルトの名無しさん
2010/06/28(月) 05:09:06% Prolog (その二)
'終わった時点で、それらの最大値・最小値・平均を表示させよう。'(_度数1,_合計値1,_最大値1,_最小値1) :-
_平均値 is _合計値 / _度数,
write_formatted('最大値=%t,最小値=%t,平均値=%t\n',[_最大値,_最小値,_平均値]),!.
'キーホ゛ート゛から整数(0-100)を入力し'(N) :-
write('整数(0-100)を入力してください : ',
get_line(Line),
'「!」の入力で処理を終了する。'(Line,N).
'「!」の入力で処理を終了する。'((!),(-1)) :- !.
'「!」の入力で処理を終了する。'(Line,N) :- atom_to_term(Line,N,_).
0123デフォルトの名無しさん
2010/06/28(月) 07:32:58% Prolog にとって不自然な部分排除した。構造体などの課題もこのように改変して答える方が本当は良いのだろう。
'1次元配列に34 57 45 21 89 63 39 48 78 68 76 84 92 53 62 のデータをセットして、これらの平均値を求めよ'(L,_平均値) :-
'1次元配列に34 57 45 21 89 63 39 48 78 68 76 84 92 53 62 のデータをセットして'(L),
avg(L,_平均値).
'1次元配列に34 57 45 21 89 63 39 48 78 68 76 84 92 53 62 のデータをセットして'(L) :-
split('34 57 45 21 89 63 39 48 78 68 76 84 92 53 62',[','],L).
'1次元配列に34 57 45 21 89 63 39 48 78 68 76 84 92 53 62 のデータをセットして、0〜60の数の個数 61〜80の数の個数 81〜100の数の個数 を集計して出力する' :-
'1次元配列に34 57 45 21 89 63 39 48 78 68 76 84 92 53 62 のデータをセットして'(L),
'0〜60の数の個数 61〜80の数の個数 81〜100の数の個数 を集計して出力する'(L,0,0,0),!.
0124デフォルトの名無しさん
2010/06/28(月) 07:35:31% Prolog (つづき)
'0〜60の数の個数 61〜80の数の個数 81〜100の数の個数 を集計して出力する'([],_0〜60の数の個数,_61〜80の数の個数,_81〜100の数の個数) :-
write_formatted('0〜60の数の個数=%t\n',[_0〜60の数の個数]),
write_formatted('61〜80の数の個数=%t\n',[_61〜80の数の個数]),
write_formatted('81〜100の数の個数=%t\n',[81〜100の数の個数]),!.
'0〜60の数の個数 61〜80の数の個数 81〜100の数の個数 を集計して出力する'([N|R],_0〜60の数の個数_1,_61〜80の数の個数,_81〜100の数の個数) :-
N =< 60,
_0〜60の数の個数_2 is_0〜60の数の個数_1 + 1,
'0〜60の数の個数 61〜80の数の個数 81〜100の数の個数 を集計して出力する'(R,_0〜60の数の個数_2,_61〜80の数の個数,_81〜100の数の個数),!.
'0〜60の数の個数 61〜80の数の個数 81〜100の数の個数 を集計して出力する'([N|R],_0〜60の数の個数,_61〜80の数の個数_1,_81〜100の数の個数) :-
N >= 61,N =< 80,
_61〜80の数の個数_2 is_61〜80の数の個数_1 + 1,
'0〜60の数の個数 61〜80の数の個数 81〜100の数の個数 を集計して出力する'(R,_0〜60の数の個数,_61〜80の数の個数_2,_81〜100の数の個数),!.
'0〜60の数の個数 61〜80の数の個数 81〜100の数の個数 を集計して出力する'([N|R],_0〜60の数の個数,_61〜80の数の個数,_81〜100の数の個数_1) :-
N >= 81,N =< 100,
_81〜100の数の個数_2 is_81〜100の数の個数_1 + 1,
'0〜60の数の個数 61〜80の数の個数 81〜100の数の個数 を集計して出力する'(R,_0〜60の数の個数,_61〜80の数の個数,_81〜100の数の個数_2),!.
0125デフォルトの名無しさん
2010/06/28(月) 07:43:32# 社員の情報を管理するプログラムを作りたい。
# 下の実行例のような社員データベースを処理するプログラムを実装しなさい。
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10757.txt
# 現在何人社員がいますか:3
#
# 1人目の情報を入力してください。
# 名前:TANAKA
# 年齢:26
# 年俸:550
#
# 2人目の情報を入力してください。
# 名前:NAKAMURA
# 年齢:50
# 年俸:1000
#
# 3人目の情報を入力してください。
# 名前:YAMADA
# 年齢:35
# 年俸:650
#
# **** 社員データベース管理プログラム ****
# 1:社員追加
# 2:昇級
# 3:名前検索
# 4:年俸検索(ある値以上の年俸を表示)
# 5:全社員の表示
#
# 9:End
#
# Select a number ?
0126デフォルトの名無しさん
2010/06/28(月) 08:30:24% Prolog
キーボードから入力された値が素数であるかどうかを判別する :-
get_integer(N),
素数であるかどうかを判別する(N).
素数であるかどうかを判別する(N) :-
素数ではない(N,_最小因子),
write_formatted('%tは素数ではありません。最小因子は%tです。\n',[N,_最小,!.
素数であるかどうかを判別する(N) :-
write_formatted('%tは素数です。\n',[N]).
素数ではない(N,_最小因子) :-
N2 is N // 2,
for(2,M,N2),
0 is N mod M,
_最小因子 = M,!.
0127デフォルトの名無しさん
2010/06/28(月) 12:59:17使用言語:J
f=:monad define
a=.q:y
if. 1=#a do.
smoutput (":y),' は素数です。'
else.
smoutput (":y),' は素数ではありません。最小因子は ',(":{.a),' です。'
end.
)
f 7
7 は素数です。
f 77
77 は素数ではありません。最小因子は 7 です。
0128デフォルトの名無しさん
2010/06/28(月) 13:00:11使用言語:J
data=: 34 57 45 21 89 63 39 48 78 68 76 84 92 53 62
eval=: +/"1=/:~data{61 20 20 # 0 1 2
eval
7 5 3
0129デフォルトの名無しさん
2010/06/28(月) 14:03:07# 1] 授業単元: プログラム入門
# [2] 問題文(含コード&リンク): 2つの自然数 n と m を入力し、その積 n×m を
# たし算のみで計算するプログラムを作成せよ。
0130デフォルトの名無しさん
2010/06/28(月) 14:06:00% Prolog
'2つの自然数 n と m を入力し、その積 n×m を たし算のみで計算する'(_n,0,0) :- !.
'2つの自然数 n と m を入力し、その積 n×m を たし算のみで計算する'(_n,_m,X) :-
_m_1 is _m - 1,
'2つの自然数 n と m を入力し、その積 n×m を たし算のみで計算する'(_n,_m_1,Y),
X is Y + _n.
0131デフォルトの名無しさん
2010/06/28(月) 14:08:06# [1] 授業単元: C言語プログラミング入門
# [2] 問題文:関数の再帰的呼び出しによりAckermann(アッカーマン)関数を計算するプログラムを作れ。同じプログラムを繰り返し処理(ループ計算)により実現できるか考えよ。Ackermann関数は次式で定義される。
#
0132デフォルトの名無しさん
2010/06/28(月) 14:11:34#
# n+1 m=0 and n>_0
# ack(m,n)= ack(m-1,1) m>0 and n=0
# ack(m-1,ack(m,n-1)) m>0 and n>0
0133デフォルトの名無しさん
2010/06/28(月) 16:59:03# [課題]携帯のiアプリをSTARを使い作成しています。
# 学校のホームページに載っている休講情報に接続して、それから先生の名前と日にちだけ取り出す方法が知りたいです。
# 休講情報は
#
# 6月
# 24日
# 野口 文子 先生
# 山下 紗枝 先生
# 井上 恵子 先生
#
# 25日
# 山下 紗枝 先生
#
# 26日
# ・
# ・
# ・
#
# のようになっています。
# 先生の名前の前の全角スペースを目印にして、配列に入れるそうなのですが・・・。
0134デフォルトの名無しさん
2010/06/28(月) 17:08:55使用言語:J
ack=: dyad define M.
if. x=0 do. >:y
elseif. y=0 do. (<:x) ack 1
elseif. do. (<:x) ack x ack <:y
end.
)
3 ack 1
13
3 ack 8
2045
0135デフォルトの名無しさん
2010/06/28(月) 17:17:36% Prolog
アッカーマン関数(0,N,X) :-
N > 0,
X is N + 1.
アッカーマン関数(M,0,X) :-
M > 0,
M_1 is M - 1,
アッカーマン関数(M_1,1,X).
アッカーマン関数(M,N,X) :-
M > 0,
N > 0,
M_1 is M - 1,
N_1 is N - 1,
アッカーマン関数(M,N_1,Y),
アッカーマン関数(M_1,Y,X).
0136デフォルトの名無しさん
2010/06/28(月) 17:27:23使用言語:J
大きい数の方を小さい数だけコピーしてリストをつくり合計。
f=: dyad define
if. 0=x<.y do. 0 else. x(<.+/@#>.)y end.
)
628 f 2010
1262280
12 f 0
0
0137デフォルトの名無しさん
2010/06/28(月) 20:10:56使用言語:maxima
なんかあっさりスタックオーバーフローになるなあ。
ack(m,n):=
if m=0 then n+1
elseif n=0 then ack(m-1,1)
else ack(m-1,ack(m,n-1));
(%i7) ack(3,4);
(%o7) 125
(%i8) ack(3,5);
Maxima encountered a Lisp error:
Error in PROGN [or a callee]: Bind stack overflow.
Automatically continuing.
To reenable the Lisp debugger set *debugger-hook* to nil.
0138デフォルトの名無しさん
2010/06/28(月) 20:26:04使用言語:maxima
f(a,b):=(x:min(a,b),y:max(a,b),sum(y,i,1,x));
(%i19) f(628,2010);
(%o19) 1262280
(%i20) f(2,0);
(%o20) 0
0139デフォルトの名無しさん
2010/06/28(月) 20:57:33使用言語:maxima
f(x):=(
a:ifactors(x),
if length(a)=1 then
printf(true,"~d は素数です。~%",x)
else
printf(true,"~d は素数ではありません。最小因子は ~d です。~%",x,a[1][1])
);
(%i6) f(7);
7 は素数です。
(%o6) false
(%i7) f(77);
77 は素数ではありません。最小因子は 7 です。
(%o7) false
0140デフォルトの名無しさん
2010/06/28(月) 21:25:28# [1] プログラミング1
# [2] 現在のインターネットを実現しているTCP/IP通信プロトコルでは主にIPv4
# を用いており、コンピュータを一意に識別するために32ビットのIPアドレスを
# 用いている。これを踏まえ、IPアドレスの4つの数字を入力させ、これらを32ビットの
# データ型であるunsigned int型の変数にIPアドレスを示す2進数の数値として保存せよ。
# 保存したIPアドレスがunsigned intの整数値として解釈するといくつとなるか表示する
# プログラムを作成せよ。
0141デフォルトの名無しさん
2010/06/28(月) 21:29:37# [1] 応用プログラミング
# [2] 問題文(含コード&リンク):
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10758.txt
#
# 次の構造体について配列を5個宣言し、標準入力でそれぞれの値を初期化し、
# 身長(height)が小さい順にソートするプログラムを作成しなさい。
#
# (下記のプログラムの続きから作成することとする)
# また実効例結果を下に記す。この通りに表示されるように作成する。
#
# 課題では以下の宣言以外はすべてmain関数内で作成すること。
# 配列変数を入れ替える要領で構造体を入れ替えプログラムを作成すること。
#
#
# #include<stdio.h>
# typedef struct
# {
# char name[32];
# double height;
# }Student;
0142デフォルトの名無しさん
2010/06/28(月) 21:30:46# [1] 授業単元:情報処理学
# [2] 問題文(含コード&リンク):
# 例1は、3教科5人の生徒の合計得点を求めるプログラムである。
# これを実行し、動作を説明せよ。さらに、教科毎の平均点、
# 生徒毎の平均点を計算して表示できるようにプログラムを修正し、
# 結果とともに示せ。
#
0143デフォルトの名無しさん
2010/06/28(月) 21:31:54使用言語:maxima
(%i13) printf(true,"10 = ~d~%",product((printf(true,"~d*",i),i),i,1,9)*10);
1*2*3*4*5*6*7*8*9*10 = 3628800
(%i24) printf(true,"~{~a~^*~} = ~d~%",makelist(i,i,1,10),10!);
1*2*3*4*5*6*7*8*9*10 = 3628800
0144デフォルトの名無しさん
2010/06/28(月) 21:33:10# 次レスにまとめても規制されてしまったので・・・・
# [2] 問題文:[1],[2]のプログラムを作成せよ。
# [1]多項式の次数nと係数a,(i=0,1・・・・,n)を入力し、
# その多項式f(x)=a_nx^2+a_n-1x^n-1+・・・+a_2x^2+a_1x+a_0と
# その微分の多項式f'(x)を出力するプログラムを作成せよ。
# ただし、nはint型,a_iはdouble型の配列とせよ。n<100と仮定してよい。
# 以下に入力例を示す
# n=5
# a5=1
# a4=0
# a3=2
# a2=0
# a1=3
# a0=0
# f(x)=x^5+2x^3+3x
# f'(x)=5x^4+6x^2+3
#
#
0145デフォルトの名無しさん
2010/06/28(月) 21:36:06# [2]以下の要領で、平均点、分散、標準偏差、最小値、最大値を求めるプログラム
# を作成せよ。
# (1)100人分の点数(int型)を記憶するための配列変数aを定義する
# (2)人数(int型)を記憶するための変数nを定義する。
# (3)人数nの初期値を0とする
# (4)点数をa[n]に入力する
# (5)点数が負の数ならば終了する
# (6)人数nを1つ増やす
# (7)全員の点数を空白で区切って表示する。例:83 52 64
# (8)平均点を出力する
# (9)分散を出力する
# (10)標準偏差を出力する
# (11)最小値を出力する
# (12)最大値を出力する
# (13)(4)へ戻る
# ※標準ライブラリのsqrt関数を使わずニュートン法によって平方根を
# 求める自作の関数を使え。
# ※平均点、分散、標準偏差を求めるとき、キャスト演算子を用いてdouble型へ
# 型変換せよ。
0146デフォルトの名無しさん
2010/06/28(月) 22:56:35# [1] 授業単元:C++プログラミング
# [2] 問題文(含コード&リンク):コンピュータ対人間の○×ゲームプログラムを作りなさい。
0147デフォルトの名無しさん
2010/06/29(火) 06:37:36# [1] 授業単元:プログラミング言語
# [2] # リストに格納したデータを,データファイルとは
# 別のファイル(出力先ファイルとよぶ)に書き出す.
# データファイルと出力先ファイルのファイル名は
# コマンドライン引数として指定する
# 下記テンプレートを使用すること
# http://ime.nu/codepad.org/d9CUmfae
0148デフォルトの名無しさん
2010/06/29(火) 07:47:45# tbl1にnum1,num2,id1,id2,id3
# tbl2にid,name,ssというフィールドがあるとして
# SELECT name, num1, num2, id1, id2, id3, time FROM tbl1, tbl2
# WHERE num1 = 1
# AND id1 = ( SELECT id FROM tbl2 WHERE ss = "monga")
# 上記のようなSQLを
# 特定のフィールドが他の行と重複してたら抜かすというのはどうやればいいでしょうか?
# 単にdistinctつけるだけだとどれかひとつでも重複していなかったら抽出されますよね。
# id1,id2,id3が他のレコードのid1,id2,id3と重複してたら
# 検索結果に入れないみたいな感じにしたいのですが。
# MYSQLです。
0149デフォルトの名無しさん
2010/06/29(火) 08:42:29% Prolog 多分ほとんどの処理系で符号なし整数はサポートされていないと思う。ここでは符号付き整数で考えてみる。
'IPアドレスを32ビットの符号付き整数データとして保持する'([A1,A2,A3,A4],_アドレス) :-
var(A1),var(A2),var(A3),var(A4),_アドレス >= 0,
A1 is _アドレス // 16777216,
M1 is _アドレス mod 16777216,
A2 is M1 // 65536,
M2 is M1 mod 65536,
A3 is M2 // 256,
A4 is M2 mod 256,!.
'IPアドレスを32ビットの符号付き整数データとして保持する'([A1,A2,A3,A4],_アドレス) :-
var(A11),var(A22),var(A33),var(A44),_アドレス < 0,
A11 is _アドレス // -16777216,
M1 is _アドレス mod -16777216,
A22 is M1 // -65536,
M2 is M1 mod -65536,
A33 is M2 // ((-1) * 256),
A44 is M2 mod 256,
A1 is 255 - A11,A2 is 255 - A22,A3 is 255 - A33,A4 is A44 + 256.!.
'IPアドレスを32ビットの符号付き整数データとして保持する'([A1,A2,A3,A4],_アドレス) :-
A1 > 127,A11 is A1 - 256,
_アドレス is A11 * 256 * 256 * 256 + A2 * 256 * 256 + A3 * 256 + A4,!.
'IPアドレスを32ビットの符号付き整数データとして保持する'([A1,A2,A3,A4],_アドレ
ス) :-
A1 < 128,
_アドレス is A1 * 256 * 256 * 256 + A2 * 256 * 256 + A3 * 256+ A4,!.
0150デフォルトの名無しさん
2010/06/29(火) 10:14:46% Prolog
'多項式の次数nと係数a,(i=0,1・・・・,n)を入力し、その多項式f(x)=a_nx^n+a_n-1x^n-1+・・・+a_2x^2+a_1x+a_0とその微分の多項式f'(x)を出力する' (_n,_係数ならび) :-
findall(S,(
append(L0,[A|R],_係数ならび),
length(R,N),
項文字列の生成(A,N)),
L1),
多項式に整形(L1,L2),
concat_atom(L2,_多項式).
項文字列の生成(0,_,'') :- !.
項文字列の生成(A,0,S) :- write_formatted_atom('%t',[A],S),!.
項文字列の生成(A,1,S) :- A > 1,write_formatted_atom('%tx',[A],S),!.
項文字列の生成(1,1,x) :- !.
項文字列の生成(A,N,S) :- write_formatted_atom('%tx^%t',[A,N],S),!.
多項式に整形(L1,_多項式) :-
加減算符号を付加(L1,L2),
先頭項のプラスは削除(L2,L3),
concat_atom(L3,_多項式),!.
加減算符号を付加([],[]) :- !.
加減算符号を付加([A|R1],[A|R2]) :- sub_atom(A,0,1,_,'-'),加減算符号を付加(R1,R2,!.
加減算符号を付加([A|R1],['+',A|R2]) :- 加減算符号を付加(R1,R2),!.
先頭項のプラスは除去(['+'|L],L) :- !.
先頭項のプラスは除去(L,L).
0151デフォルトの名無しさん
2010/06/29(火) 10:33:05# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10760.txt
#
# (1)複数の文字列を読み込み,さらに,それらの文字列を繋ぎ合わせる順番を入力し結果を出力するプログラムを作成せよ.
#
# 【実行例】
#
# 何個の文字列を入力しますか?:3
# 入力文字列[1]:B
# 入力文字列[2]:A
# 入力文字列[3]:C
#
# 繋ぎ合わせる順番を入力してください。
# 2
# 1
# 3
#
# 結果 -> ABC
#
# (2)入力した文字配列中に,abcという並びがいくつあるか調べるプログラムを作成せよ.
bfaabcabc
# gatagataabc
# (ここで ^D を押す)
# #ABC is 3
0152デフォルトの名無しさん
2010/06/29(火) 12:35:39% Prolog
'複数の文字列を読み込み,さらに,それらの文字列を繋ぎ合わせる順番を入力し結果を出力する' :-
催促付き整数入力('文字列の個数を予約してください : ',N),
findall(S,(
for(1,_,N),write_formatted('入力文字列[%t] : ',[M]),
get_line(S)),
_入力文字列ならび),
write('繋ぎ合わせる順番を入力してください。\n'),
findall(N2,(for(1,_,N),get_integer(N2)),_結合順序指定ならび),
文字列のならびの並べ替え(_入力文字列ならび,_結合順序指定ならび,_指定順序に並び替えられたならび),
concat_atom(_指定順序に並べ替えられたならび,_繋ぎ合わされた文字列),
write_formatted('%t\n',[_繋ぎ合わされた文字列]).
文字列のならびの並べ替え(_,[],[]) :- !.
文字列のならびの並べ替え(_選択対象ならび,[N|R2],[_取り出し文字列|R3]) :-
list_nth(N,_選択対象ならび,_取り出し文字列),
文字列のならびの並べ替え(_選択対象ならび,R2,R3).
0153デフォルトの名無しさん
2010/06/29(火) 13:20:25% Prolog [2]
'入力した文字配列中に,abcという並びがいくつあるか調べる' :-
get_chars(Chars),
count(append(_,[a,b,c|_],Chars),Count),
write_formatted('#abc = %t\n'[Count]).
0154デフォルトの名無しさん
2010/06/29(火) 13:25:25# 画像上のある点からy=ax^2の2次曲線を赤線で描画しなさい(画像 320×240)
#
#
# (x,y)=(160,120)
# a=1/3のとき
# a=1/2のとき
# a=1のとき
# a=2のとき
#
# 描画範囲
# yの範囲は40
# xの範囲は60
#
0155デフォルトの名無しさん
2010/06/29(火) 13:47:10% Prolog
'id1,id2,id3が他のレコードのid1,id2,id3と重複してたら検索結果に入れない'([_name,_num1,_num2,_id1,_id2,_id3]) :-
findall([_name,_num1,_num2,_id1,_id2,_id3],(
tbl1(num1,_num2,_id1,_id2,_id3),
num1 = 1,
tbl2(id1,_name,monga)),
L1),
findsetof([_id1,_id2,_id3],member([_,_,_,_id1,_id2,_id3],L1),L2),
findall([_id1,_id2,_id3],(
count((member([_id1,_id2,_id3],L2),1)),
L2),
member([_name,_num1,_num2,_id1,_id2,_id3],L1),
member([_id1,_id2,_id3],L2).
0156デフォルトの名無しさん
2010/06/29(火) 15:42:04% Prolog
program :-
user_parameters([_データファイル,_出力ファイル]),
get_chars(_データファイル,Chars),
put_chars(_出力ファイル,Chars).
0157デフォルトの名無しさん
2010/06/29(火) 17:34:43# [1] 授業単元:一般情報処理
# [2] 問題文(含コード&リンク):次のような動作をするプログラムを作成せよ。
# 配列内のデータの最小値を返す。int min() 配列内のデータの最大値を返す。int max()
# 配列内のデータの平均値を返す。double mean() 配列内のデータの標準偏差を返す。double stdev()
# ただしmain関数は次のものを使うこと。
# int main(void){
# int a[15]={81,36,45,67,73,98,62,56,77,61,65,70,25,51,18};
# printf("min=%d\n",min(15,a));
# printf("max=%d\n",max(15,a));
# printf("average=%lf\n",mean(15,a));
# printf("standard deviation=%lf\n",stdev(15,a));
# return 0; }
# さらに、配列a[]の各要素の偏差値を表示するプログラムを作成せよ
#
0158デフォルトの名無しさん
2010/06/29(火) 18:02:13% Prolog
平均値([],N,S,M) :- M is S / N,!.
平均値([A|R],N,S,M) :- S1 is S + A,平均値(R,N,S1,M) .
平均値(L,M) :- length(L,N),平均値(L,N,0.0,M) .
最小値最大値([A|R],_最小値,_最大値) :- 最小値最大値(R,A,A,_最小値,_最大値).
最小値最大値([],_最小値,_最大値,_最小値,_最大値) :- !.
最小値最大値([A|R],_最小値1,_最大値1,_最小値,_最大値) :- A @> _最大値,最小値最大値(R,_最小値1,A,_最小値,_最大値),!.
最小値最大値([A|R],_最小値1,_最大値1,_最小値,_最大値) :- A @< _最小値,最小値最大値(R,A,_最大値1,_最小値,_最大値),!.
最小値最大値([A|R],_最小値1,_最大値1,_最小値,_最大値) :- 最小値最大値(R,_最小値1,_最大値1,_最小値,_最大値),!.
標準偏差(L,V) :- length(L,N),平均値(L,M),標準偏差(L,N,M,0.0,V).
標準偏差([],N,M,S,V) :- V is sqrt(S / (N - 1)),!.
標準偏差([A|R],N,M,S,V) :- S1 is (A - M) ^ 2,S2 is S + S1,標準偏差(R,N,M,S2,V).
偏差値(_標本値,_平均値,_標準偏差,_偏差値) :- _偏差値 is 10 * (_標本値 - _平均値 ) / _標準偏差 + 50.
偏差値(L,_偏差値ならび) :-
平均値(L,_平均値),
標準偏差(L,_標準偏差),
findall(_偏差値,(member(_値,L) ,偏差値(_値,_平均値,_標準偏差,_偏差値)),_偏差値ならび).
0159デフォルトの名無しさん
2010/06/29(火) 19:04:21# [1] 授業単元:画像処理
# [2] 問題文(含コード&リンク):16×16サイズの白黒ビットマップ画像を読み込んで、
# 上下反転させた画像をビットマップで保存するプログラムを作成。
#
0160デフォルトの名無しさん
2010/06/29(火) 22:57:29# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):ファイルに保存された会員情報を指定された項目をキーとしてソートするプログラムを作成する.
# 出力形式は,入力データと同じ,つまり1行に1人分のデータを格納し,各項目間はカンマで区切るものとする.
# また,ソート済みのデータはファイルではなく標準出力に出力するものとする.
# 整数型のデータについては数値として,文字列型のデータについては大文字/小文字を区別せずにソートをすること.
# ソートアルゴリズムはこれまでの演習で使用したもの,していないものに関わらず,何を用いてもよい.
#
# また,会員数は最大で20,000人と仮定してもよい.
#
# 会員情報の入ったファイルのファイル名,キーとなる項目,正順か逆順かの指定はプログラム実行時の引数として与える.第一引数が会員情報の入ったファイル名,第二引数が項目番号(表1参照),第三引数がソート方法(0なら昇順,1なら降順)とする.
nt)
# 州 5 文字列(最大で50文字)
# 郡 6 文字列(最大で50文字)#
# 表1: データ型 項目名 項目番号 型
# 会員ID 1 整数(int)
# 姓 2 文字列(最大で50文字)
# 名 3 文字列(最大で50文字)
0161デフォルトの名無しさん
2010/06/29(火) 23:52:14# [1] 授業単元: プログラミング開発基礎
# [2] 問題文 複数ありますのでこちらで
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10764.txt
# 問題1
# 1 問題1読み込んで,その数が10 で割り切れるかどうかを表示するプログラムを作成
# 整数値を読み込んで,その数が10 で割り切れるかどうかを表示するプログラムを作成せよ.,表示後に,もう一度続けるかの確認を促し,それに応じて何度でも繰り返せる# なお,表示後に,もう一度続けるかの確認を促し,それに応じて何度でも繰り返せるようにすること
# 2 問題2
# 2 問題2数値を読み込んで,その桁数を表示するプログラムを作成せよ.
# 非負の整数値を読み込んで,その桁数を表示するプログラムを作成せよ.と.
# なお,負の値を読み込んだ場合は,再入力を促すメッセージを表示すること.
# 3 問題3
# 3 問題3数値を読み込んで,小さい方の数以上で大きい方の数以下の整数を全て加え
# 二つの整数値を読み込んで,小さい方の数以上で大きい方の数以下の整数を全て加えた値を表示するプログラムを作成せよ.
# 4 問題4読み込むまで次々と整数値を読み込んでいき,合計値および平均値を表示する
# 9999 を読み込むまで次々と整数値を読み込んでいき,合計値および平均値を表示するプログラムを作成せよ.なお,最後に読み込んだ9999 は合計には加えないものとする
0162デフォルトの名無しさん
2010/06/30(水) 00:03:23# ../test/read.cgi/tech/1266565626/673
# ・とあるディレクトリd0以下に存在する全てのディレクトリをなぞる。
#
# ・このとき、今位置するディレクトリdnの相対的な深さをdとして、
# d個のピリオドをディレクトリdnの名前の前に足した文字列 をファイルFに出力する。
#
# ・また、このとき、今位置するディレクトリdnにテキストファイルがあれば、
# d+1個のピリオドをテキストファイルtnの名前の前に足し、拡張子.txtを除いた文字列 をファイルFに出力する。
# ・さらに、そのテキストファイルtnの内容をそのままファイルFに出力する。
# テキストファイルtnの内容の各行頭には、ピリオドはつけない。
# テキストファイルtnの内容のとある行頭にピリオドがある場合は、ピリオドの前に半角空白を入れる。
0163デフォルトの名無しさん
2010/06/30(水) 02:04:53% Prolog [1] [2]
'整数値を読み込んで,その数が10 で割り切れるかどうかを表示する' :-
催促付き整数入力('整数値を入力してください : ',N),
'10で割り切れるか判定する'(N),
write('入力を続けますか y or n : '),get_line(Line),
Line = y,
'整数値を読み込んで,その数が10 で割り切れるかどうかを表示する'.
'整数値を読み込んで,その数が10 で割り切れるかどうかを表示する'.
'10で割り切れるか判定する'(N) :- 0 is N mod 10,
write('あなたの入力した数%tは10で割り切れます\n',[N]),!.
'10で割り切れるか判定する'(N) :-
write('あなたの入力した数%tは10で割り切れません\n',[N]),!.
'非負の整数値を読み込んで,その桁数を表示する' :-
催促付き整数入力('非負の整数値を入力してください : ',N),N >= 0,
入力された整数の桁数を表示する(1,N),
write('入力を続けますか y or n : '),get_line(Line),
Line = y,
'非負の整数値を読み込んで,その桁数を表示する'.
'非負の整数値を読み込んで,その桁数を表示する'.
入力された整数の桁数を表示する(M,N) :-
truncate(10 ^ M) > N,write('入力された非負整数は%桁です\n',[M]),!.
入力された整数の桁数を表示する(M1,N) :- M2 is M1 + 1,入力された整数の桁数を表示
する(M2,N).
0164デフォルトの名無しさん
2010/06/30(水) 07:14:15% Prolog 問題3 問題4
二つの整数値を読み込んで,小さい方の数以上で大きい方の数以下の整数を全て加えた値を表示する :-
write('整数値をカンマで区切り二つ読み込みます : '),
get_split_line([','],[N1,N2]),
小さい順に(N1,N2,N3,N4),
findsum(N,for(N3,N,N4),Sum1),
Sum is truncate(Sum1),
write_formatted('%t以上%t以下のすべての整数の和は%tです。\n',[N3,N4,Sum]).
小さい順に(N1,N2,N1,N2) :- N1 =< N2,!.
小さい順に(N1,N2,N2,N1) :- N1 > N2,!.
'9999 を読み込むまで次々と整数値を読み込んでいき,合計値および平均値を表示する':-
findall(N,(repeat,get_integer(N),(N=9999,!,fail;true)),L),
length(L,Len),\+(Len=0),
合計値および平均値(L,Len,0,_合計値,_平均値),
write_formatted('合計値 = %t, 平均値 = %t\n',[_合計値,_平均値]).
合計値および平均値([],Len,_合計値,_合計値,_平均値) :- _平均値 is _合計値 / Len,!.
合計値および平均値([N|R],Len,_合計値1,_合計値,_平均値) :-
_合計値2 is _合計値 + N,
合計値および平均値(R,Len,_合計値2,_合計値,_平均値).
0165デフォルトの名無しさん
2010/06/30(水) 07:30:57% Prolog write_formattedであるべきところがwriteになっているところが複数箇所ありました。% 以下サイトに書き直しておきます。
http://nojiriko.asia/prolog/c137_340.html
0166デフォルトの名無しさん
2010/06/30(水) 11:44:59# [1] 授業単元:ファイル操作、2分探索法
# [2] 問題文:学生の身長、体重のデータを読み込みある学籍番号を入力した
# ときにその学生の学籍番号、身長、体重を2分探索法により求め、出力しなさい。
# 学生のデータは、txtファイルでxx yyy zzという風に記載されています。
# (例)出力結果
# 学生番号:xx
# 身長:yyy (cm)
# 体重:zz (kg)
0167デフォルトの名無しさん
2010/06/30(水) 17:07:33% Prolog
http://nojiriko.asia/prolog/ruby2_861.html
0168デフォルトの名無しさん
2010/06/30(水) 17:24:16# 【質問テンプレ】
# [1] 授業単元:プログラミング
# [2] 問題文:
# 二分法による平方根の計算。但し、求めたい平方根(自
# 然数)を入力できるようにした上で、プログラムの実行時
# の計算回数を計算・表示できるように、プログラムを作成
# すること。
0169デフォルトの名無しさん
2010/06/30(水) 18:02:30% Prolog
二分法による平方根の計算(X,Y) :-
S1 is X / 2,
二分法による平方根の計算(1,X,S1,Y).
二分法による平方根の計算(N,X,S1,Y) :-
Y is X / 2 + S1,
write_formattd('%t %10.4f\n',[N,Y]),
0.0001 > abs(Y - S1),!.
二分法よる平方根の計算(N1,X,S1,Y) :-
S2 is S / 2 + S1,
N2 is N1 + 1,
二分法による平方根の計算(N2,X,S2,Y).
0170デフォルトの名無しさん
2010/06/30(水) 20:56:38# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10767.txt
#
# 登録番号(int no)と名前(char *name)と年齢(int age)を含む構造体person型のポインタ変数を宣言し,
# 登録人数分だけの動的メモリ確保をせよ. そして, データをファイルから入力せよ. (malloc関数を使用すること)
# ファイルの形式は, 先頭に登録する人数とし, そのあとに人数分のデータを登録番号,名前, 年齢の順に書いていく
# (下の例を参照. 登録番号は入力順に1,2,3,4,5, …とする. そして, 入力した全員データを表示せよ.
#
# (ファイルの例)
# 3
# 1 田中 20
# 2 大田 40
# 3 井上 35
0171デフォルトの名無しさん
2010/06/30(水) 21:54:55% Prolog データファイルを作ることも問題のうちなのかな。例によってポインター云々は無視。
ファイル作成(_ファイル名) :-
write('作成するデータ数を入力してください : '),
get_integer(N),
tell(_ファイル名),
write_formatted('%t\n',[N]),
for(1,M,N),
write('名前と年齢をカンマまたはスペース区切りで入力してください : '),
get_split_line([',',' '],[_名前,_年齢]),
write_formatted('%t %t %t\n',[N,_名前,_年齢]),
M = N,
told.
ファイルから読み取ったデータを登録する(_ファイル名) :-
get_split_lines(_ファイル名,[' '],LL),
LL = [_|LL2],
'この場合、要素数(構造体の数)はいらないから',
append(_,[[_登録番号,_名前,_年齢]|R],LL2),
assertz(人物(_登録番号,_名前,_年齢)),
R = [].
'この場合、要素数(構造体の数)はいらないから'.
0172デフォルトの名無しさん
2010/06/30(水) 22:54:32% Prolog >>171はナンセンスで、Prologのプログラマなら、
ファイル作成(_ファイル名) :-
write('作成するデータ数を入力してください : '),
get_integer(N),
tell(_ファイル名),
for(1,M,N),
write('名前と年齢をカンマまたはスペース区切りで入力してください : '),
get_split_line([',',' '],[_名前,_年齢]),
write_formatted(人物('%q,%q,%q).\n',[N,_名前,_年齢]),
M = N,
told.
ファイルから読み取ったデータを登録する(_ファイル名) :-
consult(_ファイル名).
0173デフォルトの名無しさん
2010/06/30(水) 23:39:49% Prolog
http://nojiriko.asia/prolog/Perl_ni_tsuite43_675.html
0174デフォルトの名無しさん
2010/07/01(木) 05:33:43# 二分法とニュートン法で次の非線形方程式の解を求めるプログラムを作成せよ
#
# x=2+logx (x≧1)
#
0175デフォルトの名無しさん
2010/07/01(木) 09:00:30% Prolog (その一) 整列と併合を除く外殻だけ。
オンメモリ整列限界数(1000).
ファイルに保存された会員情報を指定された項目をキーとしてソートする(_対象ファイル,_鍵項目番号,_ソート方法) :-
オンメモリ整列限界数(_オンメモリ整列限界数),
open(_対象ファイル,read,Input),
ふたつの仮ファイルの取得と交互からくり生成,
入力出力ファイルを交互しながらの繰り返し(_,_仮出力ファイル,InputT,OutputT),
対象ファイルから読み込む(Input,_オンメモリ整列限界数,Lines,_診断),
鍵・昇降順・指定整列(Lines,_鍵項目番号,_ソート方法,_整列されたLines),
鍵項目番号とソート方法をしてファイル併合(_整列されたLines,_鍵項目番号,_ソート方法,InputT,OutputT),
_診断 = end_of_file,close(Input),
仮出力ファイルの内容を整理しながら標準出力に表示する(_仮出力ファイル,_鍵項目番号).
入力出力ファイルを交互しながらの繰り返し(_仮ファイルA,_仮ファイルB,InputT,OutputT) :-
仮ファイルからくり(_仮ファイルA,_仮ファイルB),
open(_仮ファイルA,read,InputT),
open(_仮ファイルB,write,OutputT).
仮ファイルからくり(X) :- 仮ファイルからくり(X).
ふたつの仮ファイルの取得と交互からくり生成 :-
tmpnam(_仮ファイル1),open(_仮ファイル1,write,Output1),close(Output1),
tmpnam(_仮ファイル2),opne(_仮ファイル2,write,Output2),close(Output2),
asserta(仮ファイルからくり(_仮ファイル2,_仮ファイル1)),
asserta(仮ファイルからくり(_仮ファイル1,_仮ファイル2)).
0176デフォルトの名無しさん
2010/07/01(木) 11:24:56% Prolog
学校のホームページに載っている休講情報に接続して、それから先生の名前と日にちだけ取り出す(URL,_休講情報ならび) :-
w3c(URL,Lines),
先生の名前と日にちだけ取り出す(Lines,_休講情報ならび),!.
先生の名前と日にちだけ取り出す(Lines,_休講情報ならび) :-
append(L0,[A|R1],Lines),
sub_atom(A,_,2,_,先生),
月日を取り出す(L0,_月,_日),
ある日の休講情報ならびを得る([A|R1],_月,_日,_ある日の休講となる情報ならび,_残りならび),
先生の名前と日にちだけ取り出す(_残りならび,R),
append(_ある日の休講となる情報ならび,_休講情報ならび),!.
先生の名前と日にちだけ取り出す(_,[]) :- !.
月日を取り出す(Lines,_月,_日) :-
append(_,[A|_],Lines),sub_atom(A,S,1,_,月),sub_atom(A,0,S,_,_月),
append(_,[B|_],Lines),sub_atom(A,S,1,_,日),sub_atom(B,0,S,_,_日),!.
ある日の休講情報ならびを得る([],_,_,[],[]) :- !.
ある日の休講情報ならびを得る(['\n'|R],_,_,[],R) :- !.
ある日の休講情報ならびを得る([A|R1],_月,_日,[[_氏名,_月,_日]|R2],_残りならび) :-
sub_atom(A,_,2,_,先生),
split(A,[' '],[_姓,_名,先生]),
concat_atom([_姓,_名],_氏名),
ある日の休講情報ならびを得る(R1,_月,_日,R2,_残りならび).
0177デフォルトの名無しさん
2010/07/01(木) 11:29:400178デフォルトの名無しさん
2010/07/01(木) 13:47:49これも >>170 ではなくて >>160 だった。
0179デフォルトの名無しさん
2010/07/01(木) 15:45:50# [1] 授業単元: プログラミング言語
# [2] 問題文(含コード&リンク): http://ime.nu/kansai2channeler.hp.infoseek.co. jp/cgi-bin/joyful/img/10772.txt
#
# 演習1
# 再帰呼び出しを用いたフィボナッチ数
0180デフォルトの名無しさん
2010/07/01(木) 16:13:56% Prolog
フィボナッチ数(0,1).
フィボナッチ数(1,1).
フィボナッチ数(N,X) :-
N >= 2,
N_1 is N - 1,フィボナッチ数(N_1,X1),
N_2 is N - 2,フィボナッチ数(N_2,X2),
X is X1 + X2.
0181デフォルトの名無しさん
2010/07/01(木) 19:54:48% Prolog
http://nojiriko.asia/prolog/c137_335.html
0182デフォルトの名無しさん
2010/07/02(金) 00:20:09使用言語:十進BASIC
FUNCTION ack(m,n)
IF m=0 THEN
LET ack=n+1
ELSEIF n=0 THEN
LET ack=ack(m-1,1)
ELSE
LET ack=ack(m-1,ack(m,n-1))
END IF
END FUNCTION
FOR i=0 TO 8
PRINT USING "ask(3,#) = ####":i,ack(3,i)
NEXT I
END
ask(3,0) = 5
ask(3,1) = 13
ask(3,2) = 29
ask(3,3) = 61
ask(3,4) = 125
ask(3,5) = 253
ask(3,6) = 509
ask(3,7) = 1021
ask(3,8) = 2045
0183デフォルトの名無しさん
2010/07/02(金) 00:21:11使用言語:Lua
function ack(m,n)
if m==0 then return n+1
elseif n==0 then return ack(m-1,1)
else return ack(m-1,ack(m,n-1))
end
end
for i=0,8 do print("ack(3,"..i..") = "..ack(3,i))end
ack(3,0) = 5
ack(3,1) = 13
ack(3,2) = 29
ack(3,3) = 61
ack(3,4) = 125
ack(3,5) = 253
ack(3,6) = 509
ack(3,7) = 1021
ack(3,8) = 2045
0184デフォルトの名無しさん
2010/07/02(金) 00:22:11使用言語:Xtal
ack:fun(m,n){
if (m==0) return n+1;
if (n==0) return ack(m-1,1);
return ack(m-1,ack(m,n-1));
}
ix:009>9.times{%f"ack(3,%d)=%d"(it,ack(3,it)).p;};
ack(3,0)=5
ack(3,1)=13
ack(3,2)=29
ack(3,3)=61
ack(3,4)=125
ack(3,5)=253
ack(3,6)=509
ack(3,7)=1021
ack(3,8)=2045
ix:010>
0185デフォルトの名無しさん
2010/07/02(金) 04:59:37# 摂氏から華氏,及び華氏から摂氏に換算する関数を作成して、
# main関数でキーボードから温度とその値が摂氏であるか華氏であるかを
# 入力し,摂氏ならば華氏に,華氏ならば摂氏に換算した値を小数点以下1桁までで出力するプログラムを作成しなさい。
# なお出力は main関数で行うこと。
#
0186デフォルトの名無しさん
2010/07/02(金) 05:00:56# [1] 授業単元:プログラミングC
# [2] 問題文(含コード&リンク):
# 極座標(r,θ)の値を入力すると、直交座標(x,y)に変換するプログラムを作成せよ。
# 但し,θの値はdegree(度)で入力すること。また、πの値は逆三角関数(arctan(x))を使って計算をすること。
#
0187デフォルトの名無しさん
2010/07/02(金) 05:01:48# [1] 授業単元:アルゴリズム論
# [2] 問題文(含コード&リンク):分離連作法と外部ハッシュ法の性能比較
#
0188デフォルトの名無しさん
2010/07/02(金) 05:04:19#
# 【 課題 】
# 課題1
#
# 整数型の変数n1,n及びn3には、数値が格納されている。
# これらの3個の数値の大小比較を行い、最大値を変数maxに、最小値を変数minに格納する手続き部である。
# 最初にn1とn2の大小比較を行い、大きいほうをmaxに入れ、小さい方をmmminに入れる。
# 次に、max及びminとn3を大小比較して、大きいほうをmaxに、小さい方をminに入れて、最終的な最大値および
#
# 最小値を決定する。
0189デフォルトの名無しさん
2010/07/02(金) 05:21:57# [1] 授業単元:2分探索法
# [2] 問題文: http://nojiriko.asia/jpeg/up10962.jpg にコピーさせていただきました。
#
0190デフォルトの名無しさん
2010/07/02(金) 05:26:20# 以下の条件(仕様)を満たすプログラムを作成し, そのプログラム(Pascalプログラムソースファイル)とともに その解説書を提出すること.
# 逆ポーランド記法で入力された論理式の充足可能性を判定し, その式の値をtrueにする変数値を,通常の表記とともに出力すること.
# 可能な演算は論理積(and), 論理和(or), 否定(not), の3種類として, それぞれ'a','o','n' で表現すること.
# 使用可能な論理変数は x0, x1, ..., x9 の10種類とし, それぞれ '0','1',...,'9' で表現すること.
# 例) (x1∧x2)∨(¬x1∧x3) ⇒ 12a1n3ao
# 使用できない文字が含まれる入力に対してエラーの旨を出力すること.
# 入力された論理式の充足可能性を判定, 式の値を true にする変数値を出力した後, 再度入力待ち状態になり, 空の文字列を入力するとプログラムが終了すること.
0191デフォルトの名無しさん
2010/07/02(金) 06:10:53% Prolog 問題B 問題B.1
_学籍番号+_氏名+_誕生_月+_誕生_日 :-
open('data_b.txt',append,Output),
write_formatted(Output,'%t %t %t %t\n',[_学籍番号,_氏名,_誕生_月,_誕生_日]),
close(Output).
'data_b.txtを読み込み、4月1日を年初めとして、誕生日の早いもの順にソートし、その結果を「output_b.txt」ファイルに出力する' :-
get_split_lines([' '],'data_b.txt',LL),
鍵項目の付加(LL,LL2),
整列(LL2,LL3),
鍵項目を除去しながら出力する(LL3).
鍵項目の付加([],[]) :- !.
鍵項目の付加([[_学籍番号,_氏名,_誕生_月,_誕生_日]|R1],[_誕生_月_2,_誕生_日,_学籍番号,_氏名,_誕生_月,_誕生_日]|R2]) :-
'1-3月を13-15月に修正'(_誕生_月,_誕生月_2),
鍵項目の付加(R1,R2).
'1-3月を13-15月に修正'(_誕生_月,_誕生月_2) :- _誕生_月 >= 1,_誕生_月 =< 3,_誕生_月_2 is _誕生_月 + 12,!.
'1-3月を13-15月に修正'(_誕生_月,_誕生月).
鍵項目を除去しながら出力する([]) :- !.
鍵項目を除去しながら出力する([[_,_|L]|R]) :-
open('out_b.txt',append,Output),
write_formatted(Output,'%t %t %t月 %t日\n',L),
close(Output),
鍵項目を除去しながら出力する(R).
0192デフォルトの名無しさん
2010/07/02(金) 06:57:45% Prolog get_split_lines/3の引数の取り方に誤りがあった。修正。
_学籍番号+_氏名+_誕生_月+_誕生_日 :-
open('data_b.txt',append,Output),
write_formatted(Output,'%t %t %t %t\n',[_学籍番号,_氏名,_誕生_月,_誕生_日]),
close(Output).
'data_b.txtを読み込み、4月1日を年初めとして、誕生日の早いもの順にソートし、その結果を「output_b.txt」ファイルに出力する' :-
get_split_lines('data_b.txt',[' '],LL),
鍵項目の付加(LL,LL2),
整列(LL2,LL3),
鍵項目を除去しながら出力する(LL3).
鍵項目の付加([],[]) :- !.
鍵項目の付加([[_学籍番号,_氏名,_誕生_月,_誕生_日]|R1],[_誕生_月_2,_誕生_日,_学籍番号,_氏名,_誕生_月,_誕生_日]|R2]) :-
'1-3月を13-15月に修正'(_誕生_月,_誕生月_2),
鍵項目の付加(R1,R2).
'1-3月を13-15月に修正'(_誕生_月,_誕生月_2) :- _誕生_月 >= 1,_誕生_月 =< 3,_誕生_月_2 is _誕生_月 + 12,!.
'1-3月を13-15月に修正'(_誕生_月,_誕生月).
鍵項目を除去しながら出力する([]) :- !.
鍵項目を除去しながら出力する([[_,_|L]|R]) :-
open('out_b.txt',append,Output),
write_formatted(Output,'%t %t %t月 %t日\n',L),
close(Output),
鍵項目を除去しながら出力する(R).
0193デフォルトの名無しさん
2010/07/02(金) 07:00:34% Prolog 問題B.2
'output_b.txtを読み込み、ある誕生日を入力したときに、その学生の学籍番号、氏名、
誕生月、誕生日を二分探索法により出力する'(_誕生_月,_誕生_日) :-
get_split_lines('output_b.txt',[' ',月,日],LL),
二分探索法(LL,_誕生_月,_誕生_日,[_学籍番号,_氏名,_誕生_月,_誕生_日]),
write_formatted('%t %t %t %t月%t日\n',[_学籍番号,_誕生_月,_誕生_日]).
二分探索法(LL,_誕生_月,_誕生_年,[_学籍番号,_氏名,_誕生_月,_誕生_日]) :-
'1-3月を13-15月に修正'(_誕生_月,_誕生月_0),
length(LL,Len),
Len0 is Len // 2,
append(L0,[[_学籍番号_1,_氏名_1,_誕生_月_1,_誕生_日_1|L1],LL),
length(L0,Len0),
'1-3月を13-15月に修正'(_誕生_月_1,_誕生月_10),
二分探索法(L0,L,L1,_誕生_月_0,_誕生_日,_誕生_月_10,_誕生_日_1,[_学籍番
号,_氏名,_誕生_月,_誕生_日]).
二分探索法(L0,L,L1,_誕生_月,_誕生_日,_誕生_月,_誕生_日,L) :- !.
二分探索法(L0,L,L1,_誕生_月_0,_誕生_日,_誕生_月_10,_誕生_日_1,[_学籍番号,_氏名,
_誕生_月,_誕生_日]) :-
[_誕生_月_0,_誕生_日] @> [_誕生_月_10,_誕生_日_1],!,
二分探索法(L0,_誕生_月,_誕生_年,[_学籍番号,_氏名,_誕生_月,_誕生_日]).
二分探索法(L0,L,L1,_誕生_月_0,_誕生_日,_誕生_月_10,_誕生_日_1,[_学籍番号,_氏名,
_誕生_月,_誕生_日]) :-
[_誕生_月_0,_誕生_日] @< [_誕生_月_10,_誕生_日_1],!,
二分探索法(L1,_誕生_月,_誕生_年,[_学籍番号,_氏名,_誕生_月,_誕生_日]).
0194デフォルトの名無しさん
2010/07/02(金) 07:05:19% Prolog また、改行ミスがあった。
'output_b.txtを読み込み、ある誕生日を入力したときに、その学生の学籍番号、氏名、誕生月、誕生日を二分探索法により出力する'(_誕生_月,_誕生_日) :-
get_split_lines('output_b.txt',[' ',月,日],LL),
二分探索法(LL,_誕生_月,_誕生_日,[_学籍番号,_氏名,_誕生_月,_誕生_日]),
write_formatted('%t %t %t %t月%t日\n',[_学籍番号,_誕生_月,_誕生_日]).
二分探索法(LL,_誕生_月,_誕生_年,[_学籍番号,_氏名,_誕生_月,_誕生_日]) :-
'1-3月を13-15月に修正'(_誕生_月,_誕生月_0),
length(LL,Len),
Len0 is Len // 2,
append(L0,[[_学籍番号_1,_氏名_1,_誕生_月_1,_誕生_日_1|L1],LL),
length(L0,Len0),
'1-3月を13-15月に修正'(_誕生_月_1,_誕生月_10),
二分探索法(L0,L,L1,_誕生_月_0,_誕生_日,_誕生_月_10,_誕生_日_1,[_学籍番号,_氏名,_誕生_月,_誕生_日]).
二分探索法(L0,L,L1,_誕生_月,_誕生_日,_誕生_月,_誕生_日,L) :- !.
二分探索法(L0,L,L1,_誕生_月_0,_誕生_日,_誕生_月_10,_誕生_日_1,[_学籍番号,_氏名,_誕生_月,_誕生_日]) :-
[_誕生_月_0,_誕生_日] @> [_誕生_月_10,_誕生_日_1],!,
二分探索法(L0,_誕生_月,_誕生_年,[_学籍番号,_氏名,_誕生_月,_誕生_日]).
二分探索法(L0,L,L1,_誕生_月_0,_誕生_日,_誕生_月_10,_誕生_日_1,[_学籍番号,_氏名,_誕生_月,_誕生_日]) :-
[_誕生_月_0,_誕生_日] @< [_誕生_月_10,_誕生_日_1],!,
二分探索法(L1,_誕生_月,_誕生_年,[_学籍番号,_氏名,_誕生_月,_誕生_日]).
0195デフォルトの名無しさん
2010/07/02(金) 07:17:53% Prolog もう二ヶ所エラーがあった。書き直しはしません。アーカイブの方を見てください。
http://nojiriko.asia/prolog/c137_877.html
0196デフォルトの名無しさん
2010/07/02(金) 08:00:34% Prolog
http://nojiriko.asia/prolog/j69_215.html
0197デフォルトの名無しさん
2010/07/02(金) 10:33:56% Prolog
main :-
write('温度を入力してください : '),
get_line(Line),
atom_to_term(Line,_温度,_),
write('摂氏または華氏と入力してください : '),
get_line(_摂氏または華氏),
摂氏・華氏温度変換(_摂氏または華氏,_温度,_摂氏または華氏の二,_温度の二)
,
write_formatted('入力された%t%t度は%t%3.1f度です,[_摂氏または華氏,_温度,_摂氏または華氏の二,_温度の二).
摂氏・華氏温度変換(摂氏,_温度,華氏,_華氏) :- 摂氏・華氏変換計算(_温度,_華氏).
摂氏・華氏温度変換(華氏,_温度,摂氏,_摂氏) :- 摂氏・華氏変換計算(_摂氏,_温度).
摂氏・華氏変換計算(_摂氏,_華氏) :- \+(var(_摂氏)),_華氏 is 9 * _摂氏 / 5 + 32,! .
摂氏・華氏変換計算(_摂氏,_華氏) :- \+(var(_華氏)),_摂氏 is 5 * (_華氏 - 32) / 9,!.
0198デフォルトの名無しさん
2010/07/02(金) 12:22:18使用言語:R
ack <- function(m,n){
if (m==0) n+1
else if (n==0) ack(m-1,1)
else ack(m-1,ack(m,n-1))
}
> for(i in 0:8)cat("ack( 3 ,",i,") =",ack(3,i),"\n")
ack( 3 , 0 ) = 5
ack( 3 , 1 ) = 13
ack( 3 , 2 ) = 29
ack( 3 , 3 ) = 61
ack( 3 , 4 ) = 125
ack( 3 , 5 ) = 253
エラー: 評価があまりに深く入れ子になっています。無限の再帰か options(expressions=)?
>
0199デフォルトの名無しさん
2010/07/02(金) 12:44:54使用言語:uwsc
for i=0 to 6
print ack(3,i)
next
function ack(m,n)
if m = 0 then result = n+1
elseif n = 0 then result = ack(m - 1,1)
else result = ack(m - 1,ack(m,n - 1))
fend
5
13
29
61
125
253
509
0200デフォルトの名無しさん
2010/07/02(金) 17:55:15使用言語:Clojure
(defn ack[m n]
(cond (zero? m) (inc n)
(zero? n) (ack (dec m) 1)
:else (ack (dec m) (ack m (dec n)))))
user=> (dotimes [i 9] (printf "(ack 3 %d) -> %d\n" i (ack 3 i)))
(ack 3 0) -> 5
(ack 3 1) -> 13
(ack 3 2) -> 29
(ack 3 3) -> 61
(ack 3 4) -> 125
(ack 3 5) -> 253
(ack 3 6) -> 509
(ack 3 7) -> 1021
(ack 3 8) -> 2045
0201デフォルトの名無しさん
2010/07/02(金) 17:56:43使用言語:Io
Io> ack:=method(m,n,if(m==0,n+1,if(n==0,ack(m-1,1),ack(m-1,ack(m,n-1)))))
Io> 8 repeat(i,ack(3,i)println)
5
13
29
61
125
253
509
1021
==> 1021
0202デフォルトの名無しさん
2010/07/02(金) 19:05:41# [1] 授業単元:C言語
# [2] 問題文(含コード&リンク):switch 文を使用して
# 1. データファイルの新規作成
# 2. データファイルの追加作成
# 3. データファイルの読み込みと表示
# 4. 終了
# をメニュー形式で処理するプログラムを作成せよ。
# ・ ファイル名はキーボードから入力する。
# ・ 1〜4の処理はユーザ関数として定義すること。
# void data_write(void)
# void data_append(void)
# void data_read(void)
# void the_end(void)
# ・1〜4以外の数値が入力されたら再入力させること。
0203デフォルトの名無しさん
2010/07/02(金) 19:06:31# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):
# 正の整数を引数とし、その階乗(n!)を計算して戻り値とする関数
# factを作成して動作を確認せよ。
#
0204デフォルトの名無しさん
2010/07/02(金) 19:13:16# 【 課題 】http://nojiriko.asia/data/993.html にコピーさせていただきました。
# 【 形態 】1. Javaアプリケーション(main()で開始)
# 【 期限 】7月7日
# 【 Ver 】"1.6.0_20"
# 【 補足 】アップしたファイルに先生が途中まで解答したものが含まれているので、なるべくならそれを使用して下さい。
#
0205デフォルトの名無しさん
2010/07/02(金) 21:07:45% Prolog
switch(N,{N:P}) :- !,call(P).
switch(N,{N:P;_}) :- !,call(P).
switch(N,{P1;P2}) :- switch(N,{P1});switch(N,{P2}).
switch述語を使ってメニューを処理する(N,File) :-
switch(N,{1:データファイルの新規作成(File);2:データファイルの追加作成(File);3:データファイルの読み込みと表示(File);4:終了}).
データファイルの新規作成(File) :- open(File,write,Output),close(Output).
データファイルの追加作成(File) :-
write('追加要素を入力しなさい : '),
get_line(Line),
open(File,append,Output),
write_formatted(Output,'%t\n',[Line]),
close(Output).
データファイルの読み込みと表示(File) :-
get_lines(File,Lines),
put_lines(Lines).
終了 :- halt.
0206デフォルトの名無しさん
2010/07/02(金) 21:12:00# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):
# 実数値(xとする)と正の実数値(yとする)を引数としてx^yを戻り値とする
# 関数mypowを作成し、プログラムリストと実行結果を示せ。
# ただし、xとyについてはmain関数でキーボードから入力するようにし、
# 出力結果としては、mypow関数の計算結果と数学関数pow関数の結果を
# 両方表示するようにせよ。また、mypow関数のプロトタイプ宣言も行うこと。
#
0207デフォルトの名無しさん
2010/07/02(金) 21:13:42# [1] 授業単元: プログラム言語
# [2] 問題文(含コード&リンク):
# 10 人の成績を入力し,その順位を成績と共に表示したい。以下の考え方に基づいた
# プログラムを作成せよ。
# 1 ?
# 2次元配列s[10][2] を用意する。
# 2 ?
# i=0〜9 のfor 文を用いてs[i][0] に成績を入力する。
# 3 ?
# s[0][0] とs[j][0],j=0〜9 を比較し,s[0][0] より大きい数値の個数n を数え
# る。その個数+1 が成績順位になるので,s[0][1] にn+1 を代入する。
# 4 ?
# 同様の操作をs[i][0],i=0〜9 に対して行なえば,その成績順位がs[i][1] とし
# て求められるので,あとは成績と共に表示すればよい。
#
0208デフォルトの名無しさん
2010/07/02(金) 22:03:42使用言語:J
f=:[:+.[r.(180%~4*_3 o.1)*]
2 f 30
1.73205 1
1 f 45
0.707107 0.707107
0209デフォルトの名無しさん
2010/07/02(金) 22:38:10% Prolog
fact(N,X) :-
length(L1,N),
fact(L1,L1,LX),
length(LX,X) .
fact(L1,[_],L1) :- !.
fact(L1,[_|R2],LX) :-
findall(L1,member(_,R2),LY),
flat(LY,LZ),
fact(LZ,R2,LX).
0210デフォルトの名無しさん
2010/07/02(金) 22:57:09使用言語:maxima
f(r,d):=(a:d*4.*atan(1)/180,[float(r*cos(a)),float(r*sin(a))]);
(%i21) f(2,30);
(%o21) [1.732050807568877, 1.0]
(%i22) f(1,45);
(%o22) [0.70710678118655, 0.70710678118655]
0211デフォルトの名無しさん
2010/07/03(土) 08:02:22使用言語:J
a=: 30 50 50 70 50 100 90 70 80 60
f=:>:@(+/"1)@(</~)
a,:f a
30 50 50 70 50 100 90 70 80 60
10 7 7 4 7 1 2 4 3 6
0212デフォルトの名無しさん
2010/07/03(土) 11:19:52% Prolog
'10 人の成績を入力し,その順位を成績と共に表示する' :-
'要素数10の変数ならびを二本用意する'(L1,L2),
'L1に成績を入力する'(L1),
'L1の先頭から順位を対応するL2の位置にセット'(1,10,L1,L2),
二本のならびを順に表示(L1,L2).
'要素数10の変数ならびを二本用意する'(L1,L2) :-
length(L1,10),length(L2,10).
'L1に成績を入力する'(L1) :-
for(1,N,10),get_integer(_点数),list_nth(N,L1,_点数),N=10,!.
'L1の先頭から順位を対応するL2の位置にセット'(N,M,L1,L2) :- N > M,!.
'L1の先頭から順位を対応するL2の位置にセット'(N,M,L1,L2) :-
list_nth(N,L1,_点数),list_nth(N,L2,_順位),
count((member(_点数1,L1),_点数1 > _点数),_成績上位者数),_順位 is _成績上位者数 + 1,
N2 is N + 1,
'L1の先頭から順位を対応するL2の位置にセット'(N2,M,L1,L2).
二本のならびを順に表示(L1,L2) :-
for(1,N,10),
list_nth(N,L1,A),list_nth(N,L2,B),
write_formatted('%t,%t位\n',[A,B]),
N=10.
0213デフォルトの名無しさん
2010/07/03(土) 11:28:49使用言語:Io
f:=method(r,d,a:=1 atan*4/180*d;list(a cos*r,a sin*r))
Io> f(2,30)
==> list(1.7320508075688774, 0.9999999999999999)
Io> f(1,45)
==> list(0.7071067811865476, 0.7071067811865475)
0214デフォルトの名無しさん
2010/07/03(土) 17:26:07# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):
# UNIXコマンドのgrep(指定したファイルを読み込み、指定した文字列とマッチする行を出力するコマンド)と同じ動作をするプログラムを実装しなさい。
# ただし、オプションなどの副次的な機能はつけなくてもよい。
#
0215デフォルトの名無しさん
2010/07/03(土) 19:54:29使用言語:Lua
a={30,50,50,70,50,100,90,70,80,60}
b={}
for i,v in pairs(a) do
r=1
for j,w in pairs(a) do
if v<w then r=r+1 end
end
b[i]=r
end
for i,v in pairs(b) do
print(a[i]..' '..v)
end
30 10
50 7
50 7
70 4
50 7
100 1
90 2
70 4
80 3
60 6
0216デフォルトの名無しさん
2010/07/03(土) 22:37:10% Prolog
'極座標(r,θ)の値を入力すると、直交座標(x,y)に変換する'(_r,_θ,_x,_y) :-
_x is _r * cos(4 * atan(1) * _θ / 180),
_y is _r * sin(4 * atan(1) * _θ / 180).
0217デフォルトの名無しさん
2010/07/04(日) 06:18:13# [1] 授業単元:プログラム演習
# [2] 問題文(含コード&リンク):
# 以下のプログラムに、下に示す二つの関数を実装し、組み込みなさい。
# ファイル中に保存するデータはアスキー形式でも、バイナリ形式でもどちらでも構わないものとする。
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10778.txt
# ・構造体Employee型のデータが順に保存されているファイルからデータを読み込む 数。
# ・作成したデータをファイルに書き出す関数。
# 例えば、構造体Employeeを下に示すものと同じ定義にしたとする。
# この構造体に従ったASCII形式のデータベースファイルを読み込み、
# 社員の追加や、給与の変更をした後、同様なデータベースファイルとして保存できるようにしなさい(もちろん、バイナリ形式のファイルにしても構わない)。 # [構造体Employeeの例]
# typedef struct {
# char name[16];
# int age;
# int salary;
# } Employee;
#
# [データベースファイルの例]
# TANAKA 32 620
# SUZUKI 25 500
# CHIBA 35 650
# NAKAMURA 50 1000
# IIDA 45 800
0218デフォルトの名無しさん
2010/07/04(日) 08:26:53# [1] 授業単元: プログラミング実験
# [2] 問題文(含コード&リンク):http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10780.zip
# 【問題3-01】 50点 高速整列算法の挿入法の効率化
# 半乱順列に対する、クイック・マージ・ヒープの3つの高速整列算法の性能を評価する。再帰法を使った実装でよい。
# 計算量は、処理時間で計測する。データ数nを100〜10000の範囲で変更してみる。両対数グラフを描くとよい。
# 各条件で、10000回以上の試行を行い、平均と分散を求め、度数分布表も作成してみる。
# 必要なプログラムを作成し、データを用意する。シミュレーション実験を行い、実行結果を数表やグラフで示し、考察を述べる。
# (1) 確率指定 p の増大による処理時間 t への影響を調べる。各整列算法について、グラフを描き、増加の傾向を考察する。
# (2) 回数指定 m の増大による処理時間 t への影響を調べる。各整列算法について、グラフを描き、増加の傾向を考察する。
# 【問題3-02】 50点 クイックソートの効率化
# クイックソートの効率化を実装し、実行結果を考察する。
# (1) クイックソートは、振分処理の基準値によって、効率性が大きく変わってしまう。片寄った基準値では、非常に効率が悪くなる。
# そこで、部分列の先頭要素を選ぶのではなく、先頭・中央・末尾の要素の平均値または中央値を基準値にする手法が用いられる。
# この手法によって、平均計算量がどれくらい効率化されるか調べよ。
# (2) クイックソートは、データ数 nに対して、n×log(n) 程度の計算量となる
# データ数 が大きいときは効率的であるが、小さいときはかえって効率が悪くなる。
# そこで、データ数が m 以下になった部分列に対して、単純挿入法に切り替える手法が用いられる。
0219デフォルトの名無しさん
2010/07/04(日) 08:28:30# どなたか教えてください。ずっと考えてたけど、答えがわかりませんorz。
#
# <標準関数>文字列と削除文字列を入力し、文字列中から削除文字列を削除しなさい。
# ※配列の使用は2つだけ。
# 例) 文字列入力→ABCDEFAABCDABC
# 削除文字列→ABC
# 結果文字列→DEFAD
#
# どなたか教えてください、お願いします。
0220デフォルトの名無しさん
2010/07/04(日) 10:01:14使用言語:J
f=:dyad def 'y{~<<<,(i.#x)+/~I.x E.y'
'ABC' f 'ABCDEFAABCDABC'
DEFAD
'ABA' f 'ABABABC'
BC
二番目の例のように検索文字列が重なった場合どこまで消す?
0221デフォルトの名無しさん
2010/07/04(日) 13:25:52# プログラム言語で以下の集約を定義しなさい。
# SELECT CASE pref_name
# WHEN '徳島' THEN '四国'
# WHEN '香川' THEN '四国'
# WHEN '愛媛' THEN '四国'
# WHEN '高知' THEN '四国'
# WHEN '福岡' THEN '九州'
# WHEN '佐賀' THEN '九州'
# WHEN '長崎' THEN '九州'
# ELSE 'その他' END AS district,
# SUM(population)
# FROM PopTbl
# GROUP BY CASE pref_name
# WHEN '徳島' THEN '四国'
# WHEN '香川' THEN '四国'
# WHEN '愛媛' THEN '四国'
# WHEN '高知' THEN '四国'
# WHEN '福岡' THEN '九州'
# WHEN '佐賀' THEN '九州'
# WHEN '長崎' THEN '九州'
# ELSE 'その他' END;
0222デフォルトの名無しさん
2010/07/04(日) 15:20:36% Prolog
文字列中から削除文字列を除去する(_文字列,_削除する文字列,_削除された文字列) :-
sub_atom(_文字列,A,Len,B,_削除する文字列),
sub_atom(_文字列,0,A,_,S1),
sub_atom(_文字列,A+Len,B,_,S2),
文字列中から削除文字列を削除する(S2,_削除する文字列,S3),
concat_atom([S1,S3],_削除された文字列).
文字列中から削除文字列を除去する(S,_,S).
% >>220 の第二番目の解釈、挑戦してみたが、結構複雑。
0223デフォルトの名無しさん
2010/07/04(日) 15:23:07# [1] 授業単元:プログラミング
# [2]問題文:
# ファイルseiseki.txt から氏名と点数を読み込んで、成績順に並べ替え、結果を画
# 面に表示するプログラムを作成せよ。
# ・氏名は2次元配列、点数は1次元配列に格納する。
# ・ データの並べ替えには単純挿入法、単純選択法またはバブルソートを使用する。
# ・ 文字列 x[]と文字列y[]の入れ替えは、文字列操作関数strcpy を用いて行う。
# strcpy(z,x); strcpy(x,y); strcpy(y,z);
#
0224デフォルトの名無しさん
2010/07/04(日) 16:14:09# [1] 授業単元:方程式の解
# [2] 問題文(含コード&リンク):方程式exp(-x^2/2)=0.5の解を求める
#
0225デフォルトの名無しさん
2010/07/04(日) 18:38:36# 【 課題 】テキストファイルを読み込み行毎に出現頻度を統計するプログラムを作れ
# 【 形態 】1. Javaアプリケーション(main()で開始)
# 【 GUI 】4. 制限なし
# 【 期限 】7月6日
# 【 Ver 】"1.6.0_20"
# 【 補足 】
# 例:
# ああA1111あa1AAAa
# BBBbいbいbB2
#
# という2行のテキストファイルであれば
#
# 1. 1,5 A,4 あ,3 a,2
# 2. B,4 b,3 い,2 2,1
#
# という風に表示します。
0226デフォルトの名無しさん
2010/07/04(日) 18:43:07# 【 課題 】()が使える電卓に改造しなさい。(再帰メソッド使用)
# 【 形態 】2. Applet
# 【 GUI 】2. Swing
# 【 期限 】7/5
# 【 Ver 】1.6.0_15
# 【 補足 】()以外の部分は完成しているのですが、()の部分をどう作って
# いいかわからず困っています。「再帰メソッド」というのも色々調べてみましたが、
# 上手く理解できません。以下がソースです。
# http://nojiriko.asia/data/s0.txt にコピーさせていただきました。
0227デフォルトの名無しさん
2010/07/04(日) 23:31:37% Prolog (その一)
テキストファイルを読み込み行毎に出現頻度を統計する(_テキストファイル) :-
get_lines(_テキストファイル,Lines),
行毎に出現頻度を統計する(Lines,_行統計ならび),
行統計ならびを表示する(_行統計ならび).
行毎に出現頻度を統計する([],[]) :- !.
行毎に出現頻度を統計する([_行文字列|R1],[_降順に整列した出現頻度ならび|R2]) :-
文字毎の出現頻度を調べる(Chars,[],_出現頻度ならび),
降順に整列(_出現頻度ならび,_降順に整列した出現頻度ならび),
行毎に出現頻度を統計する(R1,R2).
文字毎の出現頻度を調べる([],_出現頻度ならび,_出現頻度ならび) :-
文字毎の出現頻度を調べる([A|R1],L1,_出現頻度ならび) :-
\+(member([_,A],L1)),
文字毎の出現頻度を調べる(R1,[[1,A]|L1],_出現頻度ならび),!.
文字毎の出現頻度を調べる([A|R1],L1,_出現頻度ならび) :-
append(L0,[[N1,A]|L2],L1),
N2 is N1 + A,
append(L1,[[N2,A]|L2],L3),
文字毎の出現頻度を調べる(R1,L3,_出現頻度ならび),!.
0228デフォルトの名無しさん
2010/07/04(日) 23:34:57% Prolog (その二)
降順に整列(L1,L2) :- sort(L1,L3),reverse(L3,L2).
行統計ならびを表示する(_行統計ならび) :-
append(L0,[_行統計|L1],_行統計ならび),
length(L0,Len),
_行番号 is Len + 1,write('%t.'),
行の統計を表示する(_行統計),
L1 = [].
行の統計を表示する([]) :- write('\n'),!.
行の統計を表示する([[N,A]|R]) :-
write_formatted(' %t,%t',[A,N]),
行の統計を表示する(R).
0229デフォルトの名無しさん
2010/07/04(日) 23:37:49# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):
# 次式の値を返す関数を作成せよ。
# f(x)=e^{-x} cos(2πx)
# その関数を用いて0≦x≦3の間で0.1刻みで計算し、結果をリダイレクトで
# ファイルに記録せよ。その結果をgnuplotでグラフにして示せ。
#
0230デフォルトの名無しさん
2010/07/05(月) 00:18:05% Prolog
地方で集約する(_地方,_人口) :-
findsetof(_地方,(
'PopTbl'(_pref_name,_population),
地方(_地方,_pref_name)),
L1),
append(_,[_地方|_],L1),
findsum(_population,(
'PopTbl'(_pref_name,_population),
地方(_地方,_pref_name)),
_人口).
地方(四国,徳島).
地方(四国,香川).
地方(四国,愛媛).
地方(四国,高知).
地方(九州,福岡).
地方(九州,佐賀).
地方(九州,長崎).
0231デフォルトの名無しさん
2010/07/05(月) 04:59:32% Prolog
program :-
M is truncate((3 - 0) / 0.1),
for(0,N,M),
_x is N * 0.1,
Y is exp(1) ^ (-1 * _x) * cos(2 * pi * _x),
write_formatted('%t\n',[Y]),
N = M .
0232デフォルトの名無しさん
2010/07/05(月) 05:30:09% Prolog
[IF/Prolog]# prolog -c temp.pro >temp.txt
[SWI-Prolog]# pl -s temp.pro >temp.txt
% temp.pro
program :-
'c137_501:f(x)=e^{-x} cos(2πx) その関数を用いて0≦x≦3の間で0.1刻みで計算'.
'c137_501:f(x)=e^{-x} cos(2πx) その関数を用いて0≦x≦3の間で0.1刻みで計算' :-
M is truncate((3 - 0) / 0.1),
for(0,N,M),
_x is N * 0.1,
Y is exp(1) ^ (-1 * _x) * cos(2 * pi * _x),
write_formatted('%t\n',[Y]),
N = M .
0233デフォルトの名無しさん
2010/07/05(月) 05:34:16# [1]授業単元:プログラミング演習
# [2]問題文;離散探索木(26進)と外部ハッシュ法の比較(探索関数)
# キー: 文字列
# 使用ファイル: wordE100KR.dat
# 上記ファイルを読み込み、通常の配列に格納する。
# この配列から要素を読み込み、分離連鎖法および離散探索木(26進)を生成する。
# 格納された要素と同一の要素集合すなわち、配列に格納された用語集合に対して、1万語毎に探索を行い、照合回数、および探索時間を測定する。
# 結果として、照合回数について20個のデータ(2×10)、同様に探索時間について20
個のデータ(2×10)が得られる。
# これらのデータをExcelに格納し、表、グラフを作成し、分析せよ。
0234デフォルトの名無しさん
2010/07/05(月) 06:00:39% Prolog "-g program " が必要だった。
[SWI-Prolog]# pl -s temp.pro -g program >temp
0235デフォルトの名無しさん
2010/07/05(月) 12:42:13# [1] 授業単元: C言語プログラミング
# [2] 問題文メモリや実行時間の許容範囲内の、最大完全数、最大友愛数、および最大婚約数を算出プログラムを作成
#
0236デフォルトの名無しさん
2010/07/05(月) 12:46:03# 【 課題 】部分一致文字列の探索関数の比較(配列‐二分探索とTrie(26進))
# 作成関数: 追加、探索
# キー: 文字列
# 使用ファイル: wordE100KR.dat
# ・二分探索法を改良し、前方一致(例: info?)を実現する関数を作成する。
# ・多分探索木の巡回関数に基づき、部分木出力関数をTrie(26進)に適用し、前方一致(例: info?)を実現する関数(部分木巡回‐出力関数)を作成する。
# ・特定の部分文字集合(100)に対し、比較(照合)回数、および出力時間を測定し、これらの結果を、表、グラフに表し、分析する。
# 【 形態 】1. Javaアプリケーション(main()で開始)
# 【 GUI 】4. 制限なし
# 【 期限 】7月12日
# 【 Ver 】1.6.0_15
# 【 補足 】参照ファイルはアップしてあります。
0237デフォルトの名無しさん
2010/07/05(月) 15:08:39% Prolog (その一)
分離連鎖法による文字列の検索(_文字列,_付加情報) :-
atom_codes(_文字列,Codes),
加算(Codes,Y),
_ハッシュ値 is truncate(Y) mod 26,
分離連鎖(_ハッシュ値,L),
append(_,[[_文字列|_付加情報]|_],L).
分離連鎖法による文字列の追加(_文字列,_付加情報) :-
atom_codes(_文字列,Codes),
加算(Codes,Y),
_ハッシュ値 is truncate(Y) mod 26,
retract(分離連鎖(_ハッシュ値,L)),
asserta(分離連鎖(_ハッシュ値,[[_文字列|_付加情報]|L])).
分離連鎖(0,[]). 分離連鎖(1,[]). 分離連鎖(2,[]).
分離連鎖(3,[]). 分離連鎖(4,[]). 分離連鎖(5,[]).
分離連鎖(6,[]). 分離連鎖(7,[]). 分離連鎖(8,[]).
分離連鎖(9,[]). 分離連鎖(10,[]). 分離連鎖(11,[]).
分離連鎖(12,[]). 分離連鎖(13,[]). 分離連鎖(14,[]).
分離連鎖(15,[]). 分離連鎖(16,[]). 分離連鎖(17,[]).
分離連鎖(18,[]). 分離連鎖(19,[]). 分離連鎖(20,[]).
分離連鎖(21,[]). 分離連鎖(22,[]). 分離連鎖(23,[]).
0238デフォルトの名無しさん
2010/07/05(月) 15:24:59% Prolog 最後一行が千切れてしまった。
分離連鎖(24,[]). 分離連鎖(25.[]).
0239デフォルトの名無しさん
2010/07/05(月) 15:39:40% Prolog
分離連鎖の初期化(_ハッシュ表の長さ) :-
abolish(分離連鎖/2),
abolish(ハッシュ表の長さ/1),
assertz(ハッシュ表の長さ(_ハッシュ表の長さ)),
M is _ハッシュ表の長さ - 1,
for(0,N,M),
assertz(分離連鎖(N,[])),
N = M,!.
分離連鎖法による文字列の検索(_文字列,_付加情報) :-
atom_codes(_文字列,Codes),
加算(Codes,Y),
ハッシュ表の長さ(_ハッシュ表の長さ),
_ハッシュ値 is truncate(Y) mod _ハッシュ表の長さ,
分離連鎖(_ハッシュ値,L),
append(_,[[_文字列|_付加情報]|_],L).
分離連鎖法による文字列の追加(_文字列,_付加情報) :-
atom_codes(_文字列,Codes),
加算(Codes,Y),
ハッシュ表の長さ(_ハッシュ表の長さ),
_ハッシュ値 is truncate(Y) mod _ハッシュ表の長さ,
retract(分離連鎖(_ハッシュ値,L)),
asserta(分離連鎖(_ハッシュ値,[[_文字列|_付加情報]|L])).
0240デフォルトの名無しさん
2010/07/05(月) 17:27:48使用言語:J
load 'plot'
f=:monad def '(^ -y) * cos 2p1 * y'
smoutput '10.5'(8!:2)(,.f)"0 range 0 3 0.1
exit ''
上のコードをコンソール版で実行すれば、標準出力に下のようなデータが出力される。
(8!:2)のformatは、マイナス符号を変換してくれるようだ。
0.00000 1.00000
0.10000 0.73203
0.20000 0.25300
0.30000 -0.22893
0.40000 -0.54230
:
2.90000 0.04451
3.00000 0.04979
J言語のグラフ機能をつかう場合は
load 'plot'
plot (range 0 3 0.1) ; '(^ -y) * cos 2p1 * y'
0241デフォルトの名無しさん
2010/07/05(月) 18:18:25# 【 課題 】1.B木を実現するプログラムを作成しなさい。ただし、プログラムの
最初で各節点が持つ最大の子の数(m)を入力して、プログラムを開始する。
0242デフォルトの名無しさん
2010/07/05(月) 21:09:35# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク): 四則演算と平方根を求める事が出来る電卓プログラムを作成せよ.
#
0243デフォルトの名無しさん
2010/07/06(火) 04:13:13# [1] 授業単元: Visual Studio 入門
# [2] 問題文 3問ほどあるのでリンクを
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10782.txt
#
# 問題1
# 下に示すように,非負の整数値を読み込んで,その数を逆順に表示するプログラムを作成せ
# よ.なお,負の値を読み込んだ場合は,再入力を促すメッセージを表示すること.
#
#
# 非負の整数を入力してください: 1963
# 1963 を逆から読むと3691 です.
#
0244デフォルトの名無しさん
2010/07/06(火) 04:14:05# [1] 授業単元: Visual Studio 入門
# [2] 問題文 3問ほどあるのでリンクを
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10782.txt
#
# 問題2
# 下に示すように,非負の整数を次々と読み込んでいき,各値の二乗値の和を表示するプログ
# ラムを作成せよ.なお,整数の読み込みは,負の整数を読み込んだ段階で終了するものとし,
# その数の二乗値の和は加算しないものとする.
#
# 整数を入力してください
# 整数1 : 3
# 整数2 : 5
# 整数3 : -1
# 二乗値の合計は34 です.
#
0245デフォルトの名無しさん
2010/07/06(火) 04:15:18# [1] 授業単元: Visual Studio 入門
# [2] 問題文 3問ほどあるのでリンクを
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10782.txt
#
# 問題3
# 下に示すように,行数と列数を読み込み,1 行目には1234567890…を列数の個数だけ,2 行
# 目には2345678901…を列数の個数だけ,…と表示するプログラムを作成せよ.
#
# 何行ですか: 7
# 何列ですか: 12
# 123456789012
# 234567890123
# 345678901234
# 456789012345
# 567890123456
# 678901234567
# 789012345678
0246デフォルトの名無しさん
2010/07/06(火) 04:17:51# [1] 授業単元: Visual Studio 入門
# [2] 問題 半乱順列の関数作成
0247デフォルトの名無しさん
2010/07/06(火) 04:19:01# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):data.txtに書かれている氏名と成績を読み込み、氏名を2次元配列、成績を1次元配列に格納せよ。
#
0248デフォルトの名無しさん
2010/07/06(火) 04:29:25# TABLE test
# id | data
# ---+------
# 100 | AAA
#
# TABLE hoge
# id | value
# ---+------
# 100 | 10
# 100 | 20
#
# TABLE 100
# id |val1| val2
# ---+---+----
# 100 | 20 | 40
#
# SELECT a.id, test.data, a.cnt + b.cnt + c.cnt
# FROM
# (SELECT id, SUM( aa.val1 ) cnt FROM (SELECT id, val1 FROM `100`)aa)a,
# (SELECT id, SUM( bb.val2 ) cnt FROM (SELECT id, val2 FROM `100`)bb)b,
# (SELECT id, SUM( value ) cnt FROM hoge WHERE id = 100)c,test
# WHERE a.id = c.id AND test.id = 100
#
# 欲しい結果
# id data a.cnt + b.cnt + c.cnt
# ----------------------------
# 100 AAA 180
#
0249デフォルトの名無しさん
2010/07/06(火) 05:01:23# 宿題片づけスレで省られたのでお願いします。
# C言語初級者、画像処理初心者です。
#
# [1] 授業単元:画像処理
# [2] 問題文(含コード&リンク):16×16サイズの白黒ビットマップ画像を読み込んで、
# 上下反転させた画像をビットマップで保存するプログラムを作成。
#
0250デフォルトの名無しさん
2010/07/06(火) 06:51:56% Prolog
'非負の整数値を読み込んで,その数を逆順に表示する' :-
催促付き整数入力('非負の整数を入力してください: ',N),
number_chars(N,L1),
reverse(L1,L2),
number_chars(L2,N2),
write_formatted(' %t を逆から読むと%t です.\n',[N,N2]).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'非負の整数値を読み込んで,その数を逆順に表示する' :-
催促付き整数入力('非負の整数を入力してください: ',N),
非負の整数値から逆順整数を得る(N,0,N2),
write_formatted(' %t を逆から読むと%t です.\n',[N,N2]).
非負の整数値から逆順整数を得る(0,X,X).
非負の整数値から逆順整数を得る(N,Y1,X) :-
Y2 is Y1 * 10 + (N mod 10),
N1 is N // 10,
非負の整数値から逆順整数を得る(N1,Y2,X).
0251デフォルトの名無しさん
2010/07/06(火) 07:08:51% Prolog
'非負の整数を次々と読み込んでいき,各値の二乗値の和を表示する' :-
write('整数を入力してください\n'),
findsum(S,(非負の整数を次々と読み込んでいき(1,X),(X < 0,!,fail;S is X *X)),_二乗和),
write_formatted('二乗値の合計は%t です.\n',[_二乗和]).
非負の整数を次々と読み込んでいき(N,X) :-
write_formatted('整数%t : ',[N]),get_integer(X).
非負の整数を次々と読み込んでいき(N,X) :-
N2 is N + 1,
非負の整数を次々と読み込んでいき(N2,X).
0252デフォルトの名無しさん
2010/07/06(火) 07:59:21% Prolog
'行数と列数を読み込み,1 行目には1234567890…を列数の個数だけ,2 行目には2345678901…を列数の個数だけ,…と表示する' :-
'行数と列数を読み込み(_行数,_列数),
'1から始める数字循環を生成'(_行数,_列数,L),
length(L1,_列数),
append(L0,L2,L),
行数分表示する(L0,L1,L2).
行数と列数を読み込み(_行数,_列数) :-
write('行数を入力してください : '),get_integer(_行数),
write('列数を入力してください : '),get_integer(_列数).
'1から始める数字循環を生成'(_行数,_列数,L) :-
M is _行数 + _列数,
'数字循環を生成'(1,M,L).
'数字循環を生成'(N,M,[]) :- N > M,!.
'数字循環を生成'(N,M,[X|R]) :- X is N mod 10,N2 is N + 1,'数字循環を生成'(N2,M,R).
行数分表示する(L0,L0,L2) :- !.
行数分表示する(L0,L1,L2) :-
append(L1,_,L2),
concat_atom(L1,S),
write_formatted('%t\n',[S]),
fail.
0253デフォルトの名無しさん
2010/07/06(火) 08:04:52% Prolog 行数分表示する/3に誤りがあった。
'行数と列数を読み込み,1 行目には1234567890…を列数の個数だけ,2 行目には2345678901…を列数の個数だけ,…と表示する' :-
'行数と列数を読み込み(_行数,_列数),
'1から始める数字循環を生成'(_行数,_列数,L),
length(L1,_列数),
append(L0,L2,L),
行数分表示をする(_行数,L0,L1,L2).
行数と列数を読み込み(_行数,_列数) :-
write('行数を入力してください : '),get_integer(_行数),
write('列数を入力してください : '),get_integer(_列数).
'1から始める数字循環を生成'(_行数,_列数,L) :-
M is _行数 + _列数,
'数字循環を生成'(1,M,L).
'数字循環を生成'(N,M,[]) :- N > M,!.
'数字循環を生成'(N,M,[X|R]) :- X is N mod 10,N2 is N + 1,'数字循環を生成'(N2,M,R).
行数分表示する(_行数,L0,_,_) :- length(L0,_行数),!.
行数分表示する(_,L0,L1,L2) :-
append(L1,_,L2),
concat_atom(L1,S),
write_formatted('%t\n',[S]),
fail.
0254デフォルトの名無しさん
2010/07/06(火) 08:28:59% Prolog
'欲しい結果 id data a.cnt + b.cnt + c.cnt' :-
test(_id,_data),
findsum(U,(findsum(_value,hoge(_id,_value),U1),findsum(_val3,('100'(_id,_val1,_val2),_val3 is _val1 + _val2),U2),U is U1 + U2),S).
write('id data a.cnt + b.cnt + c.cnt\n'),
write_formatted('%t %t %t\n',[_id,_data,S]),!.
0255デフォルトの名無しさん
2010/07/06(火) 10:45:25% Prolog 例によって、配列をリストに変更して解釈。
'data.txtに書かれている氏名と成績を読み込み、氏名を2次元配列、成績を1次元配列に格納する' :-
get_split_lines('data.txt',[' '],LL),
'氏名を2次元配列、成績を1次元配列に格納する'(LL,_氏名ならび,_成績ならび
),
氏名ならび・成績ならびを格納する(_氏名ならび,_成績ならび).
'氏名を2次元配列、成績を1次元配列に格納する'([],[],[]).
'氏名を2次元配列、成績を1次元配列に格納する'([[_氏名,_成績]|R1],[_氏名文字ならび|R2],[_成績|R3]) :-
atom_chars(_氏名,_氏名文字ならび),
'氏名を2次元配列、成績を1次元配列に格納する'(R1,R2,R3).
氏名ならび・成績ならびを格納する(_氏名ならび,_成績ならび) :-
assertz(氏名ならび(_氏名ならび)),
assertz(成績ならび(_成績ならび)).
0256デフォルトの名無しさん
2010/07/06(火) 10:54:55% Prolog 表示方法をちょっと工夫してみる。
'data.txtに書かれている氏名と成績を読み込み、氏名を2次元配列、成績を1次元配列に格納する' :-
get_split_lines('data.txt',[' '],LL),
'氏名を2次元配列、成績を1次元配列に格納する'(LL,_氏名ならび,_成績ならび,
氏名ならび・成績ならびを格納する(_氏名ならび,_成績ならび).
'氏名を2次元配列、成績を1次元配列に格納する'([],[],[]).
'氏名を2次元配列、成績を1次元配列に格納する'([[_氏名,_成績]|R1],[_氏名文字ならび|R2],[_成績|R3]) :-
atom_chars(_氏名,_氏名文字ならび),
'氏名を2次元配列、成績を1次元配列に格納する'(R1,R2,R3).
氏名ならび・成績ならびを格納する(_氏名ならび,_成績ならび) :-
assertz(氏名ならび(_氏名ならび)),
assertz(成績ならび(_成績ならび)).
0257デフォルトの名無しさん
2010/07/06(火) 10:59:41% Prolog 失敗。やり直し。やはり、うまくいかない。
'data.txtに書かれている氏名と成績を読み込み、氏名を2次元配列、成績を1次元配列に格納する' :-
get_split_lines('data.txt',[' '],LL),
'氏名を2次元配列、成績を1次元配列に格納する'(LL,_氏名ならび,_成績ならび,
氏名ならび・成績ならびを格納する(_氏名ならび,_成績ならび).
'氏名を2次元配列、成績を1次元配列に格納する'([],[],[]).
'氏名を2次元配列、成績を1次元配列に格納する'([[_氏名,_成績]|R1],[_氏名文字ならび|R2],[_成績|R3]) :-
atom_chars(_氏名,_氏名文字ならび),
'氏名を2次元配列、成績を1次元配列に格納する'(R1,R2,R3).
氏名ならび・成績ならびを格納する(_氏名ならび,_成績ならび) :-
assertz(氏名ならび(_氏名ならび)),
assertz(成績ならび(_成績ならび)).
0258デフォルトの名無しさん
2010/07/06(火) 11:04:03Prologのプログラムを読む場合の注意は、引数の中にある論理変数の変化に集中するから、
そこの部分の桁位置を揃えるようにしてみたい。>>256->>257は失敗。
0259デフォルトの名無しさん
2010/07/06(火) 12:07:16% Prolog 全体として書の雰囲気を持つ算譜にしたい。
http://nojiriko.asia/prolog/c137_535.html
0260デフォルトの名無しさん
2010/07/06(火) 16:46:08# 同一テーブルで、自分自身を除く前回の履歴を結合したいです
# SQLServer2005
#
# 設備
# X
#
# 生産履歴
# 履歴ID 設備 製造ロット ロット枝番 状態
# 10 X 002 2 生産中
# 09 X 002 1 完了
# 08 X 001 1 完了
#
# 設備と生産履歴から設備稼働状況を表示
# SELECT * FROM 設備
# LEFT OUTER JOIN 生産履歴
# ON 設備.設備=生産履歴.設備
# AND 生産履歴.状態='生産中'
#
# 設備稼働状況 ※これに前回ロットを表示したい。
# 設備 製造ロット ロット枝番 前回ロット
# X NULL NULL 002
# となる。
#
0261デフォルトの名無しさん
2010/07/06(火) 16:47:50#
# LEFT OUTER JOIN
# SELECT MAX(製造ロット) AS MAX製造ロット
# FROM 生産履歴 生産履歴前回
# WHERE 製造ロット<>生産履歴.製造ロット※2
# GROUP BY 設備
#
# ※2で引っかかる。
# どなたか回答よろしくお願いします。
0262デフォルトの名無しさん
2010/07/06(火) 17:24:08# 1
# 12
# 123
# 1234
# 12345
# このプログラミング作成したい。
0263デフォルトの名無しさん
2010/07/06(火) 17:33:45% Prolog
'1からの文字連鎖によって文字列を成長させながら表示する' :-
文字連鎖によって文字列を成長させながら表示する('1').
文字連鎖によって文字列を成長させながら表示する(_文字列) :- write_formatted('%t\n',_文字列]).
文字連鎖によって文字列を成長させながら表示する(_文字列) :-
sub_atom(_文字列,_,1,1,_最後の文字),
文字連鎖(_最後の文字,_次の文字),
atom_concat(_文字列,_次の文字,_付加された文字列),
文字連鎖によって文字列を成長させながら表示する(_付加された文字列).
文字連鎖('1','2'). 文字連鎖('2','3'). 文字連鎖('3','4'). 文字連鎖('4','5'). 文字連鎖('5','6').
文字連鎖('6','7'). 文字連鎖('7','8'). 文字連鎖('8','9'). 文字連鎖('9','0'). 文字連鎖('0','1').
0264デフォルトの名無しさん
2010/07/06(火) 17:41:48% Prolog 一ヶ所、間違い。"["が抜けた。
'1からの文字連鎖によって文字列を成長させながら表示する' :-
文字連鎖によって文字列を成長させながら表示する('1').
文字連鎖によって文字列を成長させながら表示する(_文字列) :- write_formatted('%t\n',[_文字列]).
文字連鎖によって文字列を成長させながら表示する(_文字列) :-
sub_atom(_文字列,_,1,1,_最後の文字),
文字連鎖(_最後の文字,_次の文字),
atom_concat(_文字列,_次の文字,_付加された文字列),
文字連鎖によって文字列を成長させながら表示する(_付加された文字列).
文字連鎖('1','2'). 文字連鎖('2','3'). 文字連鎖('3','4'). 文字連鎖('4','5'). 文字連鎖('5','6').
文字連鎖('6','7'). 文字連鎖('7','8'). 文字連鎖('8','9'). 文字連鎖('9','0'). 文字連鎖('0','1').
0265デフォルトの名無しさん
2010/07/06(火) 18:08:31% Prolog 終了指定を忘れてたw
:- op(600,xfx,が). :- op(700,xf,回現れるまで).
'ある文字がN回現れるまで1からの文字連鎖によって文字列を成長させながら表示する' :-
文字連鎖によって文字列を成長させながら表示する('5' が 1 回現れるまで,'1').
文字連鎖によって文字列を成長させながら表示する(_ が 0 回現れるまで,_) :- !.
文字連鎖によって文字列を成長させながら表示する(A が N 回現れるまで,_文字列) :-
write_formatted('%t\n',_文字列]).
文字連鎖によって文字列を成長させながら表示する(A が N 回現れるまで,_文字列) :-
sub_atom(_文字列,_,1,1,A),
文字連鎖(A,_次の文字),
atom_concat(_文字列,_次の文字,_付加された文字列),
N1 is N - 1,
文字連鎖によって文字列を成長させながら表示する(A が N1 回現れるまで,_付加された文字列).
文字連鎖によって文字列を成長させながら表示する(A が N 回現れるまで,_文字列) :-
sub_atom(_文字列,_,1,1,_最後の文字),
文字連鎖(_最後の文字,_次の文字),
atom_concat(_文字列,_次の文字,_付加された文字列),
文字連鎖によって文字列を成長させながら表示する(A が N 回現れるまで,_付加された文字列).
文字連鎖('1','2'). 文字連鎖('2','3'). 文字連鎖('3','4'). 文字連鎖('4','5'). 文字連鎖('5','6').
文字連鎖('6','7'). 文字連鎖('7','8'). 文字連鎖('8','9'). 文字連鎖('9','0'). 文字連鎖('0','1').
0266デフォルトの名無しさん
2010/07/06(火) 19:32:02% Prolog さらに誤りがあったのでこの修正版は
http://nojiriko.asia/prolog/unix_shitsumon_83.html を参照してください。
% 12345 を数値と解釈するならば、
:- op(600,xfx,が).
:- op(700,xf,回現れるまで).
'ある数値がN回現れるまで1からの数値連鎖によって数値列を成長させながら表示する'(_ が 0 回現れるまで,_) :- !.
'ある数値がN回現れるまで1からの数値連鎖によって数値列を成長させながら表示する'(A が N 回現れるまで,M) :-
A is (M + 1) mod 10,
M10 is M * 10,
M2 is M10 + M1,
write_formatted('%t',[M2]),
N1 is N - 1,
'ある数値がN回現れるまで1からの数値連鎖によって数値列を成長させながら表示する'(A が N1 回現れるまで,M2).
'ある数値がN回現れるまで1からの数値連鎖によって数値列を成長させながら表示する'(A が N 回現れるまで,M) :-
M1 is (M + 1) mod 10,
M10 is M * 10,
M2 is M10 + M1,
write_formatted('%t',[M2]),
N1 is N - 1,
'ある数値がN回現れるまで1からの数値連鎖によって数値列を成長させながら表示する'(A が N 回現れるまで,M2).
0267デフォルトの名無しさん
2010/07/06(火) 20:10:02% Prolog
:- op(300,xf,回).
:- op(700,xf,切る).
半乱順列の作成(_置換指定,_対象ならび,_半乱順列ならび) :-
整列(_対象ならび,_整列したならび),
整列したならび乱す(_置換指定,_整列したならび,_半乱順列ならび).
整列したならび乱す(最初と最後の要素を入れ替える,L1,L2) :-
[A|R]=L3,
append(L4,[B],R),
append([B|L4],[A],L2),!.
整列したならびを乱す(0 回 切る,L,L) :- !.
整列したならびを乱す(N 回 切る,L1,L2) :-
length(L1,Len),
N1 is random mod Len,
N2 is random mod Len,
ならびの交換(N1,N2,L1,L3),
N1 is N - 1,
整列したならびを乱す(N1 回 切る,L1,L2).
整列したならびを乱す([],L,L) :- !.
整列したならびを乱す([[N1,N2]|R],L1,L2) :-
ならびの交換(N1,N2,L1,L3),
整列したならびを乱す(R,L3,L2).
0268デフォルトの名無しさん
2010/07/06(火) 22:29:47# コインの種類(例えば、1円、5円、8円、10円、15円)に対して、金額を入力すると
# その金額を払うのに最も枚数が少なくて済むコインの出し方を出力してくれる
# プログラム。
# 例えば、23円と入力すると、「10円1枚・8円1枚・5円1枚の計3枚」と出力できるプログラムです。
# ただし、「10円2枚・1円3枚の計5枚」は「最小」ではないため、上の出力を優先します。
# 入力された金額が負の場合は、「Error」を出力するようにします。
# そこで、下のようなプログラムを書いたのですが、うまく起動しません。
# このプログラムを、上の出力例のように出力してくれるように書きなおしてくれませんか??
# 下のプログラムでは合計枚数を出力する部分しか書いてません。
# ちなみに、再帰を使ってプログラミングお願いします。
0269デフォルトの名無しさん
2010/07/07(水) 05:08:38# [1] 授業単元:プログラミング演習
# Q1. 問題文:4つの整数を入力し、それらを要素とする行列を求め、その値を以下のような
# 形式で表示するプログラムを作成せよ。
#
# 例 100 20 30 40と入力すれば
# | 100 20 | =3400
# | 30 40 | と表示される
#
# Q.2ディスカウントストアでどの商品でも5個以上買えば1割引、10個以上で2割引、20個以上で
# 4割引となっていた。キーボードから買う商品の単価と個数を入力し、合計金額を計算するプログラミングを
# 作成せよ。
#
0270デフォルトの名無しさん
2010/07/07(水) 07:32:53% Prolog Q1
'4つの整数を入力し、それらを要素とする行列を求め、行列とその値を表示する' :-
get_split_line([' ',','],[A,B,C,D]),
正方行列の行列式の値([[A,B],[C,D]],_行列式の値),
write_formatted(' |%3d %3d| = %t\n',[A,B,_行列式の値]),
write_formatted(' |%3d %3d|\n',[C,D]).
正方行列の行列式の値(_正方行列,_行列式の値) :-
ガウス行列に変形(_正方行列,X,Y),
'行列式|C|の値'(X,Z1),
ならびの積(Y,Z2),
_行列式の値 is Z1 // Z2.
ならびの積([A],A) :- !.
ならびの積([A|R],X) :-
ならびの積(R,Y),
X is A * Y.
'行列式|C|の値'(_行列,_値) :-
length(_行列,Len),
findall(U,(for(1,N,Len),list_nth(N,_行列,_行),list_nth(N,_行,U)),L),
ならびの積(L,_値).
0271デフォルトの名無しさん
2010/07/07(水) 07:52:13% Prolog Q2
:- op(700,xfx,は).
'ディスカウントストアでどの商品でも5個以上買えば1割引、10個以上で2割引、20個以上で4割引となっていた。キーボードから買う商品の単価と個数を入力し、合計金額を計算する' :-
write('商品単価と個数を入力してください : '),
get_split_line([' ',','],[_単価,_個数]),
合計金額を計算する(_単価,_個数,_合計金額).
合計金額を計算する(_単価,_個数,_合計金額) :-
abs(_個数) < 5,
_合計金額 は 四捨五入(_単価 * _個数).
合計金額を計算する(_単価,_個数,_合計金額) :-
abs(_個数) >= 5,abs(_個数) < 10,
_合計金額 は 四捨五入(_単価 * _個数 * (1 - 0.1)).
合計金額を計算する(_単価,_個数,_合計金額) :-
abs(_個数) >= 10,abs(_個数) < 20,
_合計金額 は 四捨五入(_単価 * _個数 * (1 - 0.2)).
合計金額を計算する(_単価,_個数,_合計金額) :-
abs(_個数) >= 20,
_合計金額 は 四捨五入(_単価 * _個数 * (1 - 0.4)).
_値 は 四捨五入(_式) :- _値_1 は _式,_値 is truncate(floor(_値_1 + 0.5)),!.
_値 は _式 :- _値 is _式.
0272デフォルトの名無しさん
2010/07/07(水) 08:33:41% Prolog 訂正。
:- op(700,xfx,は).
_値 は 四捨五入(_式) :-
_値_1 は _式,
_値_1 >= 0.0,
_値 is truncate(floor(_値_1 + 0.5)),!.
_値 は 四捨五入(_式) :-
_値_1 は _式,
_値_1 < 0.0,
_値 is truncate(ceiling(_値_1 - 0.5)),!.
_値 は _式 :-
_値 is _式.
0273デフォルトの名無しさん
2010/07/07(水) 14:05:52# [1] 授業単元: プログラミング演習
# [2] 問題文(含コード&リンク):http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10791.txt
# 問題文
#
# 0から7までの数字が描かれたカードがある。ただし、0だけ2枚で、合計9枚とする。
# この中から4枚を選ぶ組合せを考える。ただし、6と7は同時に選ばない(両方選ばなくてもよい)。
# このような組合せを列挙し、何通りあるかを、C言語のプログラムで求める。何通りあるかは、数学的に解いて確認せよ。
# 例題プログラムEnumFull.c を修正する。
#
# 部分問題への分解 0が現れる枚数で場合分けして、それぞれの個数を集計
# 弱化問題への緩和 0および6と7に関する条件を無視して、とりあえず全てを列挙し、題意に合わないものを排除
# 等価問題への還元 2枚の0を、0と8に読み換え、8は単独で選ばないという条件に置換
# 7は外して列挙し、6が現れる場合に、7に読み換えたものも追加
0274デフォルトの名無しさん
2010/07/07(水) 15:04:06% Prolog
'0から7までの数字が描かれたカードがある。ただし、0だけ2枚で、合計9枚とする。こ
の中から4枚を選ぶ組合せを考える。ただし、6と7は同時に選ばない(両方選ばなくても
よい)。このような組合せを列挙する'(U) :-
findall(L,(
組み合わせ([0,0,1,2,3,4,5,6,7],4,L),
許される組み合わせ(L)),
X),
sort(X,Y),
append(_[U|R],Y).
許される組み合わせ(A) :- append(_[6|_],A),append(_,[7|_],A),!,fail.
許される組み合わせ(A) :- append(B,[0|C],A),append(D,[0|E],C),!,fail.
許される組み合わせ(A).
0275デフォルトの名無しさん
2010/07/07(水) 15:11:45% Prolog 述語名の途中で改行してしまった。書き直し。
'0から7までの数字が描かれたカードがある。ただし、0だけ2枚で、合計9枚とする。この中から4枚を選ぶ組合せを考える。ただし、6と7は同時に選ばない(両方選ばなくてもよい)。このような組合せを列挙する'(U) :-
findall(L,(
組み合わせ([0,0,1,2,3,4,5,6,7],4,L),
許される組み合わせ(L)),
X),
sort(X,Y),
append(_[U|R],Y).
許される組み合わせ(A) :- append(_[6|_],A),append(_,[7|_],A),!,fail.
許される組み合わせ(A) :- append(B,[0|C],A),append(D,[0|E],C),!,fail.
許される組み合わせ(A).
0276デフォルトの名無しさん
2010/07/07(水) 16:06:52% Prolog
'0から7までの数字が描かれたカードがある。ただし、0だけ2枚で、合計9枚とする。この中から4枚を選ぶ組合せを考える。ただし、6と7は同時に選ばない(両方選ばなくてもよい)。このような組合せは何通りあるか'(_何通り) :-
count(('0から7までの数字が描かれたカードがある。ただし、0だけ2枚で、合計9枚とする。この中から4枚を選ぶ組合せを考える。ただし、6と7は同時に選ばない(両方選ばなくてもよい)。このような組合せを列挙する'(U)),_何通り).
0277デフォルトの名無しさん
2010/07/07(水) 16:09:47# [1] 授業単元: プログラミング演習
# [2] 問題文(含コード&リンク):
# 10人の成績を入力し、その順位を成績と共に表示したい。以下の考えに基づいたプログラムを作成せよ。
#
# 1. 2次元配列s[10][2]を用意する。
# 2. i=0〜9のfor文を用いて、s[i][0]に成績入力する。
# 3. s[0][0]とs[j][0], j=0〜9を比較し、s[0][0]より大きい数値の個数nを考える。
# その個数+1が成績順位になるので、s[0][1]にn+1を代入する。
# 4. 同様の操作をs[i][0]にi=0〜9に対して行えば、その成績順位がs[i][1]として求められるので、
# あとは成績と共に表示すればいい。
0278デフォルトの名無しさん
2010/07/07(水) 22:33:59% Prolog これは既出。
http://nojiriko.asia/prolog/c137_421.html
0279デフォルトの名無しさん
2010/07/08(木) 00:52:11使用言語:J
load 'misc'
f=:monad define
a=.prompt '非負の整数を入力してください: '
smoutput a,' を逆から読むと ',(|.a),' です.'
)
f ''
非負の整数を入力してください: 1234
1234 を逆から読むと 4321 です.
0280デフォルトの名無しさん
2010/07/08(木) 01:22:17使用言語:J
load 'misc'
f=:monad define
s=.0
n=.1
smoutput '整数を入力してください'
while. 0<a=.".prompt '整数',(":n),' : ' do.
n=.n+1
s=.s+ *:a
end.
smoutput '二乗値の合計は ',(":s),' です.'
)
f ''
整数を入力してください
整数1 : 3
整数2 : 5
整数3 : -1
二乗値の合計は 34 です.
0281デフォルトの名無しさん
2010/07/08(木) 01:32:42使用言語:J
load 'misc'
f=:monad define
m=.".prompt '何行ですか: '
n=.".prompt '何列ですか: '
smoutput (8!:2)10|(i.m)+/>:i.n
)
f ''
何行ですか: 7
何列ですか: 12
123456789012
234567890123
345678901234
456789012345
567890123456
678901234567
789012345678
0282デフォルトの名無しさん
2010/07/08(木) 01:40:50使用言語:J
smoutput@(8!:2)\>:i.5
1
12
123
1234
12345
0283デフォルトの名無しさん
2010/07/08(木) 05:05:31# 【質問テンプレ】
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):
# 円形テンプレートマッチングのプログラムを作成せよ。
#
# 白い楕円が複数書いてあるBMP画像を読み込み(適当にペイントで作成)画像左下からラスタ走査し、円形テンプレートマッチングをするプログラムを作成せよ。
# 円形テンプレートはサイズA〜Bまで変化させ、一致率(円形テンプレートの円周上に一致する白画素と一致している数/円形テンプレート円周のプロット数、円形テンプレート内の黒画素に一致している黒画素数/円形テンプレート内の黒画素数)
# 上位5つを色を変えて描画せよ。
#
# また、一致率上位5つの半径、一致率、座標(画像の左下をx=0、y=0とする)をdos窓上に標示せよ。
#
0284デフォルトの名無しさん
2010/07/08(木) 05:08:09# [1] 授業単元:Cプログラミング演習
# [2] 問題文(含コード&リンク):
# 問題1. 10進数1234を2進数で表示するプログラムを作成せよ。
# 問題2. 変数の下位16ビット中の1のビット数を数える関数 int bit_count(int x) を作成せよ
#
0285デフォルトの名無しさん
2010/07/08(木) 05:11:58# [1] 授業単元:Cプログラミング
# [2] 問題文(含コード&リンク):
#
# 概要:数値を1つ(2〜9の数字)入力し、その個数分の"*"を1辺とする
# 完成図(*=★、空白=☆):
#
# 3を入力した場合
# ★★★
# ☆☆★
# ★★★
#
# 9を入力した場合
# ★★★★★★★★★
# ☆☆☆☆☆☆☆☆★
# ★★★★★★★☆★
# ★☆☆☆☆☆★☆★
# ★☆★★★☆★☆★
# ★☆★☆☆☆★☆★
# ★☆★★★★★☆★
# ★☆☆☆☆☆☆☆★
# ★★★★★★★★★
0286デフォルトの名無しさん
2010/07/08(木) 07:12:02% Prolog
http://nojiriko.asia/prolog/c137_619.html
0287デフォルトの名無しさん
2010/07/08(木) 07:31:47使用言語:J
NB. p1
(8!:2)#:1234
10011010010
NB. p2
bit_count=:monad def '+/(16#2)#:y'
a=:1234
bit_count a
5
0288デフォルトの名無しさん
2010/07/08(木) 10:35:47% Prolog
http://nojiriko.asia/prolog/c137_630.html
0289デフォルトの名無しさん
2010/07/08(木) 12:45:49使用言語:J
NB. Q1
f=:monad def '-/ .* 2 2 $ y'
f 100 20 30 40
3400
NB. Q2
f=:dyad define
s=.x*y
r=.0
if. (5<:y) *. (y<10) do. r=.0.1
elseif. (10<:y) *. (y<20) do. r=.0.2
elseif. 20<:y do. r=.0.4
end.
s=.s-<.s*r
)
100 f 2
200
100 f 5
450
100 f 10
800
100 f 20
1200
0290デフォルトの名無しさん
2010/07/08(木) 13:49:38# [1] 授業単元:C・プログラミング
# [2] 問題文(含コード&リンク):
# 下記のGPA計算のプログラムを読み込んだ数値を入れる配列を指すポインタを用いて書き換えよ.ただし,配列は1次元配列を用い,また関数を使う必要はない.
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10794.txt
#
0291デフォルトの名無しさん
2010/07/08(木) 23:27:41使用言語:J
f=:monad define
if. 0=2|y do.
b=.(,|.)i.-:y
else.
b=.(}:,|.)i.-:>:y
end.
c=.0=2|<./~b
d=.y{0 0 1 1 1 2 3 3 3 4
((d$0 1)(;/&.><"1(,.~>:)i.d)}c){ucp'☆★'
)
f 2
★★
☆★
f 4
★★★★
☆☆☆★
★☆☆★
★★★★
f 5
★★★★★
☆☆☆☆★
★★★☆★
★☆☆☆★
★★★★★
0292デフォルトの名無しさん
2010/07/09(金) 19:19:10使用言語:J
comb=:dyad define
k=. i.>:d=.y-x
z=. (d$<i.0 0),<i.1 0
for. i.x do. z=. k ,.&.> ,&.>/\. >:&.> z end.
; z
)
f=:dyad define
a=. x comb y
(2 ~: +/ |: +/ 6 7 =/ a) # a
)
# 4 f 9
105
0293デフォルトの名無しさん
2010/07/10(土) 02:25:47以下の条件(仕様)を満たすプログラムを作成し, そのプログラム(Pascalプログラムソースファイル)とともに その解説書を提出すること.
逆ポーランド記法で入力された論理式の充足可能性を判定し, その式の値をtrueにする変数値を,通常の表記とともに出力すること.
可能な演算は論理積(and), 論理和(or), 否定(not), の3種類として, それぞれ 'a','o','n' で表現すること.
使用可能な論理変数は x0, x1, ..., x9 の10種類とし, それぞれ '0','1',...,'9' で表現すること.
例) (x1∧x2)∨(¬x1∧x3) ⇒ 12a1n3ao
使用できない文字が含まれる入力に対してエラーの旨を出力すること.
入力された論理式の充足可能性を判定, 式の値を true にする変数値を出力した後, 再度入力待ち状態になり, 空の文字列を入力するとプログラムが終了すること.
padcalの宿題スレで返答がないのでこちらに書かせていただきました。
解説も出来たらお願いします。
0294デフォルトの名無しさん
2010/07/12(月) 18:55:29使用言語:maxima
f(m, n) :=
for i thru m do (
for j thru n do printf(true, "~d", mod(i + j - 1, 10)),
newline()
);
(%i63) f(7,12);
123456789012
234567890123
345678901234
456789012345
567890123456
678901234567
789012345678
0295デフォルトの名無しさん
2010/07/16(金) 01:38:24コピーさせていただきました
ホームページ上からデータを追加、検索したりする問題です。
# OS:Linux
0296デフォルトの名無しさん
2010/07/18(日) 10:04:240297デフォルトの名無しさん
2010/07/18(日) 12:52:47使用言語:Scilab
-->2:2:10
ans =
2. 4. 6. 8. 10.
0298デフォルトの名無しさん
2010/07/18(日) 12:58:29使用言語:J
>:i.10
1 2 3 4 5 6 7 8 9 10
_2,\>:i.10
1 2
3 4
5 6
7 8
9 10
|:_2,\>:i.10
1 3 5 7 9
2 4 6 8 10
}.|:_2,\>:i.10
2 4 6 8 10
0299デフォルトの名無しさん
2010/07/18(日) 19:05:48協力お願いします。
#使用言語:prolog
#単元:演習問題
#a;b;c;d;eという5 本の棒があり、棒aに円盤1からnまでが存在している。
#棒aの1からnまでの円盤を棒eに移す。
#3本の時の例
move(N,A,B) :- display(N), display(' from '),
display(A), display(' to '),
display(B), nl.
hanoi(1,A,B,C) :- move(1,A,C).
hanoi(N,A,B,C) :- M is N-1, hanoi(M,A,C,B),
move(N,A,C),
hanoi(M,B,A,C).
こんな感じでやりました。(見にくくてすみません)
0300デフォルトの名無しさん
2010/07/18(日) 19:26:520301デフォルトの名無しさん
2010/07/19(月) 21:28:510302デフォルトの名無しさん
2010/07/19(月) 21:30:290303デフォルトの名無しさん
2010/07/20(火) 06:28:120304デフォルトの名無しさん
2010/07/20(火) 06:36:380305デフォルトの名無しさん
2010/07/23(金) 04:12:54# [1] 授業単元:
# [2] 問題文(含コード&リンク):
# 2〜9の数字を入力その数字に応じて図形を表示させる関数を作る
# 正方形 三角形 六角形 菱形 星 渦巻き
# 星と渦巻き以外できたからこの2つについて知りたい
# 例 7を入力したとき 左:渦 右:星
#
# ******* * * *
# * * * *
# ***** * ***
# * * * *******
# * *** * ***
# * * * * *
# ******* * * *
#
0306デフォルトの名無しさん
2010/07/23(金) 04:19:04# [1] 授業単元:C言語
# [2] 問題文(含コード&リンク):
#
# 以下の仕様に従って,分数の四則演算を行うプログラムを作成せよ。
# [仕様1] 以下のような構造体を定義し,分数のデータ構造に利用すること。
# struct fraction{
# int parent; /* 分母(denominator) */
# int child; /* 分子(numerator) */
# };
# [仕様2] 以下の実行結果となるようなプログラムを作成せよ。
# プログラムの実行結果↓
# 1つ目の分数を入力して下さい。
# 3/4 ←キーボードより入力
# 2つ目の分数を入力して下さい。
# 1/4 ←キーボードより入力
# 演算方法(1.加算,2.減算,3.乗算,4.除算)を入力して下さい。
# 2 ←キーボードより入力
# 3/4 - 1/4 = 1/2
# 計算結果は約分をして表示
#
0307デフォルトの名無しさん
2010/07/23(金) 04:22:05# 以下のようなテーブルがあります。
#
# itemテーブル
# item_id name color
# 1 商品1 3
# 2 商品2 12
# 3 商品3 7
#
# colorテーブル
# color_id name
# 1 赤
# 2 青
# 4 緑
# 8 黒
#
# item.colorの部分は、ビット演算の概念を使って
# 3なら赤+青
# 12なら緑+黒
# 7なら赤+青+緑
# の色を持っていることを意味します。
0308デフォルトの名無しさん
2010/07/23(金) 04:23:44# これを結合の段階で、以下のように色名を取得することは可能なのでしょうか?
#
# 1 商品1 赤
# 1 商品1 青
# 2 商品2 緑
# 2 商品2 黒
# 3 商品3 赤
# 3 商品3 青
# 3 商品3 緑
#
0309デフォルトの名無しさん
2010/07/23(金) 04:33:040310デフォルトの名無しさん
2010/07/23(金) 07:03:30% Prolog
色名を取得する :-
item(_item_id,_name,_color),
色の割り当て(_color,_色名),
write_formatted('%t %t %t\n',[_item_id,_name,_色名]),
fail.
色名を取得する.
色の割り当て(_色番号,_色名) :-
findall([_color_id,_name],color(_color_id,_name),L),
sort(L,L1),
reverse(L1,L2),
色の割り当て(_色番号,L2,_色名).
色の割り当て(N,_,_) :- N =< 0,!,fail.
色の割り当て(N,[[C,_色名]|R1],_色名) :-
1 is N // C.
色の割り当て(N,[[C,_]|R1],_色名) :-
1 is N // C,
M is N mod C,
色の割り当て(M,R1,_色名).
色の割り当て(N,[[C,_]|R1],_色名) :-
0 is N // C,
M is N mod C,
色の割り当て(M,R1,_色名).
0311デフォルトの名無しさん
2010/07/23(金) 13:26:16# 【 課題 】今月のカレンダ作成詳細は下に書きます
# 【 形態 】Javaアプリケーション(main()で開始)
# 【 期限 】7月14日日
# 【 Ver 】1.6.0_20
#
# 今月、7月のカレンダーを2次元配列に格納してください。
# 要素数は縦5横7の配列となります。(曜日は格納する必要がありません。)
# 週の先頭が日曜日はじまりで格納してください
# 配列のカレンダーを表示するコードを追加してください。
# 日にちを1つ入力するとその日が何曜日かを表示するコードに修正してください。
# よろしくお願いします
0312デフォルトの名無しさん
2010/07/23(金) 13:39:21% Prolog
'今月、7月のカレンダーを2次元配列に格納する'(LL) :-
今日の日付と曜日番号(_日,_曜日番号),
カレンダーの構造を作る(_31日定数平坦ならび,_35日平坦ならび,_5週間ならび,
'全体の枠の中で1-31日の位置を確定する'(_日,_曜日番号,L0,_31日定数平坦ならび,L2,_35日平坦ならび),
変数として残った両端部分は空白に(L0,L2),
平坦化の逆変換(_5週間ならび,_35日平坦ならび).
今日の日付と曜日番号(_日,_曜日番号) :-
_時刻 is time,
localtime(_時刻,_年,_月,_日,_曜日番号,_累積日,_時,_分_秒).
カレンダーの構造を作る(_31日定数平坦ならび,_35日平坦ならび,_5週間ならび) :-
findall(N,for(1,N,31),_31日定数平坦ならび),
findall(_,for(1,N,35),_35日平坦ならび),
findall(L,(for(1,_,5),length(L,7)),_5週間ならび).
'全体の枠の中で1-31日の位置を確定する'(_日,_曜日番号,L0,_31日定数平坦ならび,L2,_35日平坦ならび) :-
append(L0,_31日定数平坦ならび,L2,_35日平坦ならび),
append(U,[J|_],_35日平坦ならび),\+(var(J)),J=_日,
length(U,Len),
_曜日番号 is Len mod 7,!.
変数として残った両端部分は空白に(L0,L2) :- all(L0,' '),all(L2,' ').
平坦化の逆変換(L1,L2) :- flat(L1,L2).
0313デフォルトの名無しさん
2010/07/23(金) 13:43:32% Prolog 解答例その一
'1〜10までの偶数を出力' :-
for(1,N,10),
偶数(N),
write_formatted('%t\n',[N]),
fail.
'1〜10までの偶数を出力'.
0314デフォルトの名無しさん
2010/07/23(金) 13:45:36% Prolog その二
'1〜10までの偶数を出力' :-
'1〜10までの偶数(非決定性)'(1,N),
write_formatted('%t\n',[N]),
fail.
'1〜10までの偶数'.
'1〜10までの偶数(非決定性)'(N,_) :- N > 10,!,fail.
'1〜10までの偶数(非決定性)'(N,N) :- 偶数(N).
'1〜10までの偶数(非決定性)'(N1,N) :-
N2 is N1 + 1,
'1〜10までの偶数(非決定性)'(N2,N).
0315デフォルトの名無しさん
2010/07/23(金) 13:49:38% Prolog その三
'1〜10までの偶数を出力' :-
'1〜10までの偶数を出力'(1).
'1〜10までの偶数を出力'(N) :- N > 10,!.
'1〜10までの偶数を出力'(N) :-
偶数(N),
write_formatted('%t\n',[N]),
N2 is N + 1,
'1〜10までの偶数を出力'(N2).
'1〜10までの偶数を出力'(N) :-
奇数(N),
N2 is N + 1,
'1〜10までの偶数を出力'(N2).
0316デフォルトの名無しさん
2010/07/23(金) 13:50:58% Prolog その四
'1〜10までの偶数を出力' :-
'1〜10までの偶数ならび'(1,L),
concat_atom(L,'\n',S),
write_formatted('%t\n',[S]).
'1〜10までの偶数ならび'(N,[]) :- N > 10,!.
'1〜10までの偶数ならび'(N,[N|R]) :-
偶数(N),
N2 is N + 1,
'1〜10までの偶数ならび'(N2,R).
'1〜10までの偶数ならび'(N,R) :-
奇数(N),
N2 is N + 1,
'1〜10までの偶数ならび'(N2,R).
0317デフォルトの名無しさん
2010/07/23(金) 13:52:28% Prolog その五
'1〜10までの偶数を出力' :-
'1〜10までの偶数を出力'(1).
'1〜10までの偶数を出力'(N) :- N > 10,!.
'1〜10までの偶数を出力'(N) :-
偶数(N),
write_formatted('%t\n',[N]),
N2 is N + 1,
'1〜10までの偶数を出力'(N2).
'1〜10までの偶数を出力'(N) :-
奇数(N),
N2 is N + 1,
'1〜10までの偶数を出力'(N2).
0318デフォルトの名無しさん
2010/07/23(金) 13:56:07% Prolog これは上記5個の '1〜10までの偶数を出力'/0 述語から呼び出されている定義です。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'1〜10までの偶数を出力' :-
findall(N,(for(1,N,10),偶数(N)),L),
concat_atom(L,'\n',S),
write_formatted('%t\n',[S]).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
偶数(N) :- 0 is N mod 2.
奇数(N) :- 1 is N mod 2.
0319デフォルトの名無しさん
2010/07/23(金) 14:04:390320デフォルトの名無しさん
2010/07/23(金) 18:22:30# [1] 授業単元:C言語
# [2] 問題文(含コード&リンク):
# 以下の機能を持つプログラムを作ること。
#
# -1から100の数字の中から素数を抽出する (配列に直接数字を指定することは不
# 可)
# -抽出した素数を大きい順(降順)にソートする
# -ソートした素数を1行につき5個表示する(6個目以降は次の行に表示する)
#
# 但し、以下の4つの機能を使ったプログラムにすること。
# -サブ関数
# -配列
# -if文
# -for文
#
# 以下の点に関して工夫をした場合は加点の対象とする
#
# -素数の計算時間の低減
# -見つけた素数の数のカウント
# -ソートのアルゴリズム高速化
# -実行時間の表示
0321デフォルトの名無しさん
2010/07/23(金) 18:23:58# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):
# 二つのint型整数の小さい方の値を返す関数
# int i_minof(int x, int y){ /* ... */}
# を作成せよ。
#
0322デフォルトの名無しさん
2010/07/23(金) 18:24:47# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):
# 下に示すように、整数値を読み込んで、その値を0までカウントダウン
# しながら表示するプログラムを作成せよ。なお、負の値を読み込んだ時は
# 何も表示しない(改行も表示せず終了する)ようにせよ。
# =====
# 整数を入力してください:9
# 9 8 7 6 5 4 3 2 1 0
# =====
0323デフォルトの名無しさん
2010/07/23(金) 18:30:15# 【 課題 】自動販売機プログラム(レイアウトは自由)
# 【 形態 】 Servlet/JSP
# 【 GUI 】制限なし
# 【 期限 】7/13(最長7/16)
# 【 Ver 】1.6.0_15
# 【 補足 】
# 1. 商品は10種類、購入商品は選択可能。
# 2. 商品の価格は150円が3種類、130円が2種類、100円が5種類とする。
# 3. 使用できる硬貨は、500円、100円、50円、10円とし、紙幣は1000円のみ使用可能
とする。硬貨投入後に投入した硬貨の返却が出来る。
# 4. お釣り用の硬貨は初期値でそれぞれ10枚ずつ設定されている。
# 5. 500円硬貨が0になった場合に、100円硬貨が5枚以上存在した場合には100円硬貨を
返却する。また、100円硬貨以下についても、代替できるものは他の硬貨を用いて返却を
可能とする。
# 6. お釣りが返却できない硬貨投入時には、お釣りが無くなった旨を表示、購入不可
とする。
# 7. 商品は初期値でそれぞれ10個ずつ在庫があるものとする。
# 8. 商品の在庫が無くなった場合には、商品の在庫が無くなった旨を表示し、購入不
可とする。
0324デフォルトの名無しさん
2010/07/23(金) 20:26:49# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):
# バイナリ形式で保存されたWindows Bitmap形式の画像ファイルを読み込み、3つの色成分(Blue, Green, Red)に分離し、
# それぞれを異なるファイルに保存するプログラムを実装しなさい。
# プログラム中でやることは以下のことである。
# 1.ヘッダ部分を適切に読み込む
# 2.読み込んだヘッダ部分(ファイルヘッダ、情報ヘッダ)を用いて、適切なバイト数(画素数×1画素あたりのバイト数)を読んでくる。
# 3.分離したい色成分以外を0に書き換え、ヘッダ部分と色情報をファイルに書き込む。
# ただし、以下のような構造体を使用する。
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10800.txt
#
0325デフォルトの名無しさん
2010/07/23(金) 20:29:42# 【質問テンプレ】
# [1] 授業単元:Visual C++ でのプログラミング演習
# [2] 問題文(含コード&リンク):課題4.3.bをお願いします。http://ime.nu/www.dotup.org/uploda/www.dotup.org1020755.jpg
# 2.71 < (1 + 1/N) ^ N < 2.72 を満たす最小の整数Nを求める
#
0326デフォルトの名無しさん
2010/07/23(金) 20:37:16# [1] 授業単元: ソフトウェア信頼性
# [2] 問題文(含コード&リンク):
# 問題文+自分で作った部分は以下のファイルに
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10810.txt
#
# //単語の集合からなるファイルを読み込んで、辞書順に並べ替えて出力するプログラムを作成しなさい。
# //(*) ファイルは一行に一単語であり、すなわち単語間は改行コードで区切られる。
0327デフォルトの名無しさん
2010/07/23(金) 20:44:30# プログラムを作成せよ
#
# vx[ 0] : 58
# vx[ 1] : 32
# vx[ 2] : 17
# vx[ 3] : 46
# vx[ 4] : 22
# vx[ 5] : 73
# vx[ 6] : 69
# vx[ 0] = 69
# vx[ 1] = 73
# vx[ 2] = 22
# vx[ 3] = 46
# vx[ 4] = 17
# vx[ 5] = 32
# vx[ 6] = 58
0328デフォルトの名無しさん
2010/07/23(金) 20:45:56#
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10809.txt
# 2 問題2
# 下に示すように,要素数が5 でint 型の配列に、5 人の学生の身長を読み込んで、その平均
# 身長を求めるプログラムを作成せよ。
#
# 身長を入力してください
# 1 番: 178
# 2 番: 175
# 3 番: 165
# 4 番: 179
# 5 番: 172
# 平均身長: 173.8
0329デフォルトの名無しさん
2010/07/23(金) 20:46:55#
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10809.txt
# 問題3
# 下に示すように,5 人の学生の体重を読み込んで、最も重い人と最も軽い人の体重を表示す
# るプログラムを作成せよ.なお、体重はdouble 型で表すものとする。
#
# 体重を入力してください
# 1 番: 52.5
# 2 番: 64.0
# 3 番: 58.3
# 4 番: 67.4
# 5 番: 62.0
# 最も重い人の体重: 67.4
# 最も軽い人の体重: 52.5
0330デフォルトの名無しさん
2010/07/23(金) 20:49:11# [1] 授業単元:プログラミング実習
# [2] 問題文(含コード&リンク):53!を正確に計算して出力するjavaプログラムを作成せよ。
# ここでは1桁分の数を記憶するオブジェクトを多数作りそれらの協調で計算を進めること。
#
0331デフォルトの名無しさん
2010/07/23(金) 20:50:23# 【質問テンプレ】
# [1] 授業単元:画像処理プログラミング
# [2] 問題文(含コード&リンク):http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10814.zip
# 画像を8×8 画素のブロックに分割します。各ブロック毎に平均値を求めます。
# ※average という関数を作ってブロック内の平均値を求めても良いでしょう。
# ブロック内の画素すべての輝度値を平均値で置き換えます。どのような画像が得られますか?
# 8×8画素のブロックサイズでモザイク処理を行うプログラムと、モザイク処理後の画像を提出しなさい。
#
0332デフォルトの名無しさん
2010/07/23(金) 20:52:40# [1] 授業単元:プログラミングC
# [2] 問題文(含コード&リンク):http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10816.txt
# いっぱいあります。
#
#
# 2.10
# 三角形の二編の長さb,cとその侠角の∠A(ラジアン)を入力すると残り1辺aの長さを余弦定理で求めて表示するプログラムを作成せよ。
# a^2 = b^2 + c^2 - 2*b*c*cosα
0333デフォルトの名無しさん
2010/07/23(金) 20:54:24# [1] 授業単元:プログラミングC
# [2] 問題文(含コード&リンク):http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10816.txt
# いっぱいあります。
#
# 3.1
# 気温と湿度を入力すると、不快指数の値とその値で不快に感じる人の割合を表示するプログラムを作成せよ。
# (不快指数)=0.81×気温+0.01×湿度×(0.99×気温‐14.3)+46.3
# 不快指数の値によって次の割合の人が不快に感じるといわれている。
# 77未満→約9%
# 77以上85未満→約65%
# 85以上→約93%
0334デフォルトの名無しさん
2010/07/23(金) 20:55:31# [1] 授業単元:プログラミングC
# [2] 問題文(含コード&リンク):http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10816.txt
# いっぱいあります。
#
# 3.2
# 身長と体重を入力すると、次の判定方法で肥満度を判定するプログラムを作成せよ。
# 標準体重(kg)=(身長(cm)‐100)×0.9
# 肥満度(%)=(体重‐標準体重)÷標準体重×100
# 肥満度20%以上→ふとりすげ
# 10%以上20%未満→ふとりぎみ
# -10%以上10%未満→標準
# -20%以上-10%未満→やせぎみ
# -20%未満→やせすぎ
0335デフォルトの名無しさん
2010/07/23(金) 20:56:42# [1] 授業単元:プログラミングC
# [2] 問題文(含コード&リンク):http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10816.txt
# いっぱいあります。
#
# 4.1
# 入力された値が偶数だったら「even」、奇数だったら「odd」と出力する処理を10回繰り返すプログラムをwhile文、for文を使ってそれぞれ作成せよ。
0336デフォルトの名無しさん
2010/07/23(金) 20:58:22# [1] 授業単元:プログラミングC
# [2] 問題文(含コード&リンク):http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10816.txt
# いっぱいあります。
#
# 4.3
# 自然数nを入力し、1からnまでの自然数の二乗の和(1^2+2^2+…+n^2)を求めるプログラムを作成せよ。
0337デフォルトの名無しさん
2010/07/23(金) 20:59:29# [1] 授業単元:プログラミングC
# [2] 問題文(含コード&リンク):http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10816.txt
# いっぱいあります。
#
# 4.7
# 自然数nを乳力すると、nの約数をすべて表示するプログラムを作成せよ。
# (n以下の自然数について約数かどうかチェックする)
0338デフォルトの名無しさん
2010/07/24(土) 04:05:21# 組織のある部門にある能力を持つ人間を追加したり削除したりすることで,その組織全体もしくは部分的な部門の能力を計算するシステムを構築せよ.
# このシステムによって,組織内のニーズにあった人員配置を行なう支援をできると期待できる.
# 基本的にこのシステムは以下の機能を最低限有しなければならない.
#
# 1. 登録すべき部門や副部門を指定する.
# 2. 人物の名前(文字列),資格数(整数),勤務経験年数(整数),年齢を入力する.
# 3. もし,既に十分な人数がシステムに登録済の場合,そのデータと,前段階で入力された資格数,勤務経験年数,年齢に基づき,この人物の能力の値(high, middle or low)をシステムが予測し表示する.
# 4. システム(プログラム)を停止した際,現在,保持しているデータを保存できる.
# 5. システム(プログラム)を起動した際,既存のデータがあれば,それを読み込める.
#
# 単純化のため,能力は人物,組織どちらも金額(円)で表現されているとする.
# 人物も単純化のため,その氏名で区別することとし,同一氏名の人物は組織に追加できなくてもよい.
# 組織の中にある部門は階層的な構造となっており,その階層の深さは均一でない.
# 例えば「/秘書課/」という部門は組織の直下に位置するが,「/営業部/関東営業部/」,「/開発部/半導体課/」,「/研究部/先端科学課/タイムマシン開発グループ/」等2もしは3階層の場合もある.
# 尚,階層の深さ制限は無いものとする.
# ある部門の下に人物と副部門が同時に配置される場合もある.
# 例えば,営業部部長の田中さんは「/営業部/田中」と表現できるが,関東営業部に属する山田さんは,「/営業部/関東営業部/山田」となる.
# 尚,本システムでは日本語名は扱えなくてもよい.
0339デフォルトの名無しさん
2010/07/24(土) 05:48:26# [1] 授業単元:OS
# [2] 問題文(含コード&リンク):サーバクライアント通信をFIFOで作る
# – 一つのサーバプロセスが,
# • FIFOを作る.
# • データを待つ.
# • SIGINTを受信したら,FIFOを削除してから終了する.
# – 複数のクライアントプロセスが,サーバにリクエストを送る.
# – 文字列を送るクライアントプロセスが複数(forkすればおk).
# – サーバプロセスは単に表示する
#
0340デフォルトの名無しさん
2010/07/24(土) 05:51:03# [2] 問題文(含コード&リンク):
# ある差分方程式を、初期値から順々に予測していくプログラムを作ったのですが、
# それぞれの本当の値と予測した値の差を誤差としたとき、その誤差をフーリエ変換することによって、
# 発生する誤差に周期が存在するかを確認するプログラムを作りたいです。
# 条件としては、もともとファイル(ex. log.data)に誤差の値を入れておいて、それをプログラム内で参照するようなものが望ましいです。
# 簡単にたとえるなら誤差データ(log.data)が以下のような場合に
# 2.0
# 0.0
# 1.0
# -2.0
# 2.0
# 0.0
# 1.0
# -2.0
# 2.0
# 0.0
# 1.0
# -2.0
# フーリエ変換した結果をgnuplotなどで表示した際に周期が4のところにスペクトルが出るようなものを作りたいです。
0341デフォルトの名無しさん
2010/07/24(土) 05:55:19# [1] 授業単元:プログラミング演習III
# [2] 問題文(含コード&リンク):
# 以下の機能を含む整数版秀丸エディタ用のDLLを作成せよ。
# ・返り値がint型で、パラメータ(整数)を渡すと、「整数*5」の結果を返す。
# ・返り値がchar型で、パラメータ(文字列)を渡すと、文字列の先頭にHello!!を付け
た「Hello!!+文字列」の結果を返す。
0342デフォルトの名無しさん
2010/07/24(土) 05:56:36# コンピュータ基礎1
# OS windows7 32bit
# gcc2.9.5
# 言語 c
# 期限 なし
# 課題でいくつかc言語の課題が出て、本当に簡単なのは何とか解いたのですが2つほど分からないものがあったので
# よろしければ教えていただきたいです。
#
# ?キーボードから1つの実数値xを入力し、絶対値を表示するプログラムを作りなさい
#
# ?キーボードからテストの得点m(0以上100以下)を入力し
# (1) m<60 の場合は「不合格」
# (2) 60≦m<80 の場合は「普通」
# (3) 80≦m の場合は「優秀」
# と表示するプログラムを作りなさい。
0343デフォルトの名無しさん
2010/07/24(土) 05:58:21# コンピュータ基礎1
# OS windows7 32bit
# gcc2.9.5
# 言語 c
# 期限 なし
# 課題でいくつかc言語の課題が出て、本当に簡単なのは何とか解いたのですが2つほど分からないものがあったので
# よろしければ教えていただきたいです。
#
# キーボードから1つの実数値xを入力し、絶対値を表示するプログラムを作りなさい
#
0344デフォルトの名無しさん
2010/07/24(土) 06:02:08# [1] 授業単元:プログラミング演習I
# [2] 問題文(含コード&リンク):
# 課題
# (1000以下の完全数)正整数kが等式
# k=(kの約数の内、k以外のものの総和)
# を満たす時、kは完全数であるという。たとえば、6の約数は 1,2,3,6の4個であり、6=1+2+3であるため、6は完全数である。1000以下の完全数をすべて出力するプログラムを作れ。
#
0345デフォルトの名無しさん
2010/07/24(土) 06:03:12# 以下の入力をして、これを二次元配列に代入していく方法がわかりません。
# 当方scanf+Enterによる単純な入力しかしたことがありません。
# 空白を認識して代入先を変える方法?と考えて手が止まりました。
#
# /*以下入力*/
# 3 /*変数int nへ代入する。今から3*3行列を入力するという意味*/
# 3 5 7
# 2 5 8
# 6 8 1
# /*入力ここまで*/
#
# for(i=0;i<n;i++){
# for(j=0;j<n;j++){
# printf("%d ", a[i][j]);
# }printf("\n");
# }printf("\n");
# の結果は上記の
# 3 5 7
# 2 5 8
# 6 8 1
# を表示するように二次元配列aに代入する。
0346デフォルトの名無しさん
2010/07/24(土) 06:04:58# 【質問テンプレ】
# [1] 授業単元: 計算機プログラミング
# [2] 問題文(含コード&リンク): http://ime.nu/kansai2channeler.hp.infoseek.co. jp/cgi-bin/joyful/img/10819.txt
#
# 次の仕様を満たす信号発生プログラムを作成せよ。結果の表示は,信号波形
# 毎に2 例程度(例えば,基本周波数1 kHz と1 MHz,など)を示すこと。
#
# 1:正弦波・三角波・正弦波を全波整流した波形 を選択して出力できる。
# 2: 基本周波数と振幅値(最大振幅と最小振幅)をキーボードから入力する。
# (周波数は1 Hz〜100 MHz の範囲で設定できること)
# 3: 出力(信号波形データ)をファイルに保存する。
# (1 列目:時間,2 列目:振幅値)
#
# ※サンプリング(標本化)定理を満たすこと。
# 2fm < fs (fm:信号が持つ最大周波数,fs:サンプリング周波数)
0347デフォルトの名無しさん
2010/07/24(土) 06:06:14# [1] 授業単元:オペレーティングシステムプログラミング演習
# [2] 問題文 http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10820.txt
#
# コマンドの引数xxxxで指定したファイルが更新されたら直ちに
# “Modified xxxxfile on Day Month date hh:mm:ss yyyy”
# というメッセージを表示するファイル更新を監視する常駐プログラムを作成せよ。
# 常駐プログラムは、kill pid コマンドが入力されるまで、動き続けるように作成すること。
#
# プログラムの作成は、サンプルプログラムを参考にして、ファイルのiノード情報の
# 最終更新日時を定期的(例えば、sleep で1秒間隔)にチェックし、最終更新日時が
# 書き換えられたらメッセージを表示し、プログラム自身では終了しない無限ループする
# プログラムを作成することになる。
# 常駐プログラムの実行方法の1つは、バックグランドで起動する。
# 直ちに、ps コマンドでプログラムが動作中であることを確認する。
# その後、touchコマンドを投入して自分自身のファイルのタイムスタンプを更新し、
# メッセージが出れば動作していることになる。
# このtouchコマンドの投入を繰り返すことによって、動作を継続していることも確認する。
0348デフォルトの名無しさん
2010/07/24(土) 06:19:23% Prolog
'キーボードからテストの得点m(0以上100以下)を入力し(1) m<60 の場合は「不合格」(2) 60≦m<80 の場合は「普通」 (3) 80≦m の場合は「優秀」 と表示する' :-
'キーボードからテストの得点m(0以上100以下)を入力し'(_得点m),
'(1) m<60 の場合は「不合格」(2) 60≦m<80 の場合は「普通」 (3) 80≦mの場合は「優秀」'(_得点m,_判定),
表示する(_得点m,_判定).
'キーボードからテストの得点m(0以上100以下)を入力し'(_得点m) :-
write('テストの得点を入力してください : '),
get_line(Line),
'得点m(0以上100以下)を入力し、'(Line,_得点m).
'得点m(0以上100以下)を入力し、'(Line,_得点m) :-
atom_to_term(Line,X,_),
integer(X),
X >= 0,X =< 100,!.
実数値xを入力し、(Line,_得点m) :-
write_formatted('入力された値%tは得点として妥当なものではありません\n',[Line]),
'キーボードからテストの得点m(0以上100以下)を入力し'(_得点m).
'(1) m<60 の場合は「不合格」(2) 60≦m<80 の場合は「普通」 (3) 80≦m の場合は「優秀」'(_得点m,不合格) :- _得点m < 60,!.
'(1) m<60 の場合は「不合格」(2) 60≦m<80 の場合は「普通」 (3) 80≦m の場合は「優秀」'(_得点m,普通) :- 60 =< _得点m,_得点m < 80,!.
'(1) m<60 の場合は「不合格」(2) 60≦m<80 の場合は「普通」 (3) 80≦m の場合は「優秀」'(_得点m,優秀) :- _得点m >= 80,!.
表示する(_得点m,_判定) :-
write_formatted('得点%tの判定は %t です\n',[_得点m,_判定]).
0349デフォルトの名無しさん
2010/07/24(土) 06:21:10% Prolog
キーボードから1つの実数値xを入力し、(_x) :-
write('実数値を入力してください : '),
get_line(Line),
実数値xを入力し、(Line,_x).
実数値xを入力し、(Line,_x) :- atom_to_term(Line,_x,_),real(_x),!.
実数値xを入力し、(Line,_x) :-
write_formatted('入力された値%tは実数値ではありません\n',[Line]),
キーボードから1つの実数値xを入力し、(_x).
絶対値を(_x,_xの絶対値) :-
_x >= 0.0,
_x = _xの絶対値,!.
絶対値を(_x,_xの絶対値) :-
_x =< 0.0,
_xの絶対値 is _x * (-1).
表示する(_x,_xの絶対値) :-
write_formatted('|%t| = %t\n',[_x,_xの絶対値]).
0350デフォルトの名無しさん
2010/07/24(土) 06:39:36# 1個の自然数nを適当決めて、nチームが参加する
# リーグ戦の全試合日程を表示するプログラムを書きなさい
0351デフォルトの名無しさん
2010/07/24(土) 06:43:35% Prolog
'2.71 < (1 + 1/N) ^ N < 2.72 を満たす最小の整数Nを求める'(N) :-
for(1,N,maxint),((1 + 1/N) ^ N) > 2.71,!.
0352デフォルトの名無しさん
2010/07/24(土) 06:52:07% Prolog
'1から100の数字の中から素数を抽出する (配列に直接数字を指定することは不可)-抽出した素数を大きい順(降順)にソートする-ソートした素数を1行につき5個表示する(6個目以降は次の行に表示する)' :-
'1から100の数字の中から素数を抽出する'(L1),
'抽出した素数を大きい順(降順)にソートする'(L1,L2),
'ソートした素数を1行につき5個表示する'(L2).
'1から100の数字の中から素数を抽出する'(L1) :- findall(M,for(2,M,N),L),'エラトステネスの篩'(L,L1),!.
'抽出した素数を大きい順(降順)にソートする'(L1,L2) :- sort(L1,L3),reverse(L3,L2).
'ソートした素数を1行につき5個表示する'(L) :-
'5個切り取り表示'(L,R),
length(R,Len),
Len < 5,
'最終行は5個に満たないかもしれない(R),!.
'5個切り取り表示'(R,R) :- length(R,Len),Len < 5,!.
'5個切り取り表示'(L,R) :-
'N個組'(5,L,X,R),
concat_atom(X,' ',S1),
write_formatted('%t\n',[S1]).
'N個組'(N,L,X,R) :-
length(X,N),
append(L0,X,R,L),
length(L0,Len1),
0 is Len1 mod N.
最終行は5個に満たないかもしれない(R) :- concat_atom(R,' ',S),write_formatted('%t\n',[S]).
0353デフォルトの名無しさん
2010/07/24(土) 09:25:50# [1] C言語プログラミング演習
# [2] 問題文(含コード&リンク):http://ime.nu/www.dotup.org/uploda/www.dotup.org1025743.jpg
#
# 100未満の素数を表示するプログラムを作りなさい。
# 0から99までの配列を用意し、10までの素数の倍数を
# 素数でないとしていく。以下、実行例。
# 2の倍数を消去 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98
# 3の倍数を消去 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 6669 72 75 78 81 84 87 90 93 96 99
# 5の倍数を消去 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95
# 7の倍数を消去 7 14 21 28 35 42 49 56 63 70 77 84 91 98
0354デフォルトの名無しさん
2010/07/24(土) 09:29:12#
# 整数を各要素の値とする、2つの2次元ベクトルが与えられたときに、それらの内積を計算する関数innerProduct()を使って、この2つのベクトルが直行しているかどうかを判定するプログラムを作成せよ。
#
# 2つの2次元ベクトル U(ux,uy)とv(vx,vy) の内積は,
# ux × uy + vx + vy
# で計算でき、2つのベクトルが作る角度は、
# 内積が正なら90°より小さく 内積が0なら 90° 内積が負なら90°より大きい
# この考え方は3次元のベクトルでも同じである。上記のプログラムを、3次元のベクトルにも対応したものにすぐに修正できるようにするには、マクロを使うことが有効である。
# どのようにすればよいかを考えよ。
# 2次元の場合
# % ./innerProduct
# input u[0]: 2 input u[1]: 6 input v[0]: 9input v[1]: -1
# u=[ 2 6 ], v=[ 9 -1 ]
# inner product is 12
# The angle of the vectors is less than 90 degree.
# %
# 3次元の場合
# % ./innerProduct
# input u[0]:input u[1]: 1input u[2]: 2input v[0]: 6input v[1]: 3input v[2]:-2
# u=[ 0 1 2 ], v=[ 6 3 -2 ]
# inner product is -1
# The angle of the vectors is greater than 90 degree.
# %
0355デフォルトの名無しさん
2010/07/24(土) 09:32:09# [1] C言語プログラミング演習
# [2] 問題文
#
# name(名前: char型配列), height(身長: float型変数), bloodType(血液型: char型変数)をメンバに持つ構造体を宣言し, 128名分が記憶可能になるようその構造体の配列を定義せよ.また,その配列に対して値を入力し,
# さらに表示できるようにせよ.構造体のメンバ値を表示するには、ひとつの構造体の各メンバの値を表示する関数を作成すること。
#
#
# % ./bodyData
# 1人目のデータ: 立命太郎 175.5 A
# 2人目のデータ: 野路花子 169.0 B
# 3人目のデータ: 衣笠一郎 180.4 O
# 4人目のデータ: 0 0 0 ← 0 0 0 と入力すると終わる.
# 名前 身長 血液型
# 立命太郎 175.5 A
# 野路花子 169.0 B
# 衣笠一郎 180.4 O
# %
#
# ヒント: 各人の名前、身長、血液型のデータを1行で入力するためには、参考12.1に示されたfgets()関数で、これらを1度に取り込み、最初の空白までを名前とみなし、次の空白までを身長とみなし、
# 次に改行までを血液型をみなせばよい。これらを別々の文字列として、必要に応じて整数や浮動小数点数に変換し、構造体のメンバに設定すること。
#
# ヒント: ひとつの構造体の各メンバの値を表示する関数に構造体を引渡すことを繰り返えせばよい。
0356デフォルトの名無しさん
2010/07/24(土) 09:34:03# [1] C言語プログラミング演習
# [2] 問題文(含コード&リンク
# 標準入力から正の整数値を読み込み,0が入力されたらそれらの整数を小さい順に表示するプログラムを作成せよ.
#
# 以下のような処理の流れでプログラムを作成すること。
#
# 数字を読み込むごとに, それまでに入力された数値が格納された配列の最後の要素から, 先頭に向かって順に大小の比較を行う. これにより、読み込んだ数字の方が入るべき位置がわかる.
# 読み込んだ数字が入るべき箇所を空けるために、 既に記憶されている配列の要素のうち、 この数字よりも大きな数字をひとつ後ろにずらす。 空いた箇所に読み込んだ数字を代入する.
# 次に入力される数字の処理へ移る.
#
# % ./ordering
# 正整数: 17
# 正整数: 3
# 正整数: 9
# 正整数: 4
# 正整数: 0
# 入力された整数は小さい順に 0, 3, 4, 9, 17 です.
0357デフォルトの名無しさん
2010/07/24(土) 09:36:22# [1] C言語プログラミング演習
# [2] 問題文(含コード&リンク
# 文字列yを文字列xの最後に連結する関数stringcat(char [], char [])を作成せよ.この関数を用いて、入力された2つの文字列を連結するプログラムを作成せよ。
#
# 注意: stringcat()を呼び出すときは,連結後の文字列がxの配列長を超えないように注意すること.
#
#
# % ./catenate
# 文字列x (20字まで)? linux
# 文字列y (20字まで)? kadai
# 連結後のx: linuxkadai ←全部で20字以内なので連結可能
# 20字を超える場合は連結不可能とする
0358デフォルトの名無しさん
2010/07/24(土) 09:37:46# [1] C言語プログラミング演習
# [2] 問題文(含コード&リンク
# 文字列xに文字列yが含まれるかどうかを判定する関数str_comp(char [], char [])を作成せよ.
# この関数を用いて、入力されたひとつめの文字列にふたつめの文字列が含まれているかを判定するプログラムを作成せよ。
#
#
# % ./compare
# 文字列x (64字まで)? kadaigakitui
# 文字列y (64字まで)? dai
# "kadaigakitui"に"dai"は含まれます.
#
# % ./compare
# 文字列x (64字まで)? kadaigakitui
# 文字列y (64字まで)? ycx
# "kadaigakitui"に"ycx"は含まれません.
0359デフォルトの名無しさん
2010/07/24(土) 09:39:12# [1] 授業単元:プログラミング
# [2] 問題文
# 二つの任意の正の整数の乗算(*)を、シフト演算の組合わせと除算(/)と加算(+)のみで解くプログラムを作成しなさい。
#
# ヒント:例えば、123 x 13は以下のように計算できる。
#
# 123 x 13 = 123 x (2^3 + 2^2 + 1)
# = 123 x 2^3 + 123 x 2^2 + 123
#
0360デフォルトの名無しさん
2010/07/24(土) 09:40:21# 実数xを入力し、xの平方根を計算するプログラムを作りなさい。平方根は次のアルゴリズムで計算されるものとする。 動作例(1回実行) x = 2 2.000000の平方根は1.414207
# (1) a = 0.0、b = xとし、c = ( a + b ) / 2.0を計算する。
# (2) c2 < x ならばa = c、そうでなければb = cとし、計算を繰り返す。
# (3) b – aが収束値0.00001以下になったときのcを平方根とする。
# プログラムヒント:実数の型はfloatもしくはdoubleを用いること。整数を入力するにはatoi関数を使ったが、実数を入力するにはatof関数を使う。
# これお願いします。
#
0361デフォルトの名無しさん
2010/07/24(土) 09:41:41# 【 課題 】入力したテキストファイルを行毎にUTF-8の文字コードに変換してファイルに出力するプログラムを作成せよ
# 【 形態 】Javaアプリケーション(main()で開始)
# 【 GUI 】制限なし
# 【 期限 】7/16
# 【 Ver 】 1.6.0_20
# 【 補足 】
# あいうえお
# アイウエオ
#
# という2行のファイルを入力させた場合
#
# E38182E38184E38186E38188E3818A
# E382A2E382A4E382A6E382A8E382AA
#
# というファイルを出力させたいです。よろしくお願いします。
0362デフォルトの名無しさん
2010/07/24(土) 09:47:26# 【質問テンプレ】
# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):
# リストへの要素の追加を行うプログラムで、以下のプログラムを完成させよ。
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10828.txt
#
# リストの先頭要素
# リストの初期化
# 空のリストにデータを追加
# リストの内容を表示
# リストの先頭にデータを一つ追加
# リストの内容を表示
# リストの途中にデータを一つ追加
# リストの内容を表示
# リストの最後にデータを一つ追加
# リストの内容を表示
# データの削除
# リストの印刷
# リストの各要素を解放
0363デフォルトの名無しさん
2010/07/24(土) 09:48:49# [1] 授業単元:プログラミング演習I
# [2] 問題文(含コード&リンク):
# 課題
# (1000以下の完全数)正整数kが等式
# k=(kの約数の内、k以外のものの総和)
# を満たす時、kは完全数であるという。たとえば、6の約数は 1,2,3,6の4個であり、6=1+2+3であるため、6は完全数である。1000以下の完全数をすべて出力するJavaプログラムを作れ。
#
0364デフォルトの名無しさん
2010/07/24(土) 09:49:59# C(英文解析プログラム)
#
# 1.標準入力から単語を読み込み、単語を登録する。("EOR"という単語が入力されるまで繰り返す)
# 2.その後、標準入力から指定された単語に対して、その単語が登録されているか否かを出力する。
#
# /*****要実装******/の部分を実装して上の動作をするプログラムに完成させてください。
#
# http://ime.nu/codepad.org/npgTugA0
#
0365デフォルトの名無しさん
2010/07/24(土) 10:07:52% Prolog (その一)
'1000以下の完全数をすべて出力する' :-
for(1,N,1000),
完全数(N),
write_formatted('%t\n',[N]),
N = 1000,!.
'1000以下の完全数をすべて出力する'.
0366デフォルトの名無しさん
2010/07/24(土) 10:10:29% Prolog (その二)
完全数(N) :-
'1以外の最初の約数は'(N,N1),
NX is N // N1,
N2 is N1 + 1,
S1 is N1 + NX + 1,
完全数(N2,S1,N),!.
完全数(N1,N,N) :- (N // N1) < N1,!.
完全数(N1,S1,N) :- (N // N1) >= N1,
0 is N mod N1,
Y is N // N1,
S2 is S1 + N1 + Y,
N2 is N1 + 1,
完全数(N2,S2,N).
完全数(N1,S,N) :- (N // N1) >= N1,
\+(0 is N mod N1),
N2 is N1 + 1,
完全数(N2,S,N).
'1以外の最初の約数は'(N,N1) :-
N > 1,
for(2,N1,N // 2 + 1),
0 is N mod N1,!.
0367デフォルトの名無しさん
2010/07/24(土) 10:12:51# お手上げなので助けてください。
#
# [1] 授業単元:応用プログラミング
# [2] 問題文(含コード&リンク): http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10833.txt
#
# 問題1
# 入力画像(2値画像)中の、対象領域(ある値を持つピクセルの集合)の境界線を求めるプログラムを作成せよ。
# 求めた境界線は、入力画像をコピーした画像に描き、画像として保存せよ。
# 色をつけて境界線を描くこと。
#
0368デフォルトの名無しさん
2010/07/24(土) 10:14:11# お手上げなので助けてください。
#
# [1] 授業単元:応用プログラミング
# [2] 問題文(含コード&リンク): http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10833.txt
#
# 問題2
# 入力画像(2値画像)中の、対象領域(ある値を持つピクセルの集合)に対してラベリング処理(8連結)を行い、
# 各集合(連結成分)に番号を付けるプログラムを作成せよ。
# 連結成分の番号は、入力画像をコピーした画像に描き、画像として保存せよ。
# 色をつけて番号を描くこと。
0369デフォルトの名無しさん
2010/07/24(土) 10:15:40# お手上げなので助けてください。
#
# [1] 授業単元:応用プログラミング
# [2] 問題文(含コード&リンク): http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10833.txt
#
# 問題3
# 連結成分ごとに特徴パラメータ(面積、重心、周囲長、円形度、フラクタル次元)の値を調べる機能を付け加え、
# ある特徴パラメータ値をもつ連結成分だけを抜き出す(または消す)プログラムを作成せよ。
# 処理結果は、画像として保存せよ。
# また、特徴パラメータのいずれかをキーとして、連結成分の情報をソート(面積が大きい順、重心が原点に近い順、
# 周囲長が長い順、円形度が大きい順、フラクタル次元が大きい順)し、情報(番号、面積、重心、周囲長、
# 円形度、フラクタル次元)をファイル保存する機能を追加せよ。
#
0370デフォルトの名無しさん
2010/07/24(土) 10:17:14# プロギラミング技術は苦手なので教えてください。
# 演習5-1
#
# テキストファイルの各行の最後には,復帰・改行を示すASCIIコードが付加されて
# いる.即ち,ファイルのもつ行数は復帰・改行の数をカウントすることによって
# 計算できる.
#
# 上記性質を利用して,テキストファイルの行数を計算するプログラムを開発せよ.
# 但し,復帰・改行に対応するASCIIコードは10である.
#
# テキストファイルの読み込み方法は講義資料でも解説したように,./a.out < hoge.txtとすればよい.
#
0371デフォルトの名無しさん
2010/07/24(土) 10:19:13# 【質問テンプレ】
# [1] 授業単元:情報処理
# [2] 問題文(含コード&リンク):
# http://ime.nu/files.uploadr.net/0cc81c1342/1.txt
#
# 整数nを入力し、図1のようなパターンを表示するプログラムをfor文で作成しなさい。
# プログラムヒント:まず行と空白とアスタリスクの変数をそれぞれi、j、kとする。
# そしてパターンの変化を表すグラフを右図に作成する。
# 作成したグラフからj とkの一般式を求める。得られた一般式をfor文の終了条件に用いる。
#
# [図1]
# n = 4 n = 5
# * *
# *** ***
# ***** *****
# ******* *******
# *********
0372デフォルトの名無しさん
2010/07/24(土) 10:20:18# n個の文字列を読み込んだあと,その文字列を反転させるプログラムを作成せよ.ここで"反転"とは,例えば,"IKUNO"という文字列を入力した場合,出力を "ONUKI"と出力するものである.
#
# 【実行例】
#
# nを入力せよ:2
# 1個目の文字列を入力せよ:nagata
# 反転した文字列は:atagan
# 2個目の文字列を入力せよ:ikuno
# 反転した文字列は:onuki
#
0373デフォルトの名無しさん
2010/07/24(土) 10:21:38# お願いします…
# 【 課題 】 シフトJISコードが入っている int cをJAVAで使われてるユニコードに変換しなさい
#
0374デフォルトの名無しさん
2010/07/24(土) 10:23:17# [1] 授業単元: プログラミング
# [2] 問題文(含コード&リンク):
#
# 関数u(x,y)は、0<x<1,0<y<1の範囲のあらゆる点で方程式
#
# (∂^2)*u/(∂*x^2)+(∂^2)*u/(∂*y^2)=2(x^2+y^2)
#
#
# を満たし、境界上でu(0,y)=u(x,0),u(1,y)=y^2,u(x,1)=x^2である。
# この差分方程式を用いてu(x,y)を求め、キーボードから入力した
# 指定座標の値を表示するプログラムを作成せよ。
# 刻み幅は0.05とする(キーボードから入力する値はこの倍数とする)。
#
0375デフォルトの名無しさん
2010/07/24(土) 10:24:22# [1] 授業単元:プログラミング演習I
# [2] 問題文(含コード&リンク):
# 課題
# (1000以下の完全数)正整数kが等式
# k=(kの約数の内、k以外のものの総和)
# を満たす時、kは完全数であるという。たとえば、6の約数は 1,2,3,6の4個であり、6=1+2+3であるため、6は完全数である。1000以下の完全数をすべて出力するJavaプログラムを作れ。
#
0376デフォルトの名無しさん
2010/07/24(土) 10:25:25# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):
# fgets() を使って50文字以下の文字列を入力し,文字列中の各
# 文字の出現回数を数えるプログラムを作成せよ。
# 実行例
# 文字列は? abcdef,abb(ccc110)
# a : 2
# b : 3
# c : 4
# d : 1
# e : 1
# f : 1
# , : 1
# ( : 1
# 1 : 2
# 0 : 1
# ) : 1
#
0377デフォルトの名無しさん
2010/07/24(土) 10:26:59% Prolog
'50文字以下の文字列を入力し,文字列中の各文字の出現回数を数える' :-
get_chars(Chars),
length(Chars,Len),
Len =< 50,
findsetof(C,meber(C,Line),L1),
findall([Count,C],(member(C,L1),count(member(C,Chars),Count)),LL),
append(_,[[Count,C]|R],LL),
write_formatted('%t : %t\n',[C,Count]),
R = [].
0378デフォルトの名無しさん
2010/07/24(土) 10:30:07# [2]課題:C言語による「High and Low」のゲーム作成
# http://ime.nu/www.dotup.org/uploda/www.dotup.org1028847.txt.html
# テキストファイルに詳細を書き留めました
#
# 【仕様の補足】
# ・1〜13までの各数値が4枚ずつ、計52枚のカードを使用
# ただし、ハートやスペードなどのマークの概念は問わない。
# ・必ず「シャッフルする」という手順が含まれてなければいけない。
# ・ユーザからの入力においてscanf関数を利用してはならない。
# ・掛金指定において条件に満たない入力がされた場合入力を反復させる。
#
# 【定数と変数について】
# ・定数:素材ソースプログラムで指定されたものを適切に利用すること
# ・変数:
# ・inputBuffer(文字型配列)キーボードからの入力行を格納する
# ・user_money(整数型)持金情報を格納する
# ・user_bet(整数型)掛金情報を格納する
# ・cards(整数型配列)カード情報を格納する
# ・current(整数型)現在のカード位置を格納する
# (cards[current]が現在のカードを意味する)
# ・user_choice(文字型)ユーザの予想を格納する
# (Highを示す"H"や"h"、Lowを示す"L"と"l"、それ以外はパス)
# ・上記以外の変数については必要に応じて自由な名前で用いること
0379デフォルトの名無しさん
2010/07/24(土) 10:32:15# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):県から国、及び国から県に換算する関数を作成し、
# main関数でキーボードから数値とその値が国であるか県であるかを入力し、県ならば国に、
# 国ならば県に換算した値を小数点以下1桁までで出力するプログラムを作成しなさい。
# 値を引数とする関数で計算させ(関数名は nation とする)、出力は main関数で行うこと。
#
# 関係は以下の通り
# 県(A):(B+2)*5 国(B):A/3+25
# <例>
# 数値を入力してください: 75
# 75 が「県」なら "A" を「国」なら "B" を入力してください: B
#
# 県 75.0 = 国 50.0
#
0380デフォルトの名無しさん
2010/07/24(土) 10:35:42% Prolog
'キーボードから数値とその値が国であるか県であるかを入力し、県ならば国に、国ならば県に換算した値を小数点以下1桁までで出力する' :-
'キーボードから数値とその値が国であるか県であるかを入力し、'(N),
'県ならば国に、国ならば県に換算した値を小数点以下1桁までで出力する'(N,L).
'キーボードから数値とその値が国であるか県であるかを入力し、'(N,_AまたはB) :-
write('数値を入力してください: '),
get_integer(N),
write_formatted('%t が「県」なら "A" を「国」なら "B" を入力してください: ',[N]),
get_split_line(['"',' '],[_AまたはB]),!.
'県ならば国に、国ならば県に換算した値を小数点以下1桁までで出力する'(N,'A') :-
A is N * 1.0,
B is A / 3 + 25,
write_formatted('県 %t = 国 %t\n',[A,B]),!.
'県ならば国に、国ならば県に換算した値を小数点以下1桁までで出力する'(N,'B') :-
B is N * 1.0,
A is (B + 2) * 5,
write_formatted('県 %t = 国 %t\n',[A,B]),!.
0381デフォルトの名無しさん
2010/07/24(土) 10:37:23# [1] C言語プログラミング演習
# [2] 問題文(含コード&リンク
# char型配列xに格納された文字列を1文字ごとに空白を空けて逆順に出力する関数reverse_array(char [])を作成せよ.変換後の文字列の長さがもとの文字列よりも長くなっているので、長さの検査が必要であることに注意せよ。
# この関数を用いて、入力された文字列を並び替え、その結果を印字するプログラムを作成せよ。
#
#
# % ./reverse
# 処理前の文字列 (64字まで)? kimatutest
# 関数reverse_array()を呼び出しました
# 処理後の文字列 "t s e t u t a m i k"
#
0382デフォルトの名無しさん
2010/07/24(土) 10:40:04% Prolog
文字列を1文字ごとに空白を空けて逆順に出力する(_文字列) :-
文字列を1文字ごとに空白を空けて逆順に出力する(_文字列,_1文字ごとに空白
を空けた逆順文字列),
write_formatted('%t',[_1文字ごとに空白を空けた逆順文字列]).
文字列を1文字ごとに空白を空けて逆順に出力する(_文字列,_1文字ごとに空白を空けた
逆順文字列) :-
atom_chars(_文字列,Chars),
concat_atom(Chars,' ',_1文字ごとに空白を空けた逆順文字列).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
文字列を1文字ごとに空白を空けて逆順に出力する(_文字列,_1文字ごとに空白を空けた
逆順文字列) :-
atom_chars(_文字列,Chars),
文字列を1文字ごとに空白を空けて逆順に出力する(Chars,Chars2),
atom_chars(_1文字ごとに空白を空けた逆順文字列,Chars2).
文字列を1文字ごとに空白を空けて逆順に出力する([],[]).
文字列を1文字ごとに空白を空けて逆順に出力する([A],[A]).
文字列を1文字ごとに空白を空けて逆順に出力する([A|R1],[A,' '|R2]) :-
文字列を1文字ごとに空白を空けて逆順に出力する(R1,R2).
0383デフォルトの名無しさん
2010/07/24(土) 10:41:40# [1] C言語プログラミング演習
# [2] 問題文(含コード&リンク
# char型配列xに格納された英単語からなる文字列が回文(逆から読んでも同じ)であるかをチェックする関数anagram(char [])を作成せよ.ただし,チェック対象の文字列はソースコードのmain()関数内で記述するものとする(キーボードから入力しない).
#
#
# % ./checkAnagaram
# 文字列 "spainyuusyou" は回文ではありません.
#
# % ./checkAnagaram
# 文字列 "Was it a cat I saw?" は回文です.
#
# ヒント: 回文のルールは以下の通り.
#
# (i)
# 前から読んでも後ろから読んでも同じアルファベットの並びとな る,
# (ii)
# 記号「?」,「.」,「,」,「-」,「 」(空白)は無視する,
# (iii)
# 大文字と小文字は区別をしない.
0384デフォルトの名無しさん
2010/07/24(土) 10:43:00% Prolog
回文(A) :- atom_chars(A,Chars),回文(Chars,[],X,X).
回文([],X,X,[]) :- !.
回文([A|R1],L1,X,R2) :- member(A,['?','.',',','-',' ']),回文(R1,L1,X,R2),!.
回文([A|R1],L1,X,[B|R2]) :- to_upper(A,B),回文(R1,[B|L1],X,R2),!.
0385デフォルトの名無しさん
2010/07/24(土) 10:44:48# [1] C言語プログラミング演習
# [2] 問題文(含コード&リンク
# ATM(Automated Teller Machine; 現金自動預け払い機)システムを実現するプログラムを考える。
#
# 氏名,口座番号,暗証番号,預金残高を要素とする構造体を宣言し, 512人分の口座が作成可能なようにせよ.また,初期値として次のように構造体の内容を設定せよ.
#
# 立命太郎の口座番号は1234で,預金残高を1,234,560円に設定する.
# 野路花子の口座番号は5678で,預金残高を987,600円に設定する.
# 衣笠一郎の口座番号は9012で,預金残高を538,600円に設定する.
# 暗証番号は口座番号に1111を足して10000で割った余りに設定する.
# ここで暗証番号は、口座番号を引数としてとり、それに1111を足して10000で
# 割った余りを計算する関数を作成して設定すること.
# 上記の方法で初期値を設定し、設定された3人の預金残高を画面へ出力する
# プログラムを作成せよ.ただし、ひとり分の預金残高を表示する関数を作成して、
# これを繰り返し使って3人の預金残高を出力すること.
#
# % ./initAccount
# 預金残高は次のとおりです.
# 立命太郎 (1234) 1234560 円
# 野路花子 (5678) 987600 円
# 衣笠一郎 (9012) 538600 円
# %
0386デフォルトの名無しさん
2010/07/24(土) 10:46:19% Prolog
預金口座の初期設定(_ファイル) :-
w3c('http://pc12.2ch.net/test/read.cgi/tech/1276810079/920',Lines),
append(_,[Line|R],Lines),
split(Line,[の口座番号は,'で,貯金残高を,円に設定する.'],[_氏名,_口座番
号,_預金残高]),
assertz(預金口座(_氏名,_口座番号,_預金残高)),
_暗証番号 is (_口座番号 + 1111) mod 10000,
assertz(預金口座暗証番号(_口座番号,_暗証番号)),
R = [],!.
預金口座の初期設定(_).
設定された3人の預金残高を画面へ出力する :-
findsetof(_口座番号,預金口座(_,_口座番号,_),_口座番号ならび),
write('預金残高は次のとおりです.\n'),
append(_,[_口座番号|R],_口座番号ならび),
ひとり分の預金残高を表示する(_口座番号),
R = [].
ひとり分の預金残高を表示する(_口座番号) :-
預金口座(_氏名,_口座番号,_預金残高),
write_formatted('%t (%t) %t 円\n',[_氏名,_口座番号,_預金残高]),!.
0387デフォルトの名無しさん
2010/07/24(土) 10:48:44# [2] 問題文(含コード&リンク
# <<920の課題を基に「引出し」の機能を追加せよ.具体的には,
# 口座番号の入力,暗証番号の入力と確認,支払額の入力,預金残高の更新をする
# プログラムを追加すればよい.機能の選択は,起動時できるようにすること.
#
# % ./withdraw
# [0]終了 [1]残高表示 [2]引出し: 2
# 口座番号を入力してください: 5000 ← 存在しない
# 暗証番号を入力してください: 0123
# 口座番号または暗証番号が間違っています.
# 口座番号を入力してください: 9012
# 暗証番号を入力してください: 5555 ← 間違っている
# 口座番号または暗証番号が間違っています.
# 口座番号を入力してください: 9012
# 暗証番号を入力してください: 0123
# 引出し額を入力してください: 1000000 ← 預金額より多い
# 預金額が不足しています.
# 口座番号を入力してください: 9012
# 暗証番号を入力してください: 0123
# 引出し額を入力してください: 20000
# ありがとうございました.残高は 518600 円です.
# [0]終了 [1]残高表示 [2]引出し: 2 ← 始めに戻る
0388デフォルトの名無しさん
2010/07/24(土) 10:51:18% Prolog (その一)
'「引出し」の機能を追加せよ.具体的には,口座番号の入力,暗証番号の入力と確認,支払額の入力,預金残高の更新をするプログラムを追加すればよい.'(_引き出し_または_口座残高表示) :-
「引出し」または「口座残高表示」(_引き出し_または_口座残高表示).
「引出し」または「預金残高表示」(引き出し) :-
repeat,
口座番号の入力(_口座番号),
暗証番号の入力と確認(_口座番号),
支払い(_口座番号),!.
「引出し」または「預金残高表示」(預金残高表示) :-
repeat,
口座番号の入力(_口座番号),
暗証番号の入力と確認(_口座番号),
「預金残高表示」(_口座番号),!.
支払い(_口座番号,_預金残高1,_引出額) :-
_引出額 > _預金残高1,
write('口座残高が不足です\n御支払いできません\n'),!.
支払い(_口座番号,_預金残高1,_引出額) :-
_引出額 =< _預金残高,
支払いオペレーション,
預金残高の更新(_口座番号,_引出額,_預金残高),
預金残高を画面へ出力する(_口座番号),!.
0389デフォルトの名無しさん
2010/07/24(土) 10:54:14% Prolog (その二)
口座番号の入力(_口座番号) :-
write('口座番号を入力してください : '),
get_integer(_口座番号1),
口座番号の入力(_口座番号1,_口座番号).
口座番号の入力(_口座番号,_口座番号) :-
預金口座(_,_口座番号,_),!.
口座番号の入力(_口座番号1,_口座番号) :-
write_formatted('口座番号%tは正しい口座番号ではありません \nもう一度、',[_口座番号1]),
口座番号の入力(_口座番号).
暗証番号の入力と確認(_口座番号) :-
rawmode,
write('暗証番号を入力してください : '),
findall(C,(for(1,N,4),get_char(C),put_char(*)),L),
norawmode,
number_chars(_暗証番号,L),
_暗証番号 is (_口座番号 + 1111) mod 10000,!.
暗証番号の入力と確認(_口座番号) :-
write('暗証番号が一致しませんでした\n'),
fail.
0390デフォルトの名無しさん
2010/07/24(土) 10:55:17% Prolog (その三)
支払額の入力(_引出額) :-
write('引出額を入力してください : '),
get_integer(_引出額),
預金残高の更新(_口座番号,_引出額,_預金残高) :-
retract(預金口座(_氏名,_口座番号,_預金残高1)),
_預金残高 is _預金残高1 - _引出額,
assertz(預金口座(_氏名,_口座番号,_預金残高)),!.
預金残高を画面へ出力する :-
ひとり分の預金残高を表示する(_口座番号),!.
支払いオペレーション.
0391デフォルトの名無しさん
2010/07/24(土) 10:56:58# 問題
#
# 複数の文字列を読み込み,さらに,それらの文字列を繋ぎ合わせる順番を入力し結果を出力するプログラムを作成せよ.
#
# 【実行例】
#
# 何個の文字列を入力しますか?:4
# 入力文字列[1]:Computer
# 入力文字列[2]:Science
# 入力文字列[3]:Tarou
# 入力文字列[4]:Tanaka
#
# 繋ぎ合わせる順番:
# 2
# 4
# 3
# 1
#
# 結果:ScienceTanakaTarouComputer
#
0392デフォルトの名無しさん
2010/07/24(土) 10:58:25% Prolog
'複数の文字列を読み込み,さらに,それらの文字列を繋ぎ合わせる順番を入力し結果を出力する' :-
催促付き整数入力('何個の文字列を入力しますか?: ',N),
write_formatted('文字列を%t行連続して入力してください\n',[N]),
findall(Line,(for(1,M,N),get_line(Line)),L1),
write('入力した文字列を繋ぎ合わせる順番を入力してください\n'),
findall(Nth,(for(1,M,N),get_integer(Nth)),L2),
findall(A,(member(Nth,L2),list_nth(Nth,L1,A)),L3),
concat_atom(L3,S),
write_formatted('繋ぎ合わせた文字列は: %t\n',[S]).
0393デフォルトの名無しさん
2010/07/24(土) 10:59:31# この問題ができません。誰かお願いします。
#
# 入力したDNA塩基配列中にある塩基 t, c, a, gそれぞれの個数をカウントするプログラムを作成せよ.
# 【実行例】
#
# % ./a.out
# tataatccg ← 入力し,リターンを押して ^D
# Thymine (t) : 3
# Cytosine (c) : 2
# Adenine (a) : 3
# Guanine (g) : 1
# %
0394デフォルトの名無しさん
2010/07/24(土) 11:00:49% Prolog
'入力したDNA塩基配列中にある塩基 t, c, a, gそれぞれの個数をカウントする' :-
get_chars(Chars),
count(member(t,Chars),_t),
count(member(c,Chars),_c),
count(member(a,Chars),_a),
count(member(g,Chars),_g),
write_formatted('Thymine (t) : %t \nCytosine (c) : %t \nAdenine (a) :%t \nGuanine (g) : %t \n',[_t,_c,_a,_g]).
0395デフォルトの名無しさん
2010/07/24(土) 11:07:29# 入力したDNA塩基配列中に,atgという並びがいくつあるか調べるプログラムを作成せよ.但し,入力には t, c, a, g以外の文字も入っている.塩基以外の文字は無視すること.
# 【実行例】
#
# % ./a.out
# 1gattatgtga
# 11tgccgatatc
# 21gatatgattc
# (ここで ^D を押す)
# #ATG is 3
# %
0396デフォルトの名無しさん
2010/07/24(土) 11:09:07% Prolog
'入力したDNA塩基配列中に,atgという並びがいくつあるか調べるプログラムを作成せよ.但し,入力には t, c, a, g以外の文字も入っている.塩基以外の文字は無視すること':-
get_chars(Chars),
atgという並びがいくつあるか(Chars,_いくつ).
atgという並びがいくつあるか([],0).
atgという並びがいくつあるか([a|R1],_いくつ) :-
atgという並び(R1,R2),
atgという並びがいくつあるか(R2,_いくつの一),
_いくつ is _いくつの一 + 1,!.
atgという並びがいくつあるか([_|R1],_いくつ) :-
atgという並びがいくつあるか(R1,_いくつ).
atgという並び(R1,R2) :-
append(_,[t|L1],[g|R2],R1),
\+((member(A,[a,t,c,g]),member(A,L1))),!.
atgという並び(_,[]).
0397デフォルトの名無しさん
2010/07/24(土) 11:10:36# [1] 授業単元:C++実習
# [2] 問題文(含コード&リンク): 文字列*bufからIPアドレスを抽出し、int ip[4]にそれぞれ入れよ。(最初に抽出できたものだけで良い)
#
0398デフォルトの名無しさん
2010/07/24(土) 11:12:40# # 問題文(含コード&リンク):http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10839.txt
# コピーさせていただきました
# ホームページ上からデータを追加、検索したりする問題です。
# # OS:Linux
#
# [1]学籍番号(stnum char(14))、名前(name char(30))、国語(kokugo int)、数学(math int)、理科(science int)
# からなるテーブルseisekiをデータベース上に作る。
#
# [2]ホームページからデータを追加、検索できるようにする。
# 表示結果には、学籍番号、名前、国語、数学、理科、合計を表示させる
#
#
0399デフォルトの名無しさん
2010/07/24(土) 11:15:41% Prolog (その一)
学籍番号による検索(_学籍番号) :-
seiseki(_学籍番号,_名前,_国語,_数学,_理科),
write_formatted('%t,%t,%t,%t,%t\n',[_学籍番号,_名前,_国語,_数学,_理科] .
名前による検索(_名前) :-
seiseki(_学籍番号,_名前,_国語,_数学,_理科),
write_formatted('%t,%t,%t,%t,%t\n',[_学籍番号,_名前,_国語,_数学,_理科]).
国語の成績による検索(_国語,_国語成績) :-
seiseki(_学籍番号,_名前,_国語,_数学,_理科),
_国語成績.
数学の成績による検索(_数学,_数学成績) :-
seiseki(_学籍番号,_名前,_数学,_数学,_理科),
_数学成績.
理科の成績による検索(_理科,_理科成績) :-
seiseki(_学籍番号,_名前,_理科,_数学,_理科),
_理科成績.
0400デフォルトの名無しさん
2010/07/24(土) 11:18:39% Prolog (その二)
成績の追加(_学籍番号,_名前,_国語,_数学,_理科) :-
学籍番号(_学籍番号),
名前(_名前),
国語(_国語),
数学(_数学),
理科(_理科),
assertz(seiseki(_学籍番号,_名前,_国語,_数学,_理科)).
成績の変更(_学籍番号,_名前,_国語,_数学,_理科) :-
学籍番号(_学籍番号),
名前(_名前),
国語(_国語),
数学(_数学),
理科(_理科),
retract(seiseki(_学籍番号,_,_,_,_)),
assertz(seiseki(_学籍番号,_名前,_国語,_数学,_理科)).
成績の削除(_学籍番号) :-
retract(seiseki(_学籍番号,_,_,_,_)).
0401デフォルトの名無しさん
2010/07/24(土) 11:19:53% Prolog (その三)
学籍番号(_学籍番号) :-
atom_length(_学籍番号,Len),
Len =< 14,
atom_chars(_学籍番号,Chars),
すべてが数字(Chars),!.
すべてが数字([]) :- !.
すべてが数字([A|R]) :-
member(A,['0','1','2','3','4','5','6','7','8','9']),
すべてが数字(R).
名前(_名前) :-
atom(_名前),
atom_length(_名前,Len),
Len =< 30,!.
国語(_国語) :- integer(_国語).
数学(_数学) :- integer(_数学).
理科(_理科) :- integer(_理科).
0402デフォルトの名無しさん
2010/07/24(土) 11:22:21# 【 課題 】10個の国旗を表示するプログラム(日本、アメリカ、イギリス、フランス、ジャマイカ、ベトナム、セネガル、スウェーデン、アイスランド、南アフリカ)
# 指定された国旗を画面に表示する。少なくても8種類以上。 国旗の指定にはマウスでメニューのボタンとかを指定して、選択させること。
# 国旗は図形として描くこと。画像を貼り付けたりしてはならない。
# 【 形態 】1. Javaアプリケーション(main()で開始)
# 【 GUI 】4. 制限なし
# 【 期限 】7月22日までに
# 【 Ver 】1.6.0
# 【 補足 】国旗はそこまで高い完成度は求められない?と思います。
0403デフォルトの名無しさん
2010/07/24(土) 11:23:13# 【 課題 】なんでもいいからjavaでつくれとのことで
# http://ime.nu/lifescape.seesaa.net/article/104001220.html
# みたいなみかか変換作りたいです
# 【 形態 】Applet
# 【 期限 】7月19日
# 【 Ver 】1.6.0_20-b02
# 【 補足 】いまさらみかかかと思うかもしれませんがよろしくお願いしやす
0404デフォルトの名無しさん
2010/07/24(土) 11:25:06# 【 課題 】1.ビンゴカードをPlayerの人数分作成できる。
# 2.1〜75の数字が書かれた玉をランダムに取り出せる。
# 3.カードにその数字があるかをチェックし、あれば数字の枠にマークすることができる。
# 4.リーチ、ビンゴ時に表示することができる。
# 以上の機能を備えたビンゴゲームシュミレーターを作成しなさい。
# 【 補足 】カードは1列目1〜15、2列目は16〜30……5列目で61〜75、というよう
な形が指定されています。
# Freeの有無は指定なしです。
# 丸投げ申し訳ないです。長く複雑かもしれませんが、どうぞよろしくお願いします。
# 初心者故、できましたら軽い注釈を付けてくれると幸いです。
0405デフォルトの名無しさん
2010/07/24(土) 11:27:34% Prolog 何をするのかわからないな。
みかか定義 :-
L = ['1' - 'ぬ','2' - 'ふ','3' - 'あ','4' - 'う','5' - 'え','6' - 'お','7' - 'や','8' - 'ゆ','9' - 'よ','0' - 'わ',(-) - (ほ),(^) - ('へ'),
'Q'-た,'W'-て,'E'-い,'R'-す,'T'-か,'Y'-ん,'U'-な,'I'-に,'O'-ら,'P'-せ,
('@')-゛,('[')-゜,'A'-ち,'S'-と,'D'-し,'F'-は,'G'-き,'H'-く,'J'-ま,'K'-の,
'L'-り,(';')-れ,(':')-け,(']')-む,'Z'-つ,'X'-さ,'C'-そ,'V'-ひ,'B'-こ,'N'-み,
'M'-も,(',')-ね,('.')-る,('/')-め],
member(A-B,L),
assertz(みかか(A,B)),fail;true.
みかか :-
rawmode,
repeat,
get_char(A),
みかか(A,B),
putchar(B),
A = '\n',
norawmode.
0406デフォルトの名無しさん
2010/07/24(土) 11:31:57# [2] 問題文(含コード&リンク):http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10845.txt
#
# 問1)検索する文字列を入力し、その位置を返す ユーザ関数 を使ってプログラムを作成しなさい。
#
# 条件 プロトタイプ宣言 : char *MojiSearch(char *m, char *s)
# 引数 1 : 検索対象文字列
# 引数 2 : 検索文字列
# 戻り値 : あった場合 (一致した文字列の先頭アドレス)
# なかった場合 (NULL)
# 標準関数 : MojiSearch()内で strlen(),strncmp() のみ使用可能
#
# char moji[] = "ABCDEFGHJABFGHSKL"; /*検索対象文字列*/
#
# 実行画面例
#
# 1) 検索文字列 ==> HS
# 検索位置 : HSKL
#
# 2) 検索文字列 ==> JN
# 検索位置 : 検索したい文字はありませんでした
0407デフォルトの名無しさん
2010/07/24(土) 11:33:52# 問2) 配列データの平均を求める ユーザ関数 を使ってプログラムを作成しなさい。
# 条件 プロトタイプ宣言 : double Average(int *p)
# 引数 : 数値が格納された配列の先頭アドレス
# 戻り値 : 平均
# 実行画面例
# 1) 整数[0] ==> 100
# 整数[1] ==> 80
# 整数[2] ==> 60
# 整数[3] ==> 75
# 整数[4] ==> 89
# 整数[5] ==> 62
# 整数[6] ==> 71
# 整数[7] ==> 50
# 整数[8] ==> 49
# 整数[9] ==> 90
#
# 平均 : 72.6
#
# 2) 整数[0] ==> 100
# 整数[1] ==> 80
# 整数[2] ==> 60
# 整数[3] ==> 75
# 整数[4] ==> 89
# 整数[5] ==> 64
# 整数[6] ==> -1
#
# 平均 : 78.0
0408デフォルトの名無しさん
2010/07/24(土) 11:35:25% Prolog
検索する文字列を入力し、その位置を返す(_検索対象文字列,_検索文字列,_位置,_検索副文字列) :-
sub_atom(_検索対象文字列,A,B,C,_検索文字列),
_位置 is A + 1,
_残り長さ is B + C,
sub_atom(_検索対象文字列,A,_残り長さ,_,_検索副文字列),!.
検索する文字列を入力し、その位置を返す(_,_,_,_) :-
write('検索したい文字はありませんでした\n'),
!,fail.
0409デフォルトの名無しさん
2010/07/24(土) 11:36:32% Prolog
入力されたデータの平均を求める :-
findavg(M,(
for(0,N,maxint),
write_formatted('整数[%t] ==> ',[N]),
get_integer(M),
( M = -1,!,fail;true)),
_平均),
write_formatted('平均 = %t\n',[_平均]).
0410デフォルトの名無しさん
2010/07/24(土) 13:28:18# [1] 授業単元:情報処理演習
# [2] 問題文(含コード&リンク):元金a円、利率r円で、何年預けると目標金額b円を超えるか。ただし金利は複利計算によって求めるものとする。
0411デフォルトの名無しさん
2010/07/24(土) 13:36:37# [1] 授業単元:プログラミング基礎I
# [2] 問題文(含コード&リンク):
#
# nを読み込み,n個のint型配列を動的に確保,n個の配列はn人の勇者とする.以下仕様に従ったプログラムを作成せよ.
#
# ?それぞれの勇者にヒットポイントを与える.
# ?敵のヒットポイントを与える.
# ?乱数を発生し,誰の攻撃かを決定する.
# ?攻撃をする際に,会心の一撃,普通の攻撃,ミスを乱数で決定する.
# ?相手に与えるダメージを乱数で決定する.
# ?敵の攻撃の場合,何人にどれだけ攻撃をするかを乱数で決定する.
# ?敵のヒットポイントが無くなるか,勇者が全滅したら終了とする.
#
0412デフォルトの名無しさん
2010/07/24(土) 13:37:50# n 個のものの中から r 個のものを取り出すときの組合せの数 nCr を求める関数 CCO(int n, int r) を再帰型で作成しなさい.
# ただし, x, y の入力と結果の出力は main関数で行わせること.
0413デフォルトの名無しさん
2010/07/24(土) 13:38:58# 【質問テンプレ】
# [1] 授業単元:情報処理課題
# [2] 問題文(含コード&リンク):英語の文章で構成されるテキストファイルに対して、その中に含まれる総文字数と異なる文字ごとの出現回数とを数え上げよ。
# [3.3] 言語:C
# [4] 期限:2010年07月19日00:00まで
# [5] その他の制限:Xcodeを使用しています。読み込むファイルは"/Users/user/Desktop/data.txt"で。
#
# 似たようなプログラムを作った時は「数列を入力し総文字数と数字ごとに出現回数とを数え上げグラフで表示」というような課題で
# 数字だったので0〜9までを表示することが簡単に出来ましたがアルファベットなのでa-zをどう表示したものか
# またstrlenだと半角空白も数えてしまうので総"文字"数とずれてくるのではないかと悩んでいます。
# よろしくお願いします。
0414デフォルトの名無しさん
2010/07/24(土) 14:18:27# MYSQL5で
# テーブルA
# create table A( id int , name_id int, word varchar(128) , primary key ( id ), index ( name_id ) )
# テーブルB
# create table B( id int, cid1 int, cid2 int , cid3 int , primary key ( id )
# テーブルC
# create table C( id int, name varchar(128) , primary key ( id ) , unique ( name ) )
# こんな感じのテーブルを作成しました。テーブルAのname_idはテーブルBのidと、テーブルCのidはテーブルBのcid1〜cid3と関連します。
# テーブルAのname_id,wordとテーブルBのcd1〜cd3をテーブルCのnameで置き換えた値で取り出したいのですが、どう書けばいいでしょうか?
0415デフォルトの名無しさん
2010/07/24(土) 14:19:39% Prolog
'テーブルAのname_id,wordとテーブルBのcd1〜cd3をテーブルCのnameで置き換えた値で取り出す'(_name_id,_word,_name_1,_name_2,_name_3) :-
'A'(_,_name_id,_word),
'B'(_name_id,_cid1,_cid2,_cid3),
'C'(_cid1,_name_1),
'C'(_cid2,_name_2),
'C'(_cid3,_name_3).
0416デフォルトの名無しさん
2010/07/24(土) 14:23:02% Prolog
'テーブルAのname_id,wordとテーブルBのcd1〜cd3をテーブルCのnameで置き換えた値で取り出す'(_name_id,_word,_name_1,_name_2,_name_3) :-
'A'(_,_name_id,_word),
'B'(_name_id,_cid1,_cid2,_cid3),
'C'(_cid1,_name_1),
'C'(_cid2,_name_2),
'C'(_cid3,_name_3).
0417デフォルトの名無しさん
2010/07/24(土) 14:23:53% Prolog
英語の文章で構成されるテキストファイルに対して、その中に含まれる総文字数と異なる文字ごとの出現回数とを数え上げる(_総文字数,_文字ごとの出現度数ならび) :-
get_chars('/Users/user/Desktop/data.txt',Chars),
length(Chars,_総文字数),
findsetof(C,member(C,Chars),L1),
findall([C,_出現度数],(member(C,L1),count(member(C,Chars),_出現度数)),_文字ごとの出現度数ならび).
findsetof(A,B,L) :-
findall(A,B,C),
setof(A,member(A,C),L).
0418デフォルトの名無しさん
2010/07/24(土) 14:28:34# 今迷路を作成しているのですが
# 前、右、左から1つ方向を選んで、
# 1歩進むたびに宝物、通路、落とし穴を表示させたいんです。
# 途中からですが・・・
# int ret = 0;
# char *message;
# switch (c) {
# case '1':
# message = "左に進む";
# break;
# case '2':
# message = "右に進む";
# break;
# case '3':
# message = "前進する";
# break;
# default:
# message = "進め!";
# ret = 1;
# }
# printf("%s\n", message);
# }
# printf("%s\n", message);
# return ret;
# }
# ここに進行方向にあるものを表示させたいときってどうしたらいいんでしょうか?
0419デフォルトの名無しさん
2010/07/24(土) 14:31:44# [1] 授業単元: C言語A
# [2] 問題文
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10872.txt
# [3.1] OS:Windows
# [3.2] VC 6.0
# [3.3] 言語:C
# [4] 期限:7月24日
# [5] 制限:特にありません
# まずA〜Fのアルファベットを出力させる方法がわかりませんでした。よろしければそちらについて詳しく教えてください
#
# 文字列当てゲームを作成せよ。
# ・A〜Fの中から4つの文字をランダムで選択し、文字列にする。
# この際、選ばれる4つの文字はすべて異なるものとする。
# ユーザーは4つの文字の並びを入力して、選定された文字列を当てる。
# ・ユーザーの入力した文字列と選定された文字列を比較して、同じ文字が同じ場所にある場合は「Hit」というヒントを与える。
# また、同じ文字が異なる場所にある場合は「Blow」というヒントを与える。
# すなわち、選ばれた文字列がCFBA、これに大してユーザーがCBAEという数値を入力した場合、1Hit2Blowというヒントが表示されるようにする。
# ・ユーザーは10回まで、入力するチャンスが与えられる。
0420デフォルトの名無しさん
2010/07/24(土) 14:33:29# [1] 授業単元:プログラミング基礎I
# [2] 問題文(含コード&リンク):
# 与えられた負でない整数nに対して、
# を求める関数を関数の再帰呼び出しを使って作成せよ。
# 一般的なアルゴリズムは以下のようになる。
#
# % ./factorial
# 負でない整数を入力して下さい: 4
# 24
# % ./factorial
# 負でない整数を入力して下さい: 0
# 1
# %
0421デフォルトの名無しさん
2010/07/24(土) 14:34:17# [1] 授業単元:プログラミング基礎I
# [2] 問題文(含コード&リンク):
#
# 文字列xに文字列yが含まれるかどうかを判定する関数str_compWithPointer(char *,char *)を作成せよ.この関数を用いて、入力されたひとつめの文字列にふたつめの文字列が含まれているかを判定するプログラムを作成せよ。
#
#
# % ./compare
# 文字列x (64字まで)? Ritsumeikan-University
# 文字列y (64字まで)? Univ
# "Ritsumeikan-University"に"Univ"は含まれます.
#
# % ./compare
# 文字列x (64字まで)? Ritsumeikan-University
# 文字列y (64字まで)? city
# "Ritsumeikan-University"に"city"は含まれません.
0422デフォルトの名無しさん
2010/07/24(土) 14:35:38# [1] 授業単元:プログラミング基礎I
# [2] 問題文(含コード&リンク):
# 標準入力から正の整数値を読み込み,0が入力されたらそれらの整数を小さい順に表示するプログラムを作成せよ.
#
# 以下のような処理の流れでプログラムを作成すること。
#
# 数字を読み込むごとに, それまでに入力された数値が格納された配列の最後の要素から, 先頭に向かって順に大小の比較を行う. これにより、読み込んだ数字の方が入るべき位置がわかる.
# 読み込んだ数字が入るべき箇所を空けるために、 既に記憶されている配列の要素のうち、 この数字よりも大きな数字をひとつ後ろにずらす。 空いた箇所に読み込んだ数字を代入する.
# 次に入力される数字の処理へ移る.
#
# % ./ordering
# 正整数: 17
# 正整数: 3
# 正整数: 9
# 正整数: 4
# 正整数: 0
# 入力された整数は小さい順に 0, 3, 4, 9, 17 です.
0423デフォルトの名無しさん
2010/07/24(土) 14:36:37# [1] 授業単元:プログラミング基礎I
# [2] 問題文(含コード&リンク):
# 文字列xに文字列yが含まれるかどうかを判定する関数str_comp(char [], char [])を作成せよ.この関数を用いて、入力されたひとつめの文字列にふたつめの文字列が含まれているかを判定するプログラムを作成せよ。
#
#
# % ./compare
# 文字列x (64字まで)? Ritsumeikan-University
# 文字列y (64字まで)? Univ
# "Ritsumeikan-University"に"Univ"は含まれます.
#
# % ./compare
# 文字列x (64字まで)? Ritsumeikan-University
# 文字列y (64字まで)? city
# "Ritsumeikan-University"に"city"は含まれません.
0424デフォルトの名無しさん
2010/07/24(土) 14:37:48# 複数の文字列を読み込み,さらに,それらの文字列を繋ぎ合わせる順番を入力し結果を出力するプログラムを作成せよ.
#
# 【実行例】
#
# 何個の文字列を入力しますか?:4
# 入力文字列[1]:AAA
# 入力文字列[2]:BBB
# 入力文字列[3]:CCC
# 入力文字列[4]:DDD
#
# 繋ぎ合わせる順番:
# 2
# 4
# 3
# 1
#
# 結果:BBBDDDCCCAAA
0425デフォルトの名無しさん
2010/07/24(土) 14:38:47# [1] 授業単元:プログラミング基礎I
# [2] 問題文(含コード&リンク):
# char型配列xに格納された文字列を1文字ごとに空白を空けて逆順に出力する関数reverse_array(char [])を作成せよ.変換後の文字列の長さがもとの文字列よりも長くなっているので、長さの検査が必要であることに注意せよ。
# この関数を用いて、入力された文字列を並び替え、その結果を印字するプログラムを作成せよ。
#
#
# % ./reverse
# 処理前の文字列 (64字まで)? Ritsumeikan
# 関数reverse_array()を呼び出しました
# 処理後の文字列 "n a k i e m u s t i R"
0426デフォルトの名無しさん
2010/07/24(土) 14:39:46使用言語:J
f=:(-:|.)@toupper@(-.&'?.,- ')
f 'spainyuusyou'
0
f 'Was it a cat I saw?'
1
0427デフォルトの名無しさん
2010/07/24(土) 14:40:59# [1] 授業単元:C++プログラミング
# [2] 問題文(含コード&リンク): 航空会社が持っている小型航空機(座席数:24)のフライトに座席を割り当てるシステムをプログラミングせよ。
# この航空機の座席は中央に通路を挟み左右にそれぞれ2座席ずつの列が計6列ある。
# 座席は 1A, 1B, 1C, 1D, ..., 6A, 6B, 6C, 6D で表示され、 1, 2列目が喫煙区画で、 A, D が窓側、 B, C が通路側を示している。
#
# プログラムはまず最初に次の選択メニューを表示する。
#
# 喫煙席を希望する方は 1 をタイプしてください。
# 禁煙席を希望する方は 2 をタイプしてください。
#
# 喫煙/禁煙の選択が終わると、 窓側か通路側かの選択を求める。
#
# 窓側を希望する方は 1 をタイプしてくださ。
# 通路側を希望する方は 2 をタイプしてください。
#
# 希望に沿える席がすべて予約済みで割り当てられない場合には、窓側又は通路側の希望については無視して割り当てる。
# ただし, 「窓側(あるいは通路側)はすでに満席のため通路側(窓側)で予約します」というメッセージを出力し、
# 以下のように座席番号と喫煙席/禁煙席の区分が書かれた搭乗券を(この課題では画面上に)出力する。
#
# --------
# 2A 禁煙
# --------
0428デフォルトの名無しさん
2010/07/24(土) 14:42:25# 入力したDNA塩基配列中にある塩基 t, c, a, gそれぞれの個数をカウントするプログラムを作成せよ.
#
# 【実行例】
# % ./a.out
# tataatccg ← 入力し,リターンを押して ^D
# Thymine (t) : 3
# Cytosine (c) : 2
# Adenine (a) : 3
# Guanine (g) : 1
# %
0429デフォルトの名無しさん
2010/07/24(土) 14:43:21#
# それから、禁煙区画(あるいは喫煙区画)が窓側又は通路側ともに満席のときには喫煙区画(禁煙区画)でも良いかどうか乗客に尋ねなければならない。
# 乗客がOKすれば(窓側/通路側の希望はできるだけ尊重した上で)空いている座席を割り当て搭乗券を出力し、しなければ「3時間後に次のフライトがあります。」というメッセージを出力して終了する。
0430デフォルトの名無しさん
2010/07/24(土) 14:46:30使用言語:J
g=:monad def :'1,.(|."0 1(2&+))i.<:y'
h=:monad def :',<"1|:({.,:|.@{:)(--:#y)[\y'
f=:monad def :'1|.h"1 g y'
f 6
+---+---+---+
|1 2|3 6|4 5|
+---+---+---+
|1 3|4 2|5 6|
+---+---+---+
|1 4|5 3|6 2|
+---+---+---+
|1 5|6 4|2 3|
+---+---+---+
|1 6|2 5|3 4|
+---+---+---+
0431デフォルトの名無しさん
2010/07/24(土) 16:12:49# [2] 問題文(含コード&リンク):自動座席予約システムの作成せよ。
# その航空会社が持っている小型航空機(座席数:24)のフライトに座席を割り当てるシステムをプログラミングしなければならない。
# この航空機の座席は中央に通路を挟み左右にそれぞれ2座席ずつの列が計6列ある。
# 座席は 1A, 1B, 1C, 1D, ..., 6A, 6B, 6C, 6D で表示され, 1, 2列目が喫煙区画で,A, D が窓側, B, C が通路側を示している。
# このプログラムはまず最初に次の選択メニューを表示する。
#
# 喫煙席を希望する方は ● をタイプしてください.
#
# 禁煙席を希望する方は × をタイプしてください.
#
# 喫煙/禁煙の選択が終わると, 窓側か通路側かの選択を求める。
#
# 窓側を希望する方は ! をタイプしてください.
# 通路側を希望する方は # をタイプしてください.
# もし希望に沿える席がすべて予約済みで割り当てられないときには, 窓側/通路側の希望については無視して割り当てる。
# ただし, 「窓側(あるいは通路側)はすでに満席のため通路側(窓側)で予約します」というメッセージを出力し, 以下の
# ように座席番号と喫煙席/禁煙席の区分が書かれた搭乗券を(この課題では画面上に)出力する。
# --------
# 4A 禁煙
# --------
# また, 禁煙区画(あるいは喫煙区画)が窓側/通路側ともに満席のときには喫煙区画(禁煙区画)でも良いかどうか乗客に尋ねなければならない。
# 乗客がOKすれば(窓側/通路側の希望はできるだけ尊重した上で)空いている座席を割り当て搭乗券を出力し, OKしなければ
# 「3時間後に次のフライトがあります.」というメッセージを出力して終了する。
0432デフォルトの名無しさん
2010/07/24(土) 16:17:31# [1] 授業単元:プログラミング基礎I
# [2] 問題文(含コード&リンク):
# 発展課題 13..3
# 発展課題13.2を基に,「振込み」の機能を実現せよ.
# 具体的には,利用者の口座番号・暗証番号・振込額の指定と確認,振込先の口座番号の指定と確認,両者の預金残高の更新をするプログラムを作成せよ.
# なお,以下の例では省略するが,口座番号や暗証番号を間違った場合のチェックや,預金額が不足する場合のチェックもすること.
# % ./transfer
# [0]終了 [1]残高表示 [2]引出し [3]振込み: 3
# 口座番号を入力してください: 9012
# 暗証番号を入力してください: 0123
# 振込先の口座番号を入力してください: 1000
# 口座番号をご確認ください. ← 存在しない
# 口座番号を入力してください: 9012
# 暗証番号を入力してください: 0123
# 振込先の口座番号を入力してください: 5678
# 振込み額を入力してください: 30000
# 野路花子 様に 30000 円振り込みました.
# ありがとうございました.残高は 508600 円です.
# [0]終了 [1]残高表示 [2]引出し [3]振込み: ← 始めに戻る
#
# 振り込まれた先の口座の金額が増えていることを、デバッガで確認せよ。この例では
、「野路花子」の残高は 1017600 円のはずである。
0433デフォルトの名無しさん
2010/07/24(土) 16:20:05# [1] 授業単元:プログラミング基礎I
# [2] 問題文(含コード&リンク):
# ../test/read.cgi/tech/1279286575/141 を基に 口座を表現した構造体を struct accountとする。以下の関数を作成し、発展課題 13.3と同じ機能をもつプログラムを作成せよ。
#
# 指定された口座番号に対応する口座情報を探索する関数
# struct account *search_account(int id)
#
# 指定された口座番号に相当する講座がないとき、この関数は NULL を返すものとする。
#
# 口座内容を印字する関数
# void print_account(struct account *account)
#
# 振込み元の講座から振込先の口座へ指定された金額だけ振り込む関数
# int transfer(struct account *from, struct account *to, int amount)
#
# この関数は成功した場合1を、失敗した場合は負の整数を返すものとする.
#
# これらの関数の中では printf() や fgets() などの入出力関数は用いないようにせよ。
0434デフォルトの名無しさん
2010/07/24(土) 16:41:09# [1] 授業単元:プログラミング基礎I
# [2] 問題文(含コード&リンク):
# name(名前: char型配列), height(身長: float型変数), bloodType(血液型: char型変数)をメンバに持つ構造体を宣言し, 128名分が記憶可能になるようその構造体の配列を定義せよ.また,その配列に対して値を入力し,
# さらに表示できるようにせよ.構造体のメンバ値を表示するには、ひとつの構造体の各メンバの値を表示する関数を作成すること。
# % ./bodyData
# 1人目のデータ: 立命太郎 175.5 A
# 2人目のデータ: 野路花子 169.0 B
# 3人目のデータ: 衣笠一郎 180.4 O
# 4人目のデータ: 0 0 0 ← 0 0 0 と入力すると終わる.
# 名前 身長 血液型
# 立命太郎 175.5 A
# 野路花子 169.0 B
# 衣笠一郎 180.4 O
# %
# ヒント: 各人の名前、身長、血液型のデータを1行で入力するためには、参考12.1に示されたfgets()関数で、これらを1度に取り込み、最初の空白までを名前とみなし、次の空白までを身長とみなし、次に改行までを血液型をみなせばよい。これらを別々の文字列として、
# 必要に応じて整数や浮動小数点数に変換し、構造体のメンバに設定すること。
#
# ヒント: ひとつの構造体の各メンバの値を表示する関数に構造体を引渡すことを繰り返えせばよい。
0435デフォルトの名無しさん
2010/07/24(土) 16:42:21# [1] 授業単元:プログラミング基礎I
# [2] 問題文(含コード&リンク):
# ../test/read.cgi/tech/1279286575/153を基にデータを身長の高い順に出力するよう変更せよ.
# % ./orderByHeight
# … ← 入力は前課題と同じなので省略.
# 名前 身長 血液型
# 衣笠一郎 180.4 O
# 立命太郎 175.5 A
# 野路花子 169.0 B
# %
#
0436デフォルトの名無しさん
2010/07/24(土) 16:43:55# [1] 授業単元:プログラミング基礎I
# [2] 問題文(含コード&リンク):
# 入力したDNA塩基配列中に,atgという並びがいくつあるか調べるプログラムを作成せよ.但し,入力には t, c, a, g以外の文字も入っている.塩基以外の文字は無視すること.
#
# 【実行例】
# % ./a.out
# 1gattatgtga
# 11tgccgatatc
# 21gatatgattc
# (ここで ^D を押す)
# #ATG is 3
# %
0437デフォルトの名無しさん
2010/07/24(土) 16:45:00# [1] 授業単元:プログラミング基礎I
# [2] 問題文(含コード&リンク):
# 入力したDNA塩基配列中にある塩基 t, c, a, gそれぞれの個数をカウントするプログラムを作成せよ.
#
# 【実行例】
# % ./a.out
# tataatccg ← 入力し,リターンを押して ^D
# Thymine (t) : 3
# Cytosine (c) : 2
# Adenine (a) : 3
# Guanine (g) : 1
# %
0438デフォルトの名無しさん
2010/07/24(土) 16:46:14# [1] 授業単元:プログラミング基礎I
# [2] 問題文(含コード&リンク):
# 配列a[n],配列b[n]と配列の大きさnを渡すと配列の要素を入れ換えるプログラムをポインタを用いて作成せよ.
#
# 例えば,a[3]={1,2,3},b[3]={101,102,103}とするとき,結果として,a[3]={101,102,103},b[3]={1,2,3}となるようにせよ.
#
0439デフォルトの名無しさん
2010/07/24(土) 16:47:30# [1] 授業単元:C++基礎
# [2] 問題文(含コード&リンク):
# 基底クラスとして Shape、その派生クラスとして Rectangle (正方形)を定義し、
# 正四角形の辺の長さの合計と面積を計算する。
#
0440デフォルトの名無しさん
2010/07/24(土) 16:49:39# 1] 授業単元:プログラミング基礎I
# [2] 問題文(含コード&リンク):
# n個の実数(double型)を配列に読み込んだ後,配列を指すポインタを用いて,最大値と最小値を探索するプログラムを作成せよ.また,入力した値の平均値もポインタ変数を用いて計算せよ.
#
0441デフォルトの名無しさん
2010/07/24(土) 16:50:50# [1] 授業単元:アルゴリズム
# [2] 問題文(含コード&リンク):
# 文字列sの中の文字の順番を逆にコピーした文字列dを作るc言語の関数str_revcopy(d,s)を書け。
# 関数の返す値はコピーをした先のdとする。
# ただし文字列sを逆順にコピーするのに十分な記憶領域があらかじめ確保されていて、その先頭がdで指されていると仮定する。
# さらに、dとsの記憶領域には重なりがないとする。例えば
# str_revcopy(d,"ABCDE")は文字列"EDCBA"を返し、
# str_revcopy(d,"This is a pen")は文字列".nep a si sihT"を返し、
# str_revcopy(d,"")は文字列""を返す。
#
0442デフォルトの名無しさん
2010/07/24(土) 16:52:26# 【 課題 】受験人数( 1〜9人)をキー入力し、その人数個々にランダムな得点(0〜50点)を付与し、
# 採点一覧表をグラフに表示する。
# なお、受験者は「受験者A」、「受験者B」・・・「受験者I」とする。
# 一番上のタイトルには採点結果一覧表と表示されていています。
# 点数表示はアスタリスクで、10点ずつのところが*になってます。
# もう訳がわからなくて焦っています。よろしくお願いします。
0443デフォルトの名無しさん
2010/07/24(土) 16:55:03# 【 課題 】ババ抜きプログラム
# ・52枚+ジョーカーを4人に均等に配り分ける。ジョーカーはランダムで誰かに入るようにする。
# ・コンソール上においてキーボードで動かせるPlayerと、プログラムにより
# 自動で動くA,B,Cの対戦相手を用意。
# ・手札に同じ数字が揃えば、2枚とも捨てる。
# ・順番はI,A,B,Cとし、A,B,Cがカードを引く時はランダムに引くこととする。
# ・Playerの手持ちは、各数字で表し、A,B,Cの残り手持ちは記号等で何枚あるか表示できる。
# 例)Playerの手持ち:A,2,7,10,Q
# 例)Aの手持ち:*****(5)
# ・ A,B,Cは自分の手札から引かれる前に自動的にシャッフルする。
# ・Playerの手札はシャッフルするかしないかを選択できる。
# 例)1,シャッフルする 2,シャッフルしない:(キーボードからの入力
# ・一人でも上がればゲームを終了とし、勝利者と、最初に捨てられたカードの枚数、
# 4人がカードを引いた合計数を表示する。
#
# *Playerが引く時の例
# 例)左から?番目を引く:(キーボードからの入力)
0444デフォルトの名無しさん
2010/07/24(土) 16:58:10# [1] 授業単元:C++基礎
# [2] 問題文(含コード&リンク):
# n個の実数(double型)を配列に読み込んだ後,配列を指すポインタを用いて,最大値と最小値を探索するプログラムを作成せよ.
# また,入力した値の平均値もポインタ変数を用いて計算せよ
0445デフォルトの名無しさん
2010/07/24(土) 16:59:02# [1] 授業単元:プログラミング基礎I
# [2] 問題文(含コード&リンク):
# 配列a[n],配列b[n]と配列の大きさnを渡すと配列の要素を入れ換えるプログラムをポインタを用いて作成せよ.
#
# 例えば,a[3]={1,2,3},b[3]={101,102,103}とするとき,結果として,a[3]={101,102,103},b[3]={1,2,3}となるようにせよ.
0446デフォルトの名無しさん
2010/07/24(土) 17:00:19# 1] 授業単元: C言語プログラミング
# [2] 問題文(含コード&リンク):
# 一行ごとにテキストファイル名が無限に書いてあるテキストファイルがある。
# このファイルを読みだして書いてあるファイル名のファイル内容をすべて表示するプログラムを作れ
# 一行ごとに書いてあるファイルの最後は改行で終わっているものとする。
#
0447デフォルトの名無しさん
2010/07/24(土) 17:45:30# 1] 授業単元: C言語プログラミング
# [2] 問題コード
# 秒数を与えると,それが何時間何分何秒にあたるかを計算する関数 void calctime(int sec, int *hp, int *mp, int *sp); を作れ.たとえば calctime(3725, &h, &m, &s); として呼び出すと h = 1, m = 2, s = 5 となる.但し,1時間2分5秒は3725秒である.
#
0448デフォルトの名無しさん
2010/07/24(土) 17:46:53# 1] 授業単元: C言語プログラミング
# [2] 問題コード
#
# 三角形の3頂点の座標,(x1,y1),(x2,y2),(x3,y3)を読み込んで 3つの内角の角度θ1,θ2,θ3をdeg単位(°)で計算し,印字するプログラムを作成せよ.
# 但し,double型変数 θ1,θ2,θ3へのポインタ変数とdouble型変数 x1,y1,x2,y2,x3,y3を引数とする関数を作成し,main関数では同関数を呼び出すようにせよ
0449デフォルトの名無しさん
2010/07/24(土) 17:47:57# それから、禁煙区画(あるいは喫煙区画)が窓側又は通路側ともに満席のときには喫煙区画(禁煙区画)でも良いかどうか乗客に尋ねなければならない。
# 乗客がOKすれば(窓側/通路側の希望はできるだけ尊重した上で)空いている座席を割り当て搭乗券を出力し、しなければ「3時間後に次のフライトがあります。」というメッセージを出力して終了する。
#
0450デフォルトの名無しさん
2010/07/24(土) 17:49:05# 1] 授業単元: C言語プログラミング
# [2] 問題コード
#
# 人数nを読み込んだ後,n個のfloat型配列を動的に確保し,配列に身長のデータを読み込んでいき,
# 入力された身長を10cmごとにわけたヒストグラムを生成するプログラムを作成せよ.
# 但し,nの読み込みとn個の動的メモリ確保はmain関数内で行い,身長の読み込み及び,印字する部分は関数として作成せよ.
#
0451デフォルトの名無しさん
2010/07/24(土) 17:50:22# [2] 問題コード
# nを読み込み,n個のint型配列を動的に確保,n個の配列はn人の勇者とする.以下仕様に従ったプログラムを作成せよ.
#
# •それぞれの勇者にヒットポイントを与える.
# •敵のヒットポイントを与える.
# •乱数を発生し,誰の攻撃かを決定する.
# •攻撃をする際に,会心の一撃,普通の攻撃,ミスを乱数で決定する.
# •相手に与えるダメージを乱数で決定する.
# •敵の攻撃の場合,何人にどれだけ攻撃をするかを乱数で決定する.
# •敵のヒットポイントが無くなるか,勇者が全滅したら終了とする
#
#
0452デフォルトの名無しさん
2010/07/24(土) 17:52:23# [1] 授業単元: C言語プログラミング
# [2] 問題コード
# nを読み込み,n個のint型配列を動的に確保し, n回サイコロを振った結果をその配列に格納せよ.
# その後,偶数が出た回数と奇数が出た回数,1から6までの出た目の確率を表示せよ.但し,nの読み込みとn個の動的メモリ確保はmain関数内で行い,サイコロの配列読み込み部分と計算の部分,表示の部分はそれぞれ関数として作成せよ.
#
0453デフォルトの名無しさん
2010/07/24(土) 17:53:32# [1] 授業単元: 情報処理(C言語)
# [2] 問題文:1+2+3+4+5+6…というように足していき、
# その累計がはじめて一万を超える時の値を求めるプログラムを作成せよ。
#
0454デフォルトの名無しさん
2010/07/24(土) 17:55:01# 明日までの宿題なんですがどうしても、できそうにありません
# 丸投げしますのでお願いします
# 【 課題 】
# 電車の券売機シュミレーションプログラム
# Mainクラスで投入金額を入力する
# Machineクラス購入可能切符の中から購入する切符を選択させる
# Ticketクラスで入金額による購入可能切符を出力
# Safeクラスでおつり金種枚数計算(1000円・500円・100円・50円・10円は初期設定で100枚ずつ用意しておく)
# おつりの枚数を初期値より減らす
# Mainで最後にお釣り金額&各枚数
# 購入金額切符を出力して終了
# Main以外のクラスはすべてパッケージ化する
#
0455デフォルトの名無しさん
2010/07/24(土) 17:57:26#
# [1] 授業単元: 解析入門
#
# [2] 問題文(含コード&リンク):
# オイラー法、2次のルンゲクッタ法をそれぞれ用いて、以下の1階常微分方程式の初期値問題を解き、
# 解析解と同じグラフに表示せよ。
# (横軸x/縦軸y)
#
# dy(x) / dx = y (0 <= x <= 3) 初期条件:y(0)=1
# (1)Delta x = 0.1
# (2)Delta x = 0.3
#
0456デフォルトの名無しさん
2010/07/24(土) 17:58:31# [1] 授業単元:プログラミング?
# [2] 問題文(含コード&リンク):以下に示す2つのプログラムを作成せよ
# 1)文字配列の文字列の順序を逆にする関数toReverseを作成せよ。
# また、関数toReverseを用いて入力した文字列の順序を逆にした
# 文字列を表示するプログラムを作成せよ。
# void toReverse(char[]); とする
# 実行例:abcde
# edcba
#
# 2)文字配列の文字列に含まれる小文字を大文字にする関数toUpperを作成し、
# 入力した文字列の小文字を大文字に変換して表示するプログラムを作成せよ。
# 実行例:This is a pen.
# THIS IS A PEN.
#
0457デフォルトの名無しさん
2010/07/24(土) 18:00:34使用言語:J
calctime=: 24 60 60 & #:
calctime 3725
1 2 5
0458デフォルトの名無しさん
2010/07/24(土) 18:00:45# C言語で以下の機能をもつプログラムを作りなさい
# ?12ヶ月分の平均気温が入力できる
# ?入力された月ごとの気温の小数点以下は四捨五入し、その数だけ横に*を並べていくことで気温の推移を視覚化できる
# ?年間平均気温、最高気温、最低気温を計算し、出力できる
#
# C言語自体さっぱりわかりません どなたかよろしくお願いします。
#
0459デフォルトの名無しさん
2010/07/24(土) 18:02:07# [1] 授業単元: 情報処理(C言語)
# [2] 問題文:幅wと高さhを入力し、次のような長方形を
# 表示するプログラムを作成せよ。
# w=7
# h=5
# *******
# *_____*
# *_____*
# *_____*
# *******
# _はスペースです。この掲示板だとずれるのでこのように表記しました。
# 条件として、この処理には繰り返し処理を用いてつくること。
#
0460デフォルトの名無しさん
2010/07/24(土) 18:03:15# 1] 授業単元: C言語プログラミング
# [2] 問題コード
# キーボードから入力した文字列をファイルに書き出すプログラムを作成せよ.
#
# 【実行例】
#
# % ./a.out
# Ikuno
# Soichiro
# Hello World!
# ^D
#
# % cat hoge.txt
# Ikuno
# Soichiro
# Hello World!
#
0461デフォルトの名無しさん
2010/07/24(土) 18:04:21# [1] 授業単元: 情報処理(C言語)
# [2] 問題文:入力した整数を因数分解してその値を全て表示するプログラムを作成せよ。
# ただし、入力した整数が2未満の場合は「2以上の整数を入力してください。」と表示させること。
# 例:整数値42を入力→表示2 3 7
# 整数値340を入力→表示2 2 5 17
0462デフォルトの名無しさん
2010/07/24(土) 18:05:26# 【 課題 】
# 1. アルファベット(a〜z)までの出現個数を数える。なお,大文字は小文字に変えて,数える。もし,出現個数が0個の場合は,出力しない。
#
# 2. 1つの単語を入力すると,1文字目の大文字に,それ以外を小文字に変換して,出力する。 例 kyoto→Kyoto 複数行の入力できるようにして,!記号を入れると,入力が終わるようにする。
#
# 3. 各単語の1文字目を大文字に,2文字目以降を小文字に変換する。 例 Once upon a time ・・・ → Once Upon A Time ・・・
#
0463デフォルトの名無しさん
2010/07/24(土) 18:06:28# [1] 授業単元: 情報基礎
# [2] 問題文(含コード&リンク): http://ime.nu/codepad.org/FIMXj8NN
# 文字列中の文字の出現数を数えて表示するプログラム(count-char.c)*上のリンク*を完成しなさい
# ただしすべての文字の出現回数を表示すること。
#
0464デフォルトの名無しさん
2010/07/24(土) 18:08:20# [1] 授業単元: 情報(C++)
# [2] 問題文:2つの値 x と y の差を(非負の整数として)返す関数形式マクロ diff(x, y) を定義し, main関数で
# 4つの整数 a, b, c, d をキーボードから読み込み, diff(a, b) * diff(c, d) を出力するようなプログラムを作成せよ。
# また, 出力結果が正しいことを確認するため, 関数として diff2(x, y) も作成し,結果が同じになることを同じソースコード内で確認できるようにしなさい。
0465デフォルトの名無しさん
2010/07/24(土) 18:09:12# [1] 授業単元: 情報処理(C言語)
# [2] 問題文:関数y=-X二乗+2X+5におけるXとYの対応表を出力するプログラムを作成せよ。
# ただし(-2<= X <=4)の範囲でXの値が整数の出力すること。
# 縦方向、横方向2パターン作成せよ。
#
# 縦方向の表示結果の例
# X | Y
# ---+---
# -2 |-3
# -1 | 2
# 0 | 5
# 1 | 6
# 2 | 5
# 3 | 2
# 4 |-3
#
# 横方向の表示結果の例
# X| -2 -1 0 1 2 3 4
# --+---------------------
# Y| -3 2 5 6 5 2 -3
#
0466デフォルトの名無しさん
2010/07/24(土) 18:10:16# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):入力ファイルと出力ファイル名をコマンドラインから入力してコピーするプログラムを作成せよ。
#
0467デフォルトの名無しさん
2010/07/24(土) 18:11:23% Prolog
program :-
入力ファイルと出力ファイル名をコマンドラインから入力してコピーする.
入力ファイルと出力ファイル名をコマンドラインから入力してコピーする :-
user_parameters([_入力ファイル,_出力ファイル]),
open(_入力ファイル,read,Input,[type(binary)]),
open(_出力ファイル,write,Output,[type(binary)]),
コピーする(Input,Output),
close(Output),
close(Input).
コピーする(Input,Output) :- 終了(Input),!.
コピーする(Input,Output) :-
get_byte(Input,C),
put_byte(Output,C),
コピーする(Input,Output).
終了(Stream) :- at_end_of_stream(Stream).
0468デフォルトの名無しさん
2010/07/24(土) 18:14:23# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):モンテカルロシミュレータにより円周率の計算をするプログラムを作成せよ
#
0469デフォルトの名無しさん
2010/07/24(土) 20:17:40# 組織のある部門にある能力を持つ人間を追加したり削除したりすることで,その組織全体もしくは部分的な部門の能力を計算するシステムを構築せよ.
# このシステムによって,組織内のニーズにあった人員配置を行なう支援をできると期待できる.
# 基本的にこのシステムは以下の機能を最低限有しなければならない.
#
# 1. 登録すべき部門や副部門を指定する.
# 2. 人物の名前(文字列),資格数(整数),勤務経験年数(整数),年齢を入力する.
# 3. もし,既に十分な人数がシステムに登録済の場合,そのデータと,前段階で入力された資格数,勤務経験年数,年齢に基づき,この人物の能力の値(high, middle or low)をシステムが予測し表示する.
# 4. システム(プログラム)を停止した際,現在,保持しているデータを保存できる.
# 5. システム(プログラム)を起動した際,既存のデータがあれば,それを読み込める.
#
# 単純化のため,能力は人物,組織どちらも金額(円)で表現されているとする.
# 人物も単純化のため,その氏名で区別することとし,同一氏名の人物は組織に追加できなくてもよい.
# 組織の中にある部門は階層的な構造となっており,その階層の深さは均一でない.
# 例えば「/秘書課/」という部門は組織の直下に位置するが,「/営業部/関東営業部/」,「/開発部/半導体課/」,「/研究部/先端科学課/タイムマシン開発グループ/」等2もしは3階層の場合もある.
尚,階層の深さ制限は無いものとする.
# ある部門の下に人物と副部門が同時に配置される場合もある.
# 例えば,営業部部長の田中さんは「/営業部/田中」と表現できるが,関東営業部に属
する山田さんは,「/営業部/関東営業部/山田」となる.
# 尚,本システムでは日本語名は扱えなくてもよい.
0470デフォルトの名無しさん
2010/07/24(土) 20:21:46# 【 課題 】 コマンドラインからファイル名を受け取り、拡張子が txt の場合は内容を表示し、
# txt でない場合はファイル情報を表示しなさい。また、コマンドラインからファイル名が与えられなかった場合には
# FileChooser を使ってファイル名を自由に取得できるようにしなさい。
# 【 補足 】.txtという拡張子の時でもFileChooserが動いてしまうので、
# それをどうにか直したいのですが、うまくいきません。
# 以下がソースです。
# http://ime.nu/www.geocities.jp/lang_lang_true/ss.txt
#
0471デフォルトの名無しさん
2010/07/24(土) 20:27:07# [2] 問題文(含コード&リンク):自動座席予約システムの作成せよ。
# その航空会社が持っている小型航空機(座席数:24)のフライトに座席を割り当てるシステムをプログラミングしなければならない。
# この航空機の座席は中央に通路を挟み左右にそれぞれ2座席ずつの列が計6列ある。
# 座席は 1A, 1B, 1C, 1D, ..., 6A, 6B, 6C, 6D で表示され, 1, 2列目が喫煙区画で,A, D が窓側, B, C が通路側を示している。
# このプログラムはまず最初に次の選択メニューを表示する。
# 喫煙席を希望する方は ● をタイプしてください.
# 禁煙席を希望する方は × をタイプしてください.
# 喫煙/禁煙の選択が終わると, 窓側か通路側かの選択を求める。
# 窓側を希望する方は ! をタイプしてください.
# 通路側を希望する方は # をタイプしてください.
# もし希望に沿える席がすべて予約済みで割り当てられないときには, 窓側/通路側の希望については無視して割り当てる。
# ただし, 「窓側(あるいは通路側)はすでに満席のため通路側(窓側)で予約します」というメッセージを出力し, 以下の
# ように座席番号と喫煙席/禁煙席の区分が書かれた搭乗券を(この課題では画面上に)出力する。
# --------
# 4A 禁煙
# --------
# また, 禁煙区画(あるいは喫煙区画)が窓側/通路側ともに満席のときには喫煙区画(禁煙区画)でも良いかどうか乗客に尋ねなければならない。
# 乗客がOKすれば(窓側/通路側の希望はできるだけ尊重した上で)空いている座席を割り当て搭乗券を出力し, OKしなければ
# 「3時間後に次のフライトがあります.」というメッセージを出力して終了する。
0472デフォルトの名無しさん
2010/07/25(日) 04:54:49# [1] 授業単元:ビジュアルプログラミング
# [2] 問題文:
# -0.0001<x<10.0000、0.0<y<10.0000の範囲で
# ランダムに(x,y)の値を1000個発生させ.
# 散布図のグラフで表示するプログラムを作成せよ
# ヒント:WIN32API関数群についてよく調べること
#
0473デフォルトの名無しさん
2010/07/25(日) 04:58:15#
# テーブルAとテーブルBがあり、
# テーブルAには、1〜1000万までの連番を格納しています。連番はキーです。
# テーブルBの方には、その連番の開始値と連番数が格納されています。
#
# 開始値 | 連番数
# ---------------
# 1001 | 100 ←1001から1100までの意味
# 5001 | 100 ←5001から5100までの意味
# 9001 | 100 ←9001から9100までの意味
#
# テーブルBで指定されている連番に一致するレコードを
# テーブルAから取得するにはどのように書けばよいでしょうか。
# 上記の例だと300件取得する形になりますが、
# テーブルBにも1万件程度のレコードがあります。
0474デフォルトの名無しさん
2010/07/25(日) 17:34:14使用言語:J
f=:dyad define
c=.'*'
c,.(c,(((x, y)-2)$'_'),c),.c
)
4 f 7
*******
*_____*
*_____*
*******
0475デフォルトの名無しさん
2010/07/29(木) 14:46:30「フィボナッチ数列を返すfibsを作りなさい。ただし引数として項の値の上限limitを与えるものとする。
たとえば項の上限を100とすると
(fibs 100)→(1 1 2 3 5 8 13 21 34 55 89)」
(define (fibs limit)
(fibs2 1 1 limit))
(define (fibs2 a b limit)
(空欄 (fibs(?) b (+ a b) limit)
ここまでは先生が教えてくれました。
他にもやりかたがあるらしいのですが、
これが一番処理が早いそうです。
空欄の所を埋めればできると先生が言ってました。
たぶんfilter関数を使うんじゃないかなと思ってます。
あともしかしたら(?)の部分は先生の間違いじゃないかなと思ってます。
どなたかお願いします。
0476デフォルトの名無しさん
2010/08/14(土) 20:35:35変更になっています。今後アクセスは219.165.50.177ではなく上記ドメイン表記で
お願いします。
またこのサイトそのものではありませんが、ほぼ完全にコピーされた
anonymous ftpサイトを用意しました。ftp://nojiriko.asia/prolog/以下で
アクセスできるはずです。
ところで、私は先月から、コピーしての出題、Prologによる解答ともに停止しています。
これは、大量に出題、解答しようとすると、どうしてもアクセス規制がかかって
しまって、どう工夫しても結果として連続投稿になったりして動きが取れなくなった
からです。
しばらくは、上記のアーカイブサイトでの解答の追加や、機能別索引の整備を
進めたいと思っています。
0477デフォルトの名無しさん
2010/09/07(火) 20:39:13http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1146630451
0478デフォルトの名無しさん
2010/09/07(火) 21:13:29明日までにお願いします。
0479デフォルトの名無しさん
2010/09/07(火) 21:21:280480デフォルトの名無しさん
2010/09/22(水) 04:03:17# [1] 授業単元:ネットワーク演習
# [2] 問題文(含コード&リンク):
# インターフェース"eth1"からipv6マルチキャストパケットを受信し、そのパケットをipv6ユニキャストパケット(アドレスは適当でよい)
# に変換してインターフェース"eth3"から送信せよ
#
0481デフォルトの名無しさん
2010/09/22(水) 06:03:25# ひとつのテーブルで各レコードは他のレコードと1:Nの親子関係にあります
# コード 親コード データ
# 1 1 A
# 2 1 B
# 3 2 C
# 4 3 D
# 5 1 E
# 6 2 F
#
# まあこんな感じで1以外は全部親を1つ持ち親はひとつ以上の子を持ちます(子が無い親も居ますが)
# これである親の子レコード以下を下記のような感じで全部抽出したいのでが
# SQLだけで出来ますでしょうか
#
# コード=2のときの抽出結果
# コード データ 世代
# 3 C 1
# 4 D 2
# 6 F 1
#
# 世代は2から何世代下にいるかです、子なら1孫なら2…ということです
#
# また無理ならこうゆうことを可能にするデータ構造を教えてください
# DBはFireBird1.5を想定していますがフリーのDBなら何でも良いです
#
0482デフォルトの名無しさん
2010/09/22(水) 06:20:460483デフォルトの名無しさん
2010/09/22(水) 06:22:12% Prolog
ある親の子孫を世代番号付きですべて調べる(_親番号,_コード,_データ,_世代) :-
子孫(_親番号,_コード,_データ,_世代).
子孫(_親,_子,_データ,1) :- テーブル(_子,_親,_データ).
子孫(A,B,_データ,_世代) :-
テーブル(C,A,_),
子孫(C,B,_データ,_世代の二),
_世代 is _世代の二 + 1.
0484デフォルトの名無しさん
2010/10/01(金) 18:32:05# [1] 授業単元: プログラミング基礎
# [2] 問題文(含コード&リンク):
# 適正なおつりを出すプログラムを作成しなさい
# 例として次のようにすること
# 金額を入力してください。
# 12345
# 一万円:1枚
# 五千円:0枚
# 千円:2枚
# 五百円:0枚
# 百円:3枚
# 五十円:0枚
# 十円:4枚
# 五円:1枚
# 一円:0枚
#
0485デフォルトの名無しさん
2010/10/01(金) 18:40:36% Prolog
http://nojiriko.asia/prolog/c140_479.html
0486デフォルトの名無しさん
2010/10/02(土) 13:50:54使用言語:J
a=:10000 5000 1000 500 100 50 10 5 1
b=:,;._1',一万,五千, 千,五百, 百,五十, 十, 五, 一'
f=:}:@;@(((}:@>@{.,({.@>@}.)#:{:@>@{.);}.@>@{:)^:(#@>@}.))
g=:3 :'(b,"1''円:''),.(":,.f y;a),"1''枚'''
g 12345
一万円:1枚
五千円:0枚
千円:2枚
五百円:0枚
百円:3枚
五十円:0枚
十円:4枚
五円:1枚
一円:0枚
0487デフォルトの名無しさん
2010/10/06(水) 07:06:14# [1] 授業単元: 画像処理
# [2] 問題文(含コード&リンク):
# N×Nのbitmap画像を
# AB
# CD
# のように4等分し、
# DC
# BA
# と並び替えるプログラム
#
0488デフォルトの名無しさん
2010/10/06(水) 07:16:44http://hibari.2ch.net/test/read.cgi/tech/1284632294/586
# [1] 授業単元: 画像処理
# [2] 問題文(含コード&リンク):
# N×Nのbitmap画像を
# AB
# CD
# のように4等分し、
# DC
# BA
# と並び替えるプログラム
#
# [5] その他の制限: 並び替え前後どちらも1次元配列、左下原点(in[0])でお願いします。
0489デフォルトの名無しさん
2010/10/06(水) 16:18:42% Prolog ならびの要素は画素であるとした。
左下を原点として一次元のならびで表現された画像の区画変換(N,_原画像,_並び替えた画像) :-
Len1 is N // 2,
findall([_区画番号,_行単位の区画],member_L(1,_区画番号,Len1,_行単位の区画,_原画像),LL),
区画要素のみ取り出す(4,LL,LL4),
区画要素のみ取り出す(3,LL,LL3),
区画要素のみ取り出す(1,LL,LL1),
区画要素のみ取り出す(2,LL,LL2),
一次元ならびの写像(LL4,LL3,Y),
一時元ならびの写像(LL1,LL2,Z),
append(Y,Z,_並び替えた画像).
一次元ならびの写像([],[],[]) :- !.
一次元ならびの写像([L1|R1],[L2|R2],[L3|R3]) :- append(L1,L2,L3),一次元ならびの写像(R1,R2,R3).
区画の要素のみ取り出す(_初期区画番号,LL,X) :- findall(L,member([_初期区画番号,L],LL),X).
member_L(M,M,N,Lx,L) :-
length(Lx,N),
append(Lx,R,L).
member_L(4,M,N,Lx,L) :-
length(L1,N),
append(L1,R,L),
member_L(1,M,N,Lx,R),!.
member_L(M1,M,N,Lx,L) :-
length(L1,N),
append(L1,R,L),
M2 is M + 1,
member_L(M2,M,N,Lx,R).
0490デフォルトの名無しさん
2010/10/06(水) 16:21:13一時元ならびの写像(LL1,LL2,Z), -> 一次元ならびの写像(LL1,LL2,Z),
0491デフォルトの名無しさん
2010/10/06(水) 18:08:45使用言語:J
変換部分だけ。
f=:monad def',/;"1|."1 a<\"1>|.(a=.--:{.$y)<\y'
]a=:i.2 2
0 1
2 3
f a
3 2
1 0
]b=:i.4 4
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
f b
10 11 8 9
14 15 12 13
2 3 0 1
6 7 4 5
0492デフォルトの名無しさん
2010/10/06(水) 22:37:20使用言語:maxima
f(x):=(k:[10000,5000,1000,500,100,50,10,5,1],
for i in k do (printf(true,"~5dyen:~dmai~%",i,fix(x/i),x:mod(x,i))));
(%i69) f(12345);
10000yen:1mai
5000yen:0mai
1000yen:2mai
500yen:0mai
100yen:3mai
50yen:0mai
10yen:4mai
5yen:1mai
1yen:0mai
0493デフォルトの名無しさん
2010/10/07(木) 00:21:20# [1] 授業単元:プログラミング技術
# [2] 問題文(含コード&リンク):http://ime.nu/rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=0109&lang=jp
#
# Smart Calculator
# 式を入力すると、その値を計算して出力し終了するプログラムを作成してください。
# 式は数値、演算記号、かっこからなり、=で終わります。
# 演算記号は+,-,*,/ の4つで、それぞれ、加算、減算、乗算、除算を表します。
# 四則演算の優先順位は通常の計算と同じとします。すなわち乗算・除算は加算・減算よりも優先され、 同じ優先順位なら左から計算が行われます。
# 0での割り算は発生しないものとします。
# 演算はすべて整数で行い、小数点以下切捨てとします。
# 入力される式の長さは100文字以内とします。
# Input
# 複数のデータセットが与えられます。最初にデータセットの数nが与えられます。続いてn行の数式が与えられます。
# Output
# 各データセットについて、計算結果を出力してください。
# Sample Input
# 2
# 4-2*3=
# 4*(8+4+3)=
#
# Output for the Sample Input
# -2
# 60
0494デフォルトの名無しさん
2010/10/09(土) 19:49:28使用言語:Io
f:=method(x,
list(10000,5000,1000,500,100,50,10,5,1)map(v,
writeln(v,"yen:",(x/v)floor,"mai")
x=x%v
)
)
Io> f(12345)
10000yen:1mai
5000yen:0mai
1000yen:2mai
500yen:0mai
100yen:3mai
50yen:0mai
10yen:4mai
5yen:1mai
1yen:0mai
0495デフォルトの名無しさん
2010/10/10(日) 07:07:49# [1] 授業単元:プログラミング実習
# [2] 問題文(含コード&リンク):以下の式が成り立つように英字に数字をあてはめよ。
# ただし同じ英字には同じ数字が当てはまる。
# send
# +)more
# ------
# money
#
0496デフォルトの名無しさん
2010/10/13(水) 09:40:35# [1] 授業単元:基礎プログラミング
# [2] 問題文(含コード&リンク)
# 下記の様に、料理名の入力や材料名をキーボードより入力して、人数分の料理のレシピを計算して表示するプログラムを作成しなさい.
# 今日の料理名は何ですか:(料理名)
# 材料名は何ですか:( 材料)
# ( 材料) は一人当たり何グラム必要ですか:(分量)
# 何人分の料理を作りますか:(人数)
# ==レシピ==
# 今日は、(料理名)を作りましょう。
# 「(料理名)を(人数)人分作るには,(改行)
# ( 材料) が ( 分量×人数 ) グラム必要です」
# *()内の料理名や材料には自分の好きな名前を考えてください。 * 人数、分量はキーボードから入力した値を使用してください。
# printf 関数内で%sや%dを使用して、文字列(料理名・材料名)や整数値(人数・分量)を表示すること。
#
0497デフォルトの名無しさん
2010/10/13(水) 18:46:29% Prolog
http://nojiriko.asia/prolog/c140_944.html
0498デフォルトの名無しさん
2010/10/13(水) 19:33:29% Prolog その一
'以下の式(send+more=money)が成り立つように英字に数字をあてはめよ。ただし同じ英字には同じ数字が当ては
まる。'(_数1,_数2,_数3) :-
abolish(アルファベット数値対応/2),
アルファベットを得る([send,more,money],_アルファベット),
アルファベット対応数値候補表の定義(_アルファベット),
語彙に対応する数を得る(send,_数1),
語彙に対応する数を得る(more,_数2),
語彙に対応する数を得る(money,_数3),
_数3 is _数1 + _数2.
アルファベット対応数値候補表の定義(_アルファベット) :-
append(_,[_文字|R],_アルファベット),
for(0,N,9),
assertz(アルファベット数値対応(_文字,N)),
R = [],!.
語彙に対応する数を得る(_語彙,_数) :-
atom_chars(_語彙,_文字ならび),
アルファベットを基礎に数のならびを得る(_文字列ならび,_数ならび),
数字ならびから10進数を得る(_数ならび,_,_数).
アルファベットを基礎に数のならびを得る([],[]) :- !.
アルファベットを基礎に数のならびを得る([A|R1],[N|R2]) :-
アルファベット数値対応(A,N),
アルファベットを基礎に数のならびを得る(R1,R2).
0499デフォルトの名無しさん
2010/10/13(水) 19:35:08% Prolog その二
数字ならびから10進数を得る([N],0,N) :- !.
数字ならびから10進数を得る([M|R],J,N) :-
数字ならびから10進数を得る(R,J1,N1),
J is J1 + 1,
N is M * truncate(10 ^ J1) + N1.
アルファベットを得る(_語彙ならび,_アルファベット) :-
concat_atom(_語彙ならび,S),
atom_hcars(S,Chars),
setof(_文字,member(_文字,Chars),_アルファベット).
0500デフォルトの名無しさん
2010/10/14(木) 08:34:25# 口頭で説明されたものを書くので分かりづらかったらごめんなさい
# 【質問テンプレ】
# [1] 授業単元:プログラミング?
# [2] 問題文(含コード&リンク):
# 5種類の通貨(a,b,c,d,e)が存在する
# 最初に幾らかのお金を渡されるそのお金はa,b,c,d,e以外にも
# aとしてもbとしても使えるものbとしてもdとしても使えるものなどがある
# そのお金を持って商品を買うが商品には特定の通貨しか使えない
# ただし、a,bどちらでも払える商品やb,dどちらでも払える商品もある
# それらの商品の合計が渡されるのでソレを手持ちのお金で変えるかどうかを答えよ
# 合計は配列p[15]として辞書順で与えられる(例えばaで払えるものp[0]bとcで払えるものはp[7])
# ex)p={3,2,0,0,0,0,2,0,0,0,0,0,0,0,0}
# だとa=3,ab=2,bc=2なので
# 手持ちが{5,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0}
# a=5,b=2ならはらえる
#
0501デフォルトの名無しさん
2010/10/14(木) 08:37:04Haskellの人、やーい
0502デフォルトの名無しさん
2010/10/15(金) 07:41:37# [1] 授業単元:C言語基礎実習
# [2] 問題文(含コード&リンク):0未満の数が入力されるまで
# 入力を求め、その入力した回数と入力した数値の合計値を表示するプログラムを作成しなさい。
# なお、0未満の数は回数と合計値に含めないものとする。
#
0503デフォルトの名無しさん
2010/10/15(金) 08:08:21% Prolog
http://nojiriko.asia/prolog/c141_22.html
0504デフォルトの名無しさん
2010/10/15(金) 09:00:55# [1] 授業単元:C言語基礎実習
# [2] 問題文(含コード&リンク):入力された数値を逆順に表示せよ。
# なお、この動作は0未満の値が入力されるまで 繰り返すものとする。
#
0505デフォルトの名無しさん
2010/10/15(金) 09:55:52% Prolog
'0未満の数が入力されるまで入力を求め、その入力した回数と入力した数値の合計値を表示する' :-
'0未満の数が入力されるまで入力を求め、その入力した回数と入力した数値の合計値を表示する'(_入力した回数,_合計値),
write_formatted('入力した回数 = %t, 合計値 = %t\n',[_入力した回数,_合計値]),!.
'0未満の数が入力されるまで入力を求め、その入力した回数と入力した数値の合計値を表示する'(_入力した回数,_合計値) :-
数の入力(I),
'0未満の数が入力されるまで入力を求め、その入力した回数と入力した数値の合計値を表示する'(I,_入力した回数,_合計値).
'0未満の数が入力されるまで入力を求め、その入力した回数と入力した数値の合計値を表示する'(J,0,0) :- J< 0,!.
'0未満の数が入力されるまで入力を求め、その入力した回数と入力した数値の合計値を表示する'(J,_回数,_合計値) :-
数の入力(I),
'0未満の数が入力されるまで入力を求め、その入力した回数と入力した数値の合計値を表示する'(I,_回数_1,_合計値_1),
_回数 is _回数_1 + 1,
_合計値 is _合計値_1 + J.
数の入力(I) :-
write('数を入力してください(終了するには0未満の数を入力) : '),
get_line(Line),
数の入力診断(Line,I),!.
数の入力(I) :- 数の入力(I).
数の入力診断(Line,I) :- atom_to_term(Line,I,_),number(I),!.
数の入力診断(Line,I) :-
write_formatted('入力された %t から適切な数が得られませんでした\n再入力をお願いします\n',[Line]),
fail.
0506デフォルトの名無しさん
2010/10/15(金) 10:05:50% Prolog
'入力された数値を逆順に表示せよ。なお、この動作は0未満の値が入力されるまで 繰り返すものとする。' :-
数の入力(_数値),
number_chars(_数値,_数値文字ならび),
reverse(_数値文字ならび,_逆順にされた数値文字ならび),
concat_atom(_逆順にされた数値文字ならび,_逆順にした数値表現),
write_formatted('逆順にされた数値表現は %t\n',[_逆順にした数値表現]),!.
数の入力(I) :-
write('数を入力してください(終了するには0未満の数を入力) : '),
get_line(Line),
数の入力診断(Line,I),!.
数の入力(I) :- 数の入力(I).
数の入力診断(Line,I) :- atom_to_term(Line,I,_),number(I),!.
数の入力診断(Line,I) :-
write_formatted('入力された %t から適切な数が得られませんでした\n再入力をお願いします\n',[Line]),
fail.
0507デフォルトの名無しさん
2010/10/17(日) 05:51:52# 次のような宿題が出たのですが、まったく分かりません。
# ぜひ教えてください。お願いします。
#
# • void concat(struct node *p, struct node *q)
# ノード*p以降のリストの後に,ノード*q以降のリストを連結
# する関数
#
# • int length(struct node *p)
# ノード*p以降のリストの長さを返す関数
#
0508デフォルトの名無しさん
2010/10/19(火) 14:49:38# [1] 授業単元:
# [2] 問題文(含コード&リンク):
# 下のプログラム(簡単なスタックマシン)を次のように改造せよ
# 1,Enterが入力されても何もしない
# 2,演算子 +.-,*,/.%,^のいずれかが入力されたら
# スタックに2つ以上数値が積まれているか確認する
# 2-1,積まれていなかった場合は"EROOR"を表示
# 2-2,積まれていた場合は、スタックから2つのデータをポップして
# 指定の演算を行い、その結果をプッシュする
# 3,プロンプトを表示して次の入力まで待機
# 問題のプログラムは↓の 10949.cです
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0509デフォルトの名無しさん
2010/10/19(火) 18:16:08# ●正規表現の使用環境 php5
# ●検索か置換か? 置換
# ●説明 tableタグ内の改行(<br />)を全て削除したい
#
# ●対象データ
# <table border="1" cellpadding="5" cellspacing="0" class="xx" id="xx"><br />
# <tbody><br />
# <tr><br />
# <td><br />
# </td><br />
# </tr><br />
# </tbody><br />
# </table>
#
# ●希望する結果
# <table border="1" cellpadding="5" cellspacing="0" class="xx" id="xx">
# <tbody>
# <tr>
# <td>
# </td>
# </tr>
# </tbody>
# </table>
0510デフォルトの名無しさん
2010/10/19(火) 18:30:25% Prolog
'tableタグ内の改行タグを全て削除したい'(_ファイル) :-
get_chars(_ファイル,Chars),
'tableタグ内の改行タグを全て削除したい'(Chars,L),
put_chars(_ファイル,L).
'tableタグ内の改行タグを全て削除したい'([],[]) :- !.
'tableタグ内の改行タグを全て削除したい'(L1,L2) :-
append(L0,[<,t,a,b,l,e,>|R],L1),
append(L2,[<,/,t,a,b,l,e,>|R2],R),
'改行タグの削除'(L2,L3),
'tableタグ内の改行タグを全て削除したい'(R2,L4),
append(L0,[<,t,a,b,l,e,>|L3],L4,L2),!.
'tableタグ内の改行タグを全て削除したい'(L,L).
'改行タグの削除'([],[<,/,t,a,b,l,e,>]) :- !.
'改行タグの削除'([<,b,r,' ',/,>|R1],R2) :-
'改行タグの削除'(R1,R2),!.
'改行タグの削除'([A|R1],[A|R2]) :-
'改行タグの削除'(R1,R2),!.
0511デフォルトの名無しさん
2010/10/19(火) 18:51:08それは正規表現を使っていないのでダメでしょう
0512デフォルトの名無しさん
2010/10/19(火) 19:46:25% Prolog (その一)
簡単なスタックマシン(Stack1,Stack2) :-
rawmode,
write('?- '),
get_char(_文字),
評価(_文字,Stack1,Stack3),
簡単なスタックマシン(Stack3,Stack2).
評価('\n',Stack1,Stack2) :-
get_char(_文字),
評価(_文字,Stack1,Stack2),!.
評価(_文字,Stack1,Stack2) :-
append(_,[_文字|_],['+','-','*','/','%','^']),
式評価(_文字,Stack1,Stack2,U),
評価(_文字,Stack1,Stack2) :-
\+(append(_,[_文字|_],['+','-','*','/','%','^'])),
数値の切り取り(_文字,L,_次の文字),
number_chars(_数値,L),
push(_数値,Stack1,Stack3),
評価(_次の文字,Stack3,Stack2).
0513デフォルトの名無しさん
2010/10/19(火) 19:47:50% Prolog (その二)
式評価('%',Stack1,Stack4,U) :- 式評価(mod,Stack1,Stack4,U),!.
式評価(_文字,Stack1,Stack2,U) :-
pop(_値2,Stack1,Stack3),
pop(_値1,Stack3,Stack4),
_式 =.. [_文字,_値1,_値2],
U is _式,
write_formatted('%t\n',[U]),
push(U,Stack4,Stack2),!.
式評価(_文字,Stack1,Stack2,_) :-
write('ERROR\n'),
get_char(_文字),
評価(_文字,Stack1,Stack2).
数値の切り取り('\n',[],'\n') :- !.
数値の切り取り(_次の文字,[],_次の文字) :-
\+(member(_次の文字,['0','1','2','3','4','5','6','7','8','9','.'])),!.
数値の切り取り(_文字,[_文字|R],_次の文字) :-
get_char(_文字2),
数値の切り取り(_文字2,R,_次の文字).
push(A,Stack,[A|Stack]).
pop(A,[A|Stack],Stack).
0514デフォルトの名無しさん
2010/10/22(金) 03:16:23# 550、600、700、1,000、1,200、
# 1,500、2,500、3,000円の商品を
# 売っている店がある。
# x円でお釣りが最も少なくなるよう買うには
# どう買えば良いか?
#
# 例: 手持ち8,520円の場合
# 3,000円の商品を2個=6,000円
# 2,500円の商品を1個=2,500円
# と買えば合計8,500円、釣り20円
0515デフォルトの名無しさん
2010/10/22(金) 05:46:47% Prolog
http://nojiriko.asia/prolog/ironna5_514.html
0516デフォルトの名無しさん
2010/10/30(土) 04:44:53# [1] 授業単元:自然言語処理
# [2] 問題文(含コード&リンク):
# ttp://nlp.dse.ibaraki.ac.jp/~shinnou/lecture/nl/rep1.pdf
# 課題2のみです。
# 課題2 次の図はループのない有向グラフである。辺の向きは記載されていないが、左から右である。
# V9 ! V12 とV13 ! V3 に注意すること。
# V0 をStart ノード、V6 をEnd ノードとして、V0 からV6 に至るパスのうちで、重みの和が
# 最大となるようなパスをViterbi アルゴリズムにより求めるプログラムをC あるいはJava
# で作成せよ。
# ただしグラフは、入力する形でなくても、プログラムの中で予め配列などで作成しておく形
# でもよい。
# > kadai2.exe
# 重みが最大のパスは
# V0 --> V* --> V* ・・・・--> V6
0517デフォルトの名無しさん
2010/10/30(土) 04:46:25# 重みの和は***
# 有向グラフ('V0','V1',1).
# 有向グラフ('V1','V2',2).
# 有向グラフ('V2','V3',5).
# 有向グラフ('V3','V4',8).
# 有向グラフ('V4','V5',2).
# 有向グラフ('V5','V6',1).
# 有向グラフ('V7','V6',2).
# 有向グラフ('V8','V7',1).
# 有向グラフ('V9','V8',5).
# 有向グラフ('V10','V9',2).
# 有向グラフ('V10','V11',6).
# 有向グラフ('V11','V12',5).
# 有向グラフ('V12','V13',1).
# 有向グラフ('V0','V10',3).
# 有向グラフ('V1','V11',1).
# 有向グラフ('V2','V12',4).
# 有向グラフ('V8','V5',6).
# 有向グラフ('V9','V12',7).
# 有向グラフ('V9','V13',1).
# 有向グラフ('V11','V9',3).
# 有向グラフ('V12','V3',8).
# 有向グラフ('V12','V5',2).
# 有向グラフ('V13','V8',3).
# 有向グラフ('V13','V3',1).
#
0518デフォルトの名無しさん
2010/11/07(日) 18:33:28# <問題>
# ノートを7冊ずつ配ると28冊余り,10冊ずつ配ると最後の一人にわたすノートは
# 他の半分にも達しませんでした。ノートの数と人数を求めなさい。 <開成中入試問題>
#
0519デフォルトの名無しさん
2010/11/14(日) 17:54:37# よろしくお願いいたします。
# [1] 授業単元:C++言語入門
# [2] 問題文(含コード&リンク):
#
# ネットワークのルートアドレスとネットマスク、そしてチェックしたいIPアドレスを
# 渡して、チェックしたいIPアドレスがそのネットワークに含まれているかどうかを
# チェックする関数int checkIPAddress(unsigned int root,unsigned int mask,unsigned
# int address)を以下のように書いた。空欄をうめよ。
# ただし、あるIPアドレスがネットワークに含まれているかどうかチェックするには、
# ネットワークのルートアドレス(root)と、チェックしたいIPアドレス(address)の
# ネットワークIDを比較してその値が同じであったら、そのネットワークに含まれていると
# 判定します。IPアドレス中のネットワーク部は、ネットマスクのビットパターンが1である部分と
# 考えます。IPアドレスからネットワークIPを取り出すには、IPアドレスをネットマスクの
# ビットごとのANDを取り出します。詳細はインターネットの検索エンジンで「ネットマスク」
# をキーワードに調べてください。
#
# int checkIPAddress(unsigned int root,unsigned int mask,unsigned int address)
# {
# return(root 空欄? 空欄?)==(root 空欄? 空欄?)
# }
#
0520デフォルトの名無しさん
2010/11/27(土) 02:30:19# [1] 授業単元:C/C++の宿題片付けます 143代目
# [2] 問題文(含コード&リンク): ニュートン法により実数の平方根を求める関数を作成せよ。(引数double, 戻り値double)
#
0521デフォルトの名無しさん
2010/11/30(火) 07:32:52% Prolog
'ニュートン法を用いて実数の平方根を求める'(_実数,_平方根) :-
'ニュートン法を用いて実数の平方根を求める'(0,5,_実数,1.0,_平方根),!.
'ニュートン法を用いて実数の平方根を求める'(Max,Max,_実数,X,X) :- !.
'ニュートン法を用いて実数の平方根を求める'(N,Max,_実数,X1,X) :-
Y is X1 * X1 - _実数,
Y2 is 2 * X1,
X2 is X1 - Y / Y2,
N2 is N + 1,
'ニュートン法を用いて実数の平方根を求める'(N2,Max,_実数,X2,X).
0522デフォルトの名無しさん
2010/11/30(火) 07:47:22% Prolog
'ノートを7冊ずつ配ると28冊余り,10冊ずつ配ると最後の一人にわたすノートは他の半分にも達しませんでした。ノートの数と人数を求めなさい。'(_ノートの数,_人数) :-
'10冊ずつ配るとひとり少ない人数分だけは完全にあるということです',
これを_10冊を完全に配ることのできる人数とすると,
'一旦最後ひとり分(7個)も取り崩して',
'28冊に加えてからこれを(10-7)個ずつ確実に渡すことのできる人数が_10冊を完全に配ることのできる人数ということになります'(_10冊を完全に配ることのできる人数),
余りが最後の人が受け取る冊数になり、これは10冊の半分未満でないといけません,
人数はそれに1を加えたものであり(_10冊を完全に配ることのできる人数,_人数),
本の冊数は(_人数,_本の冊数).
'28冊に加えてからこれを(10-7)個ずつ確実に渡すことのできる人数が_10冊を完全に配ることのできる人数ということになります'(_10冊を完全に配ることのできる人数) :-
_10冊を完全に配ることのできる人数 is (28 + 7) // (10 - 7).
余りが最後の人が受け取る冊数になり、これは10冊の半分未満でないといけません :-
_最後の人が受け取る冊数 is (28 + 7) mod (10 - 7),
_最後の人が受け取る冊数 < 10 // 2.
人数はそれに1を加えたものであり(_10冊を完全に配ることのできる人数,_人数) :-
_人数 is _10冊を完全に配ることのできる人数 + 1.
本の冊数は(_人数,_本の冊数) :-
_本の冊数 is 7 * _人数 + 28.
'10冊ずつ配るとひとり少ない人数分だけは完全にあるということです' :- true.
これを_10冊を完全に配ることのできる人数とすると :- true.
'一旦最後ひとり分(7個)も取り崩して' :- true.
0524デフォルトの名無しさん
2010/11/30(火) 07:54:46余りが最後の人が受け取る冊数になり、これは10冊の半分未満でないといけません :- true.
0525お題
2010/12/14(火) 16:08:370526デフォルトの名無しさん
2010/12/19(日) 06:12:51# 以下の指示に従い、エラストテネスのふるいを使い素数生成を行うプログラムを書きなさい。
#
# エラストテネスの篩を実行すると、整数生成と篩の2つのプロセスが生成される。
# 整数生成は指定最大値までの自然数のストリームを生成し、篩はそれをふるいにかけ
# 素数のストリームを素数ストリームに返す。
# 整数生成と篩とはそれぞれ並行して動き、整数生成で生成された自然数のストリームは
# 引数の変数を介して順次篩に渡される。
# プロセス間の同期は、ストリームの各要素が具体化されるまで待つ、という形で自然に表現される。
#
# 整数生成、篩の各プログラムはそれぞれ以下のようになる。
# 整数生成は、自然数のストリームを順次生成し指定最大値を超えたら終了する。
# 篩は、2,3,5,7,..などの各素数の倍数をストリームから取り除く"ふるい"を順に
# 生成しながら、求まった素数を順次ストリームの要素として返す。
# 各"ふるい"は変数を介して直列につながれていくため、自然数のストリームから素数のみの
# ストリームを求めることができる。
#
# 注意.. 漢字の"篩"とかなの"ふるい"を使い分けている。
0527デフォルトの名無しさん
2011/01/14(金) 11:24:45# [1] 授業単元:プログラミングC++入門
# [2] 問題文:問1・以下のクラスを作り、オブジェクトを生成して、全てのメンバ関数を実行せよ。ただし、体力は整数形の変則とする。
# クラス名ねずみ メンバ変数 名前 種族 体力 メンバ関数 コンストラクタ 自己紹介 体力を上げる 体力を下げる 体力の値を返す
# 問2・問1で作ったクラスから、以下のような派生クラスを作り、そのオブジェクトを生成して、派生クラスが持つ全てのメンバ関数を実行せよ。
# ただし、職業はコンストラクタにより、ディズニーキャラクターとせよ。また、自己紹介は名前の他に職業も紹介させよ。
# それから、踊ったら体力が回復するようにせよ。体力の増減量は決めていい。
# 問3・上記の派生クラスおよび期底クラスにおいて、体力の上限を設け、その上限に達した場合、IF文を使ってそれ以上値が増加しないようにせよ。
# また同様に、体力が負の値にならないようにせよ。そして体力がゼロならば踊れないようにせよ。
# 問4・問3で改良したオブジェクトに対して、WHILE文やFOR文を使って、体力がゼロになって踊れなくなるまで繰り返し躍らせよ。
# 問5・今までの問で作ってきたクラスのオブジェクトを、配列を使って2つ生成せよ。そして、それぞれに異なる名前を与え、全てのメンバ関数を実行せよ。
0528デフォルトの名無しさん
2011/01/24(月) 12:07:59open System.Threading
type Msg = int * AsyncReplyChannel<bool>
let sift =
MailboxProcessor.Start (fun inbox ->
let rec loop (filters : MailboxProcessor<Msg> list) = async {
let! n = inbox.Receive()
if filters |> List.forall (fun f -> f.PostAndReply(fun r -> (n, r))) then
printfn "素数発見 : %d" n
let filter = MailboxProcessor<Msg>.Start (fun inbox ->
let rec loop'() = async {
let! (m, r) = inbox.Receive()
m % n <> 0 |> r.Reply
return! loop'() }
loop'())
return! loop (filter::filters)
else
return! loop filters }
loop [])
let gen maximum =
Async.Start(async {
printfn "2 〜 %d の素数探索開始" maximum
seq {2 .. maximum} |> Seq.iter (fun n ->
sift.Post(n); Thread.Sleep(200))
printfn "素数探索終了" })
gen 100
System.Console.ReadKey() |> ignore
0529デフォルトの名無しさん
2011/01/27(木) 23:15:22#
# [問題]
# 始点、終点の座標と、途中にある円の中心座標、半径が与えられる。
# 始点から終点に移動するとき、円周の線をまたがなければならない回数の最小回数を求めよ。
# ただし、円同士の円周・始点・終点は接触しないものとする。
#
0530デフォルトの名無しさん
2011/01/28(金) 11:25:25echoサーバ(Port) :-
socket(internet,stream,Socket),
socket_bind(Socket,Port),
socket_listen(Socket),
socket_accept(Socket,Host:Port2,NewSocket),
open(NewSocket,read,Instream),
open(NewSocket,write,Outstream),
get_char(Instream,Char),
echo(Instream,Outstream,Char),
close(Outstream),
close(Instream),
socket_shutdown(Socket),
socket_shutdown(NewSocket).
echo(_,_,end_of_file) :- !.
echo(Instream,Outstream,Char) :-
put_char(Outstream,Char),
flush_output(Outstream),
get_char(Instream,Char2),
echo(Instream,Outstream,Char2).
0531デフォルトの名無しさん
2011/01/31(月) 17:19:57let leastBorders xs ys rs xy1 xy2 =
let checkInside (x1, y1, r) (x2, y2) =
pown (x1 - x2) 2 + pown (y1 - y2) 2 <= r * r
Array.zip3 xs ys rs |> Array.sumBy (fun xyr ->
if [xy1; xy2] |> List.map (checkInside xyr) |> List.reduce (<>) then 1 else 0)
0532デフォルトの名無しさん
2011/02/24(木) 22:38:54.50#! /usr/bin/awk -f
#echo server
BEGIN {
echoC = "/inet/tcp/10000/0/0"
while((echoC |& getline) > 0) {
print "受理日時: "strftime("%Y年%m月%d日 %H:%M:%S") ": " $0
print "受理: " $0 |& echoC
close(echoC)
}
}
0533532
2011/02/24(木) 22:40:00.23以下のように訂正。
#! /usr/bin/gawk -f
0534デフォルトの名無しさん
2011/03/26(土) 23:42:54.23A222BあああA555BえええAおおおB55A454B
と入っていたとします。
この文字列の
AとBとその間の文字を1セットにして、AとBの間の文字に5が入っていたときだけ、AとBを削除する
このようなロジックをつくっていただけないでしょうか?
0535デフォルトの名無しさん
2011/03/27(日) 01:27:45.06正規表現の例は置いておくからテキストボックスからテキスト拾ってきてうんぬんとかは自分でどうにかしろ
Ruby 1.9.2
# coding: windows-31J
s="A222BあああA555BえええAおおおB55A454B"
s.gsub!(/(A5+B)|(B5+A)/, "")
puts s
0536デフォルトの名無しさん
2011/03/27(日) 06:06:22.97% Prolog
'AとBとその間の文字を1セットにして、AとBの間の文字に5が入っていたときだけ、AとB
を削除する'(_文字列,_置換文字列) :-
atom_chars(_文字列,Chars),
文字ならびの置換(Chars,Chars2),
atom_chars(_置換文字列,Chars2).
文字ならびの置換([],[]) :- !.
文字ならびの置換(['A'|R1],L) :-
最初に現れるBの間に5が存在する(R1,L0,R2),
文字ならびの置換(R2,L2),
append(L0,L2,L).
文字列ならびの置換([_文字|R1],[_文字|R2]) :-
文字ならびの置換(R1,R2).
最初に現れるBの間に5が存在する(R1,L0,L2) :-
append(L0,['B'|L2],R1),!,
\+(append(_,['A'|_],L0)),
append(_,['5'|_],L0),!.
0537デフォルトの名無しさん
2011/03/27(日) 06:08:55.06'AとBとその間の文字を1セットにして、AとBの間の文字に5が入っていたときだけ、AとBを削除する'(_文字列,_置換文字列) :-
atom_chars(_文字列,Chars),
文字ならびの置換(Chars,Chars2),
atom_chars(_置換文字列,Chars2).
文字ならびの置換([],[]) :- !.
文字ならびの置換(['A'|R1],L) :-
最初に現れるBの間に5が存在する(R1,L0,R2),
文字ならびの置換(R2,L2),
append(L0,L2,L).
文字列ならびの置換([_文字|R1],[_文字|R2]) :-
文字ならびの置換(R1,R2).
0538537
2011/03/27(日) 06:52:31.59% Prolog
'AとBとその間の文字を1セットにして、AとBの間の文字に5が入っていたときだけ、AとBを削除する'(_文字列,_置換文字列) :-
atom_chars(_文字列,Chars),
'間に5を含むAとBを削除する'(Chars,Chars2),
atom_chars(_置換文字列,Chars2).
'間に5を含むAとBを削除する'([],[]) :- !.
'間に5を含むAとBを削除する'(['A'|R1],L) :-
最初に現れるBの間に5が存在する(R1,L0,R2),
'間に5を含むAとBを削除する'(R2,L2),
append(L0,L2,L),!.
'間に5を含むAとBを削除する'([_文字|R1],[_文字|R2]) :-
'間に5を含むAとBを削除する'(R1,R2).
最初に現れるBの間に5が存在する(R1,L0,L2) :-
append(L0,['B'|L2],R1),!,
\+(append(_,['A'|_],L0)),
append(_,['5'|_],L0),!.
0539538
2011/03/27(日) 07:31:13.78_置換文字列 を _削除された文字列
に直してください。
0540デフォルトの名無しさん
2011/03/29(火) 14:59:16.06[問題]
2値化した画像の輪郭追跡処理をする。
できたら、
(1)getpixel等を使った、時間はかかるが初心者でも理解しやすいもの
(2)処理がはやくなるように工夫したもの
の2種類作っていただけるとありがたいです。
0541デフォルトの名無しさん
2011/04/08(金) 17:49:29.730542デフォルトの名無しさん
2011/04/08(金) 23:56:31.52あなたに適したスレはおそらくこちら
★★Java質問・相談スレッド144★★
http://hibari.2ch.net/test/read.cgi/tech/1300950228/
0543デフォルトの名無しさん
2011/04/09(土) 00:50:47.04ありがとうございます。
そちらの方で質問しても回答を期待できますか?
無理してJavaプログラミングの講座を取ったのですが行くなり苦戦しています。
0544デフォルトの名無しさん
2011/04/09(土) 09:27:01.02「JAVAの宿題片付けます」というようなスレが
あったのですが、今は新スレが作られていない
ようですね。新学期が始まるとまた作られると
思いますが。
このスレは例えばJAVAの宿題スレから問題を
貰ってきて、別の言語で解答を出し合い、
言語表現の違いを楽しむためのスレです。
0545デフォルトの名無しさん
2011/04/09(土) 13:53:25.28【課題】キーボードから入力された1〜9までを九九にし、
答えを1行に3個ずつ表示する。半角数字以外が入力された場合、
任意のエラーメッセージを表示させること。
【形態】public class Kuku1{で始める
【期限】4月11日
【Ver 】jdk1.6.0_24
【注】変数、if,for,whileまで学習。
単なる九九の計算のプログラムはできるのですが、例えば、3と入力して
3の段の答えだけを表示するやり方、エラーを表示させるやり方、
3つずつというのが全くわかりません。
よろしくお願いします。
0546デフォルトの名無しさん
2011/04/09(土) 14:02:43.860547デフォルトの名無しさん
2011/06/16(木) 04:43:33.800548デフォルトの名無しさん
2011/06/22(水) 18:24:10.69等速直線運動するプログラムをJavaを用いて作成せよ.
お願いします。
0549デフォルトの名無しさん
2011/06/22(水) 19:08:30.99javaで宿題スレって無いのか?
0550デフォルトの名無しさん
2011/06/23(木) 02:33:40.74フィルター部分はできたのですが、画像を配列に読み込み書き出す方法が分かりません。
どなたかプログラムしてくれませんか?
0551デフォルトの名無しさん
2011/06/23(木) 19:16:15.89% Prolog
'キーボードから入力された1〜9までを九九にし、答えを1行に3個ずつ表示する' :-
'キーボードから入力された1〜9までを'(_1〜9までの数),
append(_,[[N1,N2,N3]|R],[[1,2,3],[4,5,6],[7,8,9]]),
M1 is N1 * _1〜9までの数,
M2 is N2 * _1〜9までの数,
M3 is N3 * _1〜9までの数,
writef('%t %t %t\n',[M1,M2,M3]),
R = [].
'キーボードから入力された1〜9までを'(_1〜9までの数) :-
get_line(Line),
'キーボードからの入力診断'(Line,_1〜9までの数),!.
'キーボードから入力された1〜9までを'(_1〜9までの数) :-
'キーボードから入力された1〜9までを'(_1〜9までの数).
'キーボードからの入力診断'(Line,_1〜9までの数) :-
atom_to_term(Line,_1〜9までの数,_),
integer(_1〜9までの数),
_1〜9までの数 >= 1,
_1〜9までの数 =< 9,!.
'キーボードからの入力診断'(Line,_1〜9までの数) :-
writef('入力された %t からは1〜9までの数が得られません。再入力をお願いします\n',[Line]),
fail.
0552デフォルトの名無しさん
2011/06/23(木) 21:06:15.20ざっと見渡した限り、通常の質問スレはあるが
宿題スレや丸投げ系のスレは無さそうだな
0553デフォルトの名無しさん
2011/06/25(土) 16:33:55.70このスレたったころはJava用の宿題スレあったからね〜
スレ落ちしてから誰も立ててないだけでしょ
0554デフォルトの名無しさん
2011/08/08(月) 05:55:15.47# [1] 授業単元:情報処理
# [2] 問題文(含コード&リンク):数値(1~100)を入力し、入力された数の
# 平均、標準偏差、最大値、最小値を求めるプログラムを作りなさい。
#
#
# 不完全な仕様であることを明確に指摘しながら、かつ、問題分が求めている
# テータから適切なデータ構造と手順を選択していくことを示すことができるであろうか。
#
0555デフォルトの名無しさん
2011/10/13(木) 10:13:59.94簡易電卓をlinux作成したいのですが全くわかりません。
どなたかよろしければプログラムを作成しては
いただけませんでしょうか?
よろしくお願いします。
0556デフォルトの名無しさん
2011/10/13(木) 10:17:48.83RAM EQU 8000H
ROM EQU 0000H
ORG RAM
LED_1: BLOCK 1
LED_2: BLOCK 1
LED_3: BLOCK 1
LED_4: BLOCK 1
XL: BLOCK 1
XH: BLOCK 1
といったような書き方をしたいのですが、
是非宜しくお願いします。
0557デフォルトの名無しさん
2011/10/13(木) 20:02:24.190558デフォルトの名無しさん
2011/10/14(金) 00:18:23.46説明不足ですいません。
PIO_INIT:
PUSH AF
LD A,0CFH
OUT (PIO_AC),A
LD A,000H
OUT (PIO_AC),A
LD A,007H
OUT (PIO_AC),A
LD A,0CFH
OUT (PIO_BC),A
LD A,00FH
OUT (PIO_BC),A
LD A,007H
OUT (PIO_BC),A
LD A,000H
LD (LED_1),A
LD (LED_2),A
LD (LED_3),A
LD (LED_4),A
POP AF
RET
といった感じなのですが・・・。
0559デフォルトの名無しさん
2011/10/14(金) 00:32:01.18書いてもらわんとわからんよ
ビット単位で細かく指定されてる場合も多いし
0560デフォルトの名無しさん
2011/10/14(金) 02:11:03.50聞きたいのはZ80の文法ではなく、使っている教材の仕様だからね
外観的にはLEDが4つくらいあるだろう事はわかったけど
0561デフォルトの名無しさん
2011/10/14(金) 03:05:41.42朝学校で確かめてきます。
D7 D6 D5 D4 D3 D2 D1 D0
DS群 ▼ ▼ ▲ ▲ ▼ ▲ ▲ ▼
▼は上下できるスイッチで
WRやCLKはボタンで操作するやつです
0562デフォルトの名無しさん
2011/10/14(金) 03:17:31.73558=561です。
マイクロプロセッサは
TMPZ84C015Aということまで
自分の持っている資料でわかりました。
0563デフォルトの名無しさん
2011/10/14(金) 18:54:09.36とりあえずプログラムを書いてみたのですが、
LEDに0000が表示されるだけで計算できません。
ttp://uproda.2ch-library.com/lib440220.txt.shtml
にうpしたので、どなたかご指摘いただけませんでしょうか。
よろしくお願いします。
0564デフォルトの名無しさん
2011/10/14(金) 19:21:39.38>>560さんからご指摘をうけた
教材の仕様なのですが、
細かい仕様がわからないため
http://iup.2ch-library.com/i/i0447253-1318586664.jpg
をうpしました。
DLキーはどちらも1です
よろしくお願いします
0565デフォルトの名無しさん
2011/10/14(金) 19:46:41.250566デフォルトの名無しさん
2011/10/14(金) 20:33:26.93マイクロプロセッサは
TMPZ84C015AでZ80CPUを核としてCTC、シリアルI/Oポート(SIO)
パラレルI/Oポート(PIO)、CGC、WDTを内蔵してて
PIOは2組の独立した8bitポートで、
教材のPIOのI/Oアドレスは
ポートA;データレジスタ(01CH)
ポートA;コントロールレジスタ(01DH)
ポートB;データレジスタ(01EH)
ポートA;コントロールレジスタ(01FH)
として設定されてます
0567デフォルトの名無しさん
2011/10/14(金) 20:43:59.96それを割愛されると手を出せませんよ
さらっと目を通しましたが、CALL〜RETの中にPOPが紛れ込んでますがそれは大丈夫なんですか?
0568デフォルトの名無しさん
2011/10/14(金) 20:48:12.13RAMは256kbitまたは32byteの読み書き
できるメモリ容量
データバス8本
ポート
・8ビットパラレルポート×2
・シリアルポート×1
0569デフォルトの名無しさん
2011/10/14(金) 21:19:15.19目を通していただきありがとうございます。
コンパイルは一応通るので、
どこが悪いのかわからなくて・・。
ttp://uproda.2ch-library.com/lib440285.txt.shtml
に以前の入出力についてやったことを書きました。
DLキーは1です。
どなたかよろしければプログラムを作成しては
いただけませんでしょうか?
よろしくお願いします。
0570デフォルトの名無しさん
2011/10/15(土) 02:46:06.580571デフォルトの名無しさん
2011/10/17(月) 10:42:31.88Z80アセンブラで7セグメントLEDに表示できる
簡易電卓をlinux作成したいのですが全くわかりません
ttp://uproda.2ch-library.com/lib441388.txt.shtml
もご参考によろしくお願いします。
0572デフォルトの名無しさん
2011/10/18(火) 03:11:02.34どうやら I/O は
・PIOポートA ⇒ 7Seg LED (4連 = 16bit分)
・PIOポートB ⇒ キー(トグルSW?) (4キー * 4連 = 16bit分)
って事っぽいね。入出力共に、I/O 1回で 4bit みたいだから、完成までには少なくとも
1. 4bit (LED 1つ分) 出力するサブルーチンを作成
2. 1. を4回繰り返して 16bit (全 LED 分) 出力するサブルーチンを作成
3. キーから 4bit (キー1連分) 読み込むサブルーチンを作成し、2. を使って出力テスト
4. 3. を4回繰り返して 16bit (全キー分) 読み込むサブルーチンを作成し、2. を使って出力テスト
5. 足し算実装
6. 引き算実装
7. 掛け算実装
8. 割り算実装
位のステップは踏むと思うんだけど、どこまで出来てんの?
ちなみに、>555と同一人物?
0573572
2011/10/18(火) 17:06:20.95ttp://ideone.com/0MBs5
4. がこんな感じ。
ttp://ideone.com/Ze2EN
で、これだけだと激烈に使いづらいので、16bit入出力ルーチンなんかもきっと書くんだろうね。
ttp://ideone.com/tZGIi
ttp://ideone.com/liM6n
おっと、俺は教材を見たことが無ければ、そもそも
0574デフォルトの名無しさん
2011/10/18(火) 17:08:23.28動かなくたって知らんよ。
0575デフォルトの名無しさん
2011/10/24(月) 22:14:16.69実行すると下記のような動作をするバッチファイルスクリプトを作成したいです。
よろしくお願いいたします。
実行するバッチファイルが現在存在するディレクトリにある全てのテキストファイルを書き換えるバッチを作成しなさい。
テキストファイルの中に、pass = "C:\Users\users\Documents\workspace\test.txt"というような
パスを変数に代入する記述があった場合
そのパスの部分を、pass = "現在のバッチファイルの存在するディレクトリ\test.txt"
という風にディレクトリ名だけを(ファイル名は書き換えない)書き換えるバッチを作成しなさい。
0576デフォルトの名無しさん
2011/10/29(土) 23:55:49.97例えば3個の要素からなる集合{a,b,c}でa,b,cは0〜24の任意の数をとるとします。
また一方で{0+i,3+i}(i<=24,i++)のものをredと定義します。
そして、{a,b,c}の中で部分集合{a,b}{b,c}{c,a}がすべてredであるような{a,b,c}の数はいくつあるか計算する方法を教えてください。
0577デフォルトの名無しさん
2011/10/30(日) 04:00:48.12Haskellで、その問題をそのまま書いてみたけど、空リスト(空集合)が返ってきたぞ
[[a,b,c]| a <- [0..24], b <- [0..24], c <- [0..24], isRed a b, isRed b c, isRed c a]
isRed i i' | i <= 24 && i' == (i+3) = True
isRed _ _ = False
0578デフォルトの名無しさん
2011/10/30(日) 04:27:55.17(c < a?) < b < c
0579デフォルトの名無しさん
2011/12/04(日) 11:12:03.99どなたか教えていただけないでしょうか
0580デフォルトの名無しさん
2011/12/05(月) 18:30:04.17全然関係ないがPathな
0581デフォルトの名無しさん
2011/12/05(月) 18:30:30.320582営利利用に関するLR審議中@詳細は自治スレへ
2012/03/30(金) 10:58:57.35あたりから問題もらったらいい。Prologはともかく、関数型言語などの
プログラム例を見たい。
0583営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 18:36:33.08http://ideone.com/vTKlA
0584デフォルトの名無しさん
2012/04/14(土) 12:51:17.95>タンピンリャンペーコーを判別せよ
をF#で。
http://ideone.com/r2HEf
0585デフォルトの名無しさん
2012/05/23(水) 06:59:12.42麻雀やらないので、役は今ひとつ理解できないのだが、大体こんな感じ。
http://nojiriko.asia/prolog/ironnagengo5_40.html
0586デフォルトの名無しさん
2012/06/14(木) 23:26:40.21円Cの半径r、中心の座標(x,y)が与えられたとき
円の面積の第1象限の部分、第2象限の部分、第3象限の部分、第4象限の部分を求めよ。
0587デフォルトの名無しさん
2012/06/15(金) 02:43:22.47HSPにて
http://ideone.com/UoWbB
0589587
2012/06/15(金) 08:48:34.17HSPにて
http://ideone.com/M704D
0590デフォルトの名無しさん
2012/06/15(金) 08:53:39.56% Prolog
モンテカルロ法で http://nojiriko.asia/prolog/ironnagengo5_586.html
0591デフォルトの名無しさん
2012/06/18(月) 01:49:34.73どの桁の数字も右隣の桁の数字よりも大きい2桁以上の10進数をすべて求めよ。
例
76
3210
951
0592デフォルトの名無しさん
2012/06/18(月) 06:46:11.52% Prolog
http://nojiriko.asia/prolog/ironnagengo5_591.html
0593デフォルトの名無しさん
2012/06/18(月) 07:05:24.36[for i in 9L .. -1L .. 0L -> [i]]
|> Seq.unfold
(List.collect (fun (x::xs) -> [for i in 9L .. -1L .. x + 1L -> i::x::xs])
>> function [] -> None | r -> Some(r, r))
|> Seq.concat |> Seq.map (Seq.reduce (fun x y -> x * 10L + y))
|> Seq.iter (printfn "%d")
0594デフォルトの名無しさん
2012/06/18(月) 13:17:15.06http://ideone.com/7Shar
0595デフォルトの名無しさん
2012/06/18(月) 23:31:43.84【 課題 】DB上に給与の支給テーブルがあります。
支店・部・課・社員番号・基本給・役職手当・残業時間
これらの情報をDBから読み込んだJYOUHOUDATA.javaから、
各支店ごとの部、課の合計、支店合計
総合計を求めなさい。最後に全ての合計を印字する事。
集計項目は基本給・役職手当・残業手当・総支給額の4項目とする。
【 形態 】1. Javaアプリケーション(main()で開始すること)
【Ver 】java version "1.7.0_02"
【 補足 】残業手当 =(基本給+役職手当)/160*1.2
総支給額 = 基本給+役職手当+残業手当 で計算します。
よろしくお願いします。
0596デフォルトの名無しさん
2012/06/19(火) 23:38:24.34データ用意するのが面倒だけど
こんな感じじゃね?
select 支店,部,sum((基本給+役職手当)*(1.0+1.2*残業時間/160)) from 給与の支給 group by 支店,部
0597デフォルトの名無しさん
2012/06/21(木) 22:20:55.86maxima
for i in rest(powerset({0,1,2,3,4,5,6,7,8,9})) do
(a:sreverse(simplode(i,"")),if slength(a)>1 then print(a));
0598デフォルトの名無しさん
2012/06/22(金) 00:20:27.35Io
for(i,1,1023,a:="";for(j,0,9,a=if(i at(j)==1,j,"").. a);if(a size>1,a println))
1から2^10-1の10bitを0から9に対応させて1が立っているものを連結して2桁以上を出力。
0599デフォルトの名無しさん
2012/06/22(金) 18:13:42.05SWI-Prolog
d0(''). d0(0). d1(''). d1(1). d2(''). d2(2). d3(''). d3(3).
d4(''). d4(4). d5(''). d5(5). d6(''). d6(6). d7(''). d7(7).
d8(''). d8(8). d9(''). d9(9).
q591:-d0(A0),d1(A1),d2(A2),d3(A3),d4(A4),d5(A5),d6(A6),d7(A7),d8(A8),d9(A9),
concat_atom([A9,A8,A7,A6,A5,A4,A3,A2,A1,A0],'',X),
name(X,Y),length(Y,Z),Z>1,writeln(X),fail.
0600デフォルトの名無しさん
2012/06/22(金) 20:19:56.06#include <math.h>
int main (int argc, const char * argv[]) {
double a, b, c, x1, x2;
printf("ax^2+bx+c=0 の係数a,b,cは?");
scanf("%lf%lf%lf",&a,&b,&c);
if (a=0)
{printf("aには0を代入できません");}
if ((b*b-4*a*c) > 0)
{x1=(-b + sqrt(b*b-4*a*c))/(2*a);
x2=(-b - sqrt(b*b-4*a*c))/(2*a);
printf("x1=%lf\n",x1);
printf("x2=%lf\n",x2);}
if ((b*b-4*a*c) == 0)
{x1=(-b+sqrt(b*b-4*a*c))/(2*a);
printf("x1=%lf\n",x1);}
if ((b*b-4*a*c) < 0)
{x1=(-b/(2*a));
x2=(sqrt(b*b-4*a*c)/(2*a);
printf("x1=%lf+%lf",x1,x2);
printf("x2=%lf-%lf",x1,x2);
return 0;
}
どこがいけないのかなあ(泣)
もう初心者のぼくにはむりぽ
0601デフォルトの名無しさん
2012/06/22(金) 20:57:37.37a_buf="1.0" : input a_buf
b_buf="0.0" : input b_buf
c_buf="0.0" : input c_buf
button "計算", *calc
stop
*calc
a=double(a_buf)
b=double(b_buf)
c=double(c_buf)
if absf(a)=0.0 : mes "aには0を代入できません" : stop
d=b*b-4.0*a*c
if d>0.0 {
mes strf("x1=%f x2=%f", (-b+sqrt(d))/(2.0*a), (-b-sqrt(d))/(2.0*a))
} else : if d<0.0 {
mes strf("x1=%f%+fi x2=%f%+fi", -b/(2.0*a), sqrt(-d)/(2.0*a), -b/(2.0*a), -sqrt(-d)/(2.0*a))
} else {
mes strf("x1=%f", -b/(2.0*a))
}
stop
0602デフォルトの名無しさん
2012/06/22(金) 21:12:25.61辺の長さがa,b,c,dの四角形の面積の最大値を求めよ。
0603デフォルトの名無しさん
2012/06/22(金) 22:00:42.08#module
#defcfunc calc double a, double b, double c, double d, \
local s, local e, local w, local p1, local p2, local s1, local s2
s=absf(a-b)
if s<absf(c-d) : s=absf(c-d)
e=a+b
if e>d+c : e=d+c
repeat 100
w=e-s
p1=s+0.1*w
p2=s+0.9*w
s1=heron(a,b,p1)+heron(c,d,p1)
s2=heron(a,b,p2)+heron(c,d,p2)
if s1>s2 : e=p2 : else : s=p1
loop
return s1
#defcfunc heron double a, double b, double c, local s
s=(a+b+c)*0.5
return sqrt(s*(s-a)*(s-b)*(s-c))
#global
mes calc(1,1,1,1)
0604デフォルトの名無しさん
2012/06/22(金) 22:22:37.98十分なだらかで且つピークとなる箇所が一箇所だけだろうという思い込みでできてます
正しいかどうか分かりません
0605デフォルトの名無しさん
2012/06/23(土) 07:31:32.51J
(#~9&<),/:~x:".(#:i.2^10)#'9876543210'
0606デフォルトの名無しさん
2012/06/23(土) 09:07:13.41どの桁の数字も右隣の桁の数字よりも大きい2桁以上の10進数をすべて求める(_どの桁の数字も右隣の桁の数字よりも大きい2桁以上の10進数) :-
どの桁の数字も右隣の桁の数字よりも大きい(['9','8','7','6','5','4','3','2','1','0'],_どの桁の数字も右隣の桁の数字よりも大きい数字ならび),
'2桁以上の10進数'(_どの桁の数字も右隣の桁の数字よりも大きい数字ならび,_どの桁の数字も右隣の桁の数字よりも大きい2桁以上の10進数).
どの桁の数字も右隣の桁の数字よりも大きい([A],[A]) :- !.
どの桁の数字も右隣の桁の数字よりも大きい([A|R1],[A|R2]) :-
どの桁の数字も右隣の桁の数字よりも大きい(R1,R2).
どの桁の数字も右隣の桁の数字よりも大きい([_|R1],R2) :-
どの桁の数字も右隣の桁の数字よりも大きい(R1,R2).
'2桁以上の10進数'([A,B|R],_2桁以上の10進数) :-
number_chars(_2桁以上の10進数,[A,B|R]).
0607デフォルトの名無しさん
2012/06/23(土) 13:04:34.04J
f=:%:@(*/)@:-~-:@(+/)
f 5 3 4 5
17.4123
f 2 2 2 2
4
f 2 3 3 2
6
0608デフォルトの名無しさん
2012/06/23(土) 17:45:20.80let maxSquareArea a b c d =
let abcd = [a; b; c; d]
let s = List.sum abcd / 2.
abcd |> List.map ((-) s) |> List.reduce (*) |> sqrt
> maxSquareArea 5. 3. 4. 5.;;
val it : float = 17.41228015
> maxSquareArea 2. 2. 2. 2.;;
val it : float = 4.0
> maxSquareArea 2. 3. 3. 2.;;
val it : float = 6.0
0609デフォルトの名無しさん
2012/06/23(土) 20:49:25.53maxima
f(a,b,c,d):=(w:(a+b+c+d)/2,sqrt((a-w)*(b-w)*(c-w)*(d-w)));
0610デフォルトの名無しさん
2012/06/23(土) 21:58:11.67R
f <- function(x){sqrt(prod(x - sum(x) / 2))}
> f(c(5,3,4,5))
[1] 17.41228
> f(c(2,2,2,2))
[1] 4
> f(c(2,3,3,2))
[1] 6
0611デフォルトの名無しさん
2012/06/23(土) 23:44:13.82与えられた文字列の奇数番目を大文字に偶数番目を小文字にせよ。
例
Hello => HeLlO
end => EnD
0612デフォルトの名無しさん
2012/06/24(日) 01:48:14.57#module
#defcfunc solve str buf_, local buf, local moji
buf=buf_
repeat strlen(buf)
moji=peek(buf, cnt)
if cnt\2 {
if 'A'<=moji and moji<='Z' : poke buf, cnt, moji-'A'+'a'
} else {
if 'a'<=moji and moji<='z' : poke buf, cnt, moji-'a'+'A'
}
loop
return buf
#global
mes solve("Hello")
mes solve("end")
0613デフォルトの名無しさん
2012/06/24(日) 06:41:02.61% Prolog
'与えられた文字列の奇数番目を大文字に偶数番目を小文字にせよ。'(_与えられた文字列,_奇数番目を大文字に偶数番目を小文字にした文字列) :-
findall(_変換した文字,(
sub_atom(_文字列,_0起点位置,1,_,_文字),
奇数番目を大文字に偶数番目を小文字に(_0起点位置,_文字,_変換した文字)),
_奇数番目を大文字に偶数番目を小文字にした文字ならび),
atom_chars(_奇数番目を大文字に偶数番目を小文字にした文字列,_奇数番目を大文字に偶数番目を小文字にした文字ならび).
奇数番目を大文字に偶数番目を小文字に(_0起点位置,_文字,_小文字) :-
奇数番目を(_0起点位置),
小文字に(_文字,_小文字).
奇数番目を大文字に偶数番目を小文字に(_0起点位置,_文字,_大文字) :-
偶数番目を(_0起点位置),
大文字に(_文字,_大文字).
奇数番目を(_0起点位置) :-
1 is (_0起点位置 + 1) mod 2.
偶数番目を(_0起点位置) :-
0 is (_0起点位置 + 1) mod 2.
小文字に(_文字,_小文字) :-
to_lower(_文字,_小文字).
大文字に(_文字,_大文字) :-
to_upper(_文字,_大文字).
0614デフォルトの名無しさん
2012/06/24(日) 07:59:00.58J
f=:3 :'((#y)$0 1)}(toupper,:tolower)y'
f 'Hello'
HeLlO
f 'end'
EnD
0615デフォルトの名無しさん
2012/06/24(日) 08:47:27.49Haskell
import Data.Char
f = zipWith ($) (cycle [toUpper, toLower])
main = do
print $ f "Hello"
print $ f "end"
0616デフォルトの名無しさん
2012/06/24(日) 09:24:22.78Maxima
f(s):=(w:charlist(supcase(s)),
for i:2 thru slength(s) step 2 do w[i]:sdowncase(w[i]),simplode(w,""));
(%i33) f("Hello");
(%o33) HeLlO
(%i34) f("end");
(%o34) EnD
0617デフォルトの名無しさん
2012/06/24(日) 13:10:59.12Io
f:=method(s,w:="";s foreach(i,v,w=w .. if(i%2==0,v&223,v|32)asCharacter))
Io> f("Hello")
==> HeLlO
Io> f("end")
==> EnD
0618デフォルトの名無しさん
2012/06/24(日) 16:21:34.28D
enum f = (string s) => zip(cycle([0, 1]), s).map!(x => (x[0])? x[1].toLower: x[1].toUpper);
f("Hello").writeln;
f("end").writeln;
0619デフォルトの名無しさん
2012/06/24(日) 16:59:08.08Gauche
(use gauche.sequence)
(define (f s)
(list->string (map-with-index (^(n x) (if (even? n) (char-upcase x) (char-downcase x))) s)))
(print (f "Hello"))
(print (f "end"))
0620デフォルトの名無しさん
2012/06/24(日) 18:10:55.92open System
let f = String.mapi (function i when i % 2 = 0 -> Char.ToUpper | _ -> Char.ToLower)
> f "Hello";;
val it : string = "HeLlO"
> f "end";;
val it : string = "EnD"
0621デフォルトの名無しさん
2012/06/24(日) 20:42:24.17なんでこれで解けるんだ???
#include<stdio.h>
#include<math.h>
double calc_area(double a, double b, double c, double d)
{
double s=(a+b+c+d)/2;
return sqrt((s-a)*(s-b)*(s-c)*(s-d));
}
int main(void)
{
printf("%f\n", calc_area(5,3,4,5));
printf("%f\n", calc_area(2,2,2,2));
printf("%f\n", calc_area(2,3,3,2));
return 0;
}
0622デフォルトの名無しさん
2012/06/24(日) 21:03:50.38問題文をそのままぐぐってみろ
http://www2.ocn.ne.jp/~mizuryu/kadai5/kadai241a.htm
こういうのがたくさん出てくるだろ?
0623デフォルトの名無しさん
2012/06/25(月) 05:32:55.77東京スカイツリーのてっぺんから硬式野球ボールを落としたら地表での時速は?
0624デフォルトの名無しさん
2012/06/25(月) 07:03:46.13「自由落下」でぐぐるとこんなのが出て来た
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1063770510
0625デフォルトの名無しさん
2012/06/25(月) 07:10:34.060626デフォルトの名無しさん
2012/06/25(月) 07:11:48.28634m
[重力加速度 g
9.80665m/s2]
経過時間 t
11.371016480755 秒
その時の落下速度 v
111.511578771 m/s
=
401.44168357558 km/h
0627デフォルトの名無しさん
2012/06/25(月) 07:44:09.28空気抵抗に関する係数 μ をいい加減に決定
本当は野球ボールの形状および空気の粘性係数によって要変更
#include<stdio.h>
double solve(double h, double g, double m, double myu, double delta)
{
double y=0.0, v=0.0, t=0.0;
while(y<h)
{
v+=(g-myu*v*v/m)*delta;
y+=v*delta;
}
return v;
}
int main(void)
{
double h=634, g=9.8, m=0.145, myu=0.005, delta=0.001;
printf("%.3f km/h\n", solve(h, g, m, myu, delta)*60*60/1000);
return 0;
}
> 60.690 km/h
0628デフォルトの名無しさん
2012/06/25(月) 08:24:24.08投手が投げるボールが 初速140km/h のとき 終速132km/h 程度ということから
μ 0.00045 くらい
> 200.313 km/h
0629デフォルトの名無しさん
2012/06/25(月) 18:26:15.99長針と短針の間の角度がX度のとき、可能性のある時刻をすべて挙げよ。
0630デフォルトの名無しさん
2012/06/25(月) 20:39:14.02http://ideone.com/kNDmu
0631デフォルトの名無しさん
2012/06/25(月) 20:39:54.250632デフォルトの名無しさん
2012/06/26(火) 18:06:48.98# [1] 授業単元:
# [2] 問題文(含コード&リンク):
# ∀m; n ∈ Z に対して次の(14) - (16) 式が成り立つことを
# 区分求積法によって確認するためのプログラムを作成せよ.
# S1 :=∫ −sin nx sinmx dx = mn (14)
# S2 :=∫ −cos nx cosmx dx = mn (15)
# S3 :=∫ −sin nx cosmx dx = 0 (16)
# ただしmn はクロネッカーのデルタ
# 1 (m = n)
# mn ={
# 0 (m ̸= n) (17)
# である.
#
0633デフォルトの名無しさん
2012/06/26(火) 19:04:05.4313桁のISBNコードを検査せよ。
例
9784062772211 => OK
9784150315684 => NG
0634デフォルトの名無しさん
2012/06/26(火) 19:28:13.24#module
#defcfunc ISBN13_is_ok str isbn_, local isbn, local sum, local moji, local ret
isbn=isbn_
if strlen(isbn)!13 : return 0
ret=1
repeat 13
moji=peek(isbn, cnt)-'0'
if moji<0 or 9<moji : ret=0 : break
sum+=moji*((cnt\2)*2+1)
loop
if sum\10 : ret=0
return ret
#global
result_msg="NG", "OK"
mes result_msg.ISBN13_is_ok("9784062772211")
mes result_msg.ISBN13_is_ok("9784150315684")
0635デフォルトの名無しさん
2012/06/26(火) 20:14:50.86問題の読み方が分からん
x について 0〜2π で積分したら -π か 0 かのいずれかになってしまう
0636デフォルトの名無しさん
2012/06/26(火) 22:14:22.74Maxima
f(s):=is(mod(lsum(i,i,map(eval_string,charlist(s))*[1,3,1,3,1,3,1,3,1,3,1,3,1]),10)=0);
(%i63) f("9781234567897");
(%o63) true
(%i64) f("9784150315684");
(%o64) false
0637デフォルトの名無しさん
2012/06/27(水) 16:54:08.94% Prolog
'長針と短針の間の角度がX度のとき、可能性のある時刻をすべて挙げよ'(_X度,_時,_分,秒) :-
between(0,11,N),
可能性のある時刻(N,_X度,_可能性のある時刻),
'時・分・秒に分解'(_可能性のある時刻,_時,_分,_秒).
可能性のある時刻(N,_X度,_角度差までの接近時刻) :-
角度差までの接近時刻(N,_X度,_角度差までの接近時刻).
可能性のある時刻(N,_X度,_角度差までの接近時刻) :-
長針が短針を追い越し角度差を付ける時刻(N,_X度,_角度差をつける時刻).
角度差までの接近時刻(N,_X度,_角度差までの接近時刻) :-
_X度 < (30 * N),
_追い付き時間 is _X度 / 330 + N,
_角度差までの接近時刻 is N + _追い付き時間.
長針が短針を追い越し角度差を付ける時刻(N,_X度,_角度差をつける時刻) :-
_追い付き時間 is (30 * N + _X度) / 330,
_追い付き時間 < 1.0,
_角度差をつける時刻 is N + _追い付き時間.
'時・分・秒に分解'(_時刻_時,_時,_分,_秒) :-
_時 is truncate(_時刻_時) // 3600,
_余り秒 is truncate(_時刻_時) mod 3600,
_分 is _余り秒 // 60,
_秒 is _余り秒 mod 60.
0638629
2012/06/27(水) 16:56:19.01% 一行目の一番最後の引数のアンダースコアが落ちてしまった。ただ、秒となっている。
% 訂正。
'長針と短針の間の角度がX度のとき、可能性のある時刻をすべて挙げよ'(_X度,_時,_分,_秒) :-
between(0,11,N),
可能性のある時刻(N,_X度,_可能性のある時刻),
'時・分・秒に分解'(_可能性のある時刻,_時,_分,_秒).
0639デフォルトの名無しさん
2012/06/28(木) 00:27:59.15Gauche
(define (f s)
(let* ((xs (map digit->integer (string->list s #\-) ""))
(ns (drop-right xs 1))
(cd (last xs))
(r (fold (^(a b) (+ b (* (car a) (cadr a)))) 0 (zip ns (circular-list 1 3)))))
(= (- 10 (mod r 10)) cd)))
(print (f "9784062772211")) ; #t
(print (f "9784150315684")) ; #f
0640デフォルトの名無しさん
2012/06/28(木) 22:06:17.12ボタン0〜9
+、=、*、−、c、ac、/、
が最低限、ほかになにか機能がついてるとうれしいです。
0641デフォルトの名無しさん
2012/06/28(木) 23:49:50.25よけいなの入ってたので修正
(let* ((xs (map digit->integer (string->list s)))
0642デフォルトの名無しさん
2012/07/03(火) 11:40:23.74数字がひとつ不明な13桁のISBNコードを復元せよ。
例(不明な所を?とする)
9784062?72211 => 9784062772211
978415031?684 => 9784150310684
0643デフォルトの名無しさん
2012/07/03(火) 12:16:59.04#module
#defcfunc solve str isbn_, local isbn, local sum, local x
isbn=isbn_
repeat 13
moji=peek(isbn, cnt)
if moji='?' {
x=cnt
} else {
sum+=((cnt\2)*2+1)*(moji-'0')
}
loop
if x\2 {
poke isbn, x, (sum*3)\10+'0'
} else {
poke isbn, x, (sum*9)\10+'0'
}
return isbn
#global
mes solve("9784062?72211")
mes solve("978415031?684")
0644デフォルトの名無しさん
2012/07/03(火) 17:20:59.80% Prolog
http://nojiriko.asia/prolog/ironnagengo5_642.html
0645デフォルトの名無しさん
2012/07/04(水) 07:15:32.03Maxima
f(s):=is(mod(lsum(i,i,map(eval_string,charlist(s))*[1,3,1,3,1,3,1,3,1,3,1,3,1]),10)=0);
g(s):=for i:0 thru 9 do if f(a:ssubst(string(i),"?",s)) then return(a);
(%i35) g("9784062?72211");
(%o35) 9784062772211
(%i36) g("978415031?684");
(%o36) 9784150310684
0646デフォルトの名無しさん
2012/07/04(水) 17:16:51.27与えられた文字列を先頭と末尾から削除していき二文字以下にせよ。
例
world => r
konokodokonokodokonokokonoko => od
0647デフォルトの名無しさん
2012/07/04(水) 17:32:12.46#module
#defcfunc solve str msg_, local msg, local len
msg=msg_
len=strlen(msg)
return strmid(msg, (len-1)/2, len-(len-1)/2*2)
#global
mes solve("world")
mes solve("konokodokonokodokonokokonoko")
0648デフォルトの名無しさん
2012/07/04(水) 18:29:22.93% Prolog
与えられた文字列を先頭と末尾から削除していき二文字以下にする(_文字列_1,_文字列) :-
sub_atom(_文字列_1,1,_文字列の文字数,1,_文字列_2),
_文字列の文字数 > 2,
与えられた文字列を先頭と末尾から削除していき二文字以下にする(_文字列_2,_文字列).
与えられた文字列を先頭と末尾から削除していき二文字以下にする(_文字列,_文字列).
0649デフォルトの名無しさん
2012/07/04(水) 18:40:38.73% Prolog プログラマが指定して削除していくのではなく、処理系がそんなことしてることになるかも、という話。
与えられた文字列を先頭と末尾から削除していき二文字以下にする(_与えられた文字列,_二文字以下の文字列) :-
sub_atom(_与えられた文字列,N,_文字列の文字数,N,_二文字以下の文字列),
_文字列の文字数 =< 2.
0650デフォルトの名無しさん
2012/07/04(水) 18:53:26.65再帰
#module
#defcfunc solve str msg_, local msg, local len
msg=msg_
len=strlen(msg)
if len<=2 : return msg
return solve(strmid(msg, 1, len-2))
#global
mes solve("world")
mes solve("konokodokonokodokonokokonoko")
0651デフォルトの名無しさん
2012/07/05(木) 00:21:19.95-- Haskell
f s = if (length s) < 3 then s else f $ (tail . init) s
main = do
print $ f "world"
print $ f "konokodokonokodokonokokonoko"
0652デフォルトの名無しさん
2012/07/05(木) 12:29:12.38整数nが与えられたとき、1からnの数すべてを1桁に分解して集計せよ。
例
n=15のとき
1+2+3+4+5+6+7+8+9+(1+0)+(1+1)+(1+2)+(1+3)+(1+4)+(1+5) = 66
0653デフォルトの名無しさん
2012/07/05(木) 14:38:19.88% Prolog
% こういうことは、絶対にやってはいけません。そういう作品。
'整数nが与えられたとき、1からnの数すべてを1桁に分解して集計せよ。'(_n,_集計値) :-
一桁ずつ四項に分解した加算文字列ならび(_n,_一桁ずつ四項に分解した加算文字列ならび),
atomic_list_concat(_一桁ずつ四項に分解した加算式文字列ならび,'+',_評価式文字列),
atom_to_term(_評価式文字列,_評価式,_),
_集計値 is _評価式.
一桁ずつ四項に分解した加算文字列ならび(_n,_一桁ずつ四項に分解した加算文字列ならび) :-
findall(_一桁ずつ四項に分解した加算式文字列,(
between(1,_n,_整数),
number_chars(_整数,_一桁ずつ四項に分解した数字ならび),
atomic_list_concat(_一桁ずつ四項に分解した数字ならび,'+',_一桁ずつ四項に分解した加算式文字列)),
_一桁ずつ四項に分解した加算式文字列ならび).
0654デフォルトの名無しさん
2012/07/05(木) 14:42:23.30% Prolog すみません。一ヶ所間違えた。書き直し。
'整数nが与えられたとき、1からnの数すべてを1桁に分解して集計せよ。'(_n,_集計値) :-
一桁ずつ四項に分解した加算文字列ならび(_n,_一桁ずつ四項に分解した加算文字列ならび),
atomic_list_concat(_一桁ずつ四項に分解した加算式文字列ならび,'+',_評価式文字列),
atom_to_term(_評価式文字列,_評価式,_),
_集計値 is _評価式.
一桁ずつ四項に分解した加算文字列ならび(_n,_一桁ずつ四項に分解した加算式文字列ならび) :-
findall(_一桁ずつ四項に分解した加算式文字列,(
between(1,_n,_整数),
number_chars(_整数,_一桁ずつ四項に分解した数字ならび),
atomic_list_concat(_一桁ずつ四項に分解した数字ならび,'+',_一桁ずつ四項に分解した加算式文字列)),
_一桁ずつ四項に分解した加算式文字列ならび).
0655653, 654
2012/07/05(木) 14:56:38.53% Prolog さらに二ヶ所間違っていた。申し訳ないからリンクで。
http://nojiriko.asia/prolog/ironnagengo5_652.html
普通の回答は
http://nojiriko.asia/prolog/ironnagengo5_652_1.html
0656デフォルトの名無しさん
2012/07/05(木) 17:54:27.76#module
#defcfunc calc int x_, local x, local ret
x=x_
repeat
ret+=x\10
x/=10
if x=0 : break
loop
return ret
#defcfunc solve int n, local sum
repeat n, 1
sum+=calc(cnt)
loop
return sum
#global
mes solve(15)
0657デフォルトの名無しさん
2012/07/05(木) 22:21:55.44質問者じゃないけど俺は感動した!これがPrologのコードというものなのか.
多分かなりの腕の方なんだろうけど,いつもPrologでどういう問題の
プログラム書いてるの?汎用言語として使っているのか,ルールベースの
かなり特化した問題についてだけ使っているのか知りたい.興味本位だけど.
しかし >>655 さんなら問題の種類によらずPrologで書けそうですねうらやましい
0658デフォルトの名無しさん
2012/07/06(金) 00:46:16.13Haskell
import Data.Char
replace s t r
| s == [] = []
| head s == t = r : replace (tail s) t r
| otherwise = head s : replace (tail s) t r
check s = cd == last ns
where ns = map digitToInt s
cd = 10 - (sum $ map (\x -> fst x * snd x) $ zip (cycle [1, 3]) $ init ns) `mod` 10
comp s = head $ filter check $ map (\x -> replace s '?' x) ['0'..'9']
main = do
print $ check "9784062772211"
print $ check "9784150315684"
print $ comp "9784062?72211"
print $ comp "978415031?684"
0659デフォルトの名無しさん
2012/07/06(金) 00:54:51.88Haskell
import Data.Char
f n = sum $ map sum $ map (map digitToInt) $ map show [0 .. n]
main = print $ f 15
0660デフォルトの名無しさん
2012/07/06(金) 01:03:27.33map多すぎわろた
import Data.Char
f n = sum $ map (sum . (map digitToInt) . show) [0 .. n]
main = print $ f 15
0661デフォルトの名無しさん
2012/07/06(金) 08:10:18.75% Prolog 数値演算を排し、すべて匿名変数のリストの要素数で集計するプログラム。Prologでは
% 遊びとして使われるテクニックだが、私は実務でも結構使う。リストの割り算が定義済みであることが前提。
http://nojiriko.asia/prolog/ironnagengo5_652_2_2.html
>>657
23年くらい前にCOBOLで書かれていたシステムをPrologに置き換えて、以後現在までこの
言語だけ使用しています。COBOLで中途半端にしかできなかった、冗長なプログラム表現を
Prologで露悪的なまでに実現して見せているのが私のスタイル。
Prologが究極のモジュラープログラミングであることを感じていただけたら、嬉しい。
0662デフォルトの名無しさん
2012/07/06(金) 20:11:14.41Haskellで別解
f n = sum [sum [read [c]| c <- show x]| x <- [1..n]]
main = print $ f 15
0663デフォルトの名無しさん
2012/07/06(金) 23:44:19.36Pythonで参加してもいいですか?
n = int(raw_input('n='))
print sum( sum(ord(e)-ord('0') for e in str(i) ) for i in xrange(1, n+1) )
0664デフォルトの名無しさん
2012/07/07(土) 00:22:43.39ご回答いただきありがとうございました.
やはり実務で,しかも汎用的に使っていらっしゃるんですね.
Prologは何度か挑戦しましたが全く歯が立たなかったので
Prolog脳からの問題の見かたには非常に興味があります.
多分他の言語を使うのとは全く違う考えかたで取りかかられる
のだと思いますが,アプローチの方向が異なることが問題解決
の新たな可能性につながるのではないかと想像します.
多分COBOLコードの書き直しもその一例なんでしょうね.
0665デフォルトの名無しさん
2012/07/07(土) 10:47:49.74scala> for(in <- io.Source.stdin.getLines)println((1 to in.toInt).map(_.toString./:(0)(_ + _.toString.toInt)).sum)
15
66
0666デフォルトの名無しさん
2012/07/07(土) 11:07:42.45本気で気にする場合にはIteratorで遅延評価するべきでしょうが
scala> for(in <- io.Source.stdin.getLines)println((1 to in.toInt)./:(0)(_ + _.toString./:(0)(_ + _.toString.toInt)))
15
66
0667デフォルトの名無しさん
2012/07/07(土) 12:30:27.03(loop for i to n
sum (loop for j = i then (floor (/ j 10))
until (zerop j)
sum (mod j 10))))
99までは正しいバージョン
(defun calc2 (n)
(/ (+ (expt (+ n 41) 2)
(* 9 (expt (- (mod (1+ n) 10) 5) 2))
-1825)
20))
0668デフォルトの名無しさん
2012/07/07(土) 19:11:50.36だれがコレの最適化を頼む。俺じゃこれぐらいしかできない。
A=データ、re=regular expression
A[0]に配列のindexの最後が入ってる、C[0]は開始index、tは最後
array A,C;
int i,k,t,p;
k=0;C[0]=0;t=0;
for(i=1;i<=A[0];i++){
if(C[0]){
while((k+1)<i){
A[k+=1]=C[C[0]++];
if(C[0]>t){C[0]=0;t=0;break;};
}
}
p=1;
while(match(substr(A[i],p),re)){
p+=RSTART-1;
if((k+1)<i){
A[k+=1]=substr(A[i],p,RLENGTH);
}else{
C[t+=1]=substr(A[i],p,RLENGTH);
if(!C[0])C[0]=1;
}
p+=RLENGTH;
};
};
A[0]=k;
if(C[0]){while(C[0]<= t )A[A[0]+=1]=C[C[0]++];}
0669デフォルトの名無しさん
2012/07/08(日) 10:06:10.25Python 大歓迎。
0670デフォルトの名無しさん
2012/07/08(日) 11:55:08.93ありがとう。
0671デフォルトの名無しさん
2012/07/09(月) 09:58:06.44C#
Func<int, int> f = (n) => (from i in Enumerable.Range(1, n)
select (from c in i.ToString().ToCharArray() select c - 48).Sum()
).Sum();
Console.Write(f(15));
0672デフォルトの名無しさん
2012/07/09(月) 23:33:08.74「"Hello, world!"を標準出力に出力するJavaプログラムのソースコード」を
標準出力に出力するプログラムをいろんな言語でかけ。
0673デフォルトの名無しさん
2012/07/10(火) 00:19:14.71Python
何の捻りもないけど。。
print 'public class Hello {'
print ' public static void main(String[] args) {'
print ' System.out.println("Hello, World!");'
print ' }'
print '}'
0674デフォルトの名無しさん
2012/07/10(火) 08:09:40.46octave
function z=f(n)
z=sum(sprintf("%d",1:n)-48);
end
> f(1234567)
ans = 32556016
> f(12345678)
error: memory exhausted or requested size too large for range of Octave's index type -- trying to return to prompt
0675デフォルトの名無しさん
2012/07/10(火) 08:32:09.89print "\"Hello, world!\"を標準出力に出力するJavaプログラムのソースコード";
0676デフォルトの名無しさん
2012/07/10(火) 15:15:10.25n番目のフィボナッチ数を求める関数f(n)を再帰的に定義した場合に
この関数を呼び出す回数を求めよ。
例
n=10のときの関数fの呼び出し回数=109
n=30のときの関数fの呼び出し回数=1664079
0677デフォルトの名無しさん
2012/07/10(火) 15:46:08.91def fn(n: Int) = {
var x = 0
def f(n: Int): Int = n match {
case n if n < 2 => { x += 1; n }
case n => { x += 1; f(n - 1) + f(n - 2) }
}
f(n - 1)
x
}
// Exiting paste mode, now interpreting.
scala> fn(10)
res0: Int = 109
scala> fn(30)
res1: Int = 1664079
0678デフォルトの名無しさん
2012/07/10(火) 15:49:04.37問題がおかしくないか?
0679デフォルトの名無しさん
2012/07/10(火) 15:49:34.63int n = 0;
Func<int, int> f = null;
f = i => { n++; return (i == 1 || i == 2) ? 1 : f(i - 1) + f(i - 2); };
Console.WriteLine(f(30));
Console.WriteLine(n);
0680デフォルトの名無しさん
2012/07/10(火) 15:56:50.790681デフォルトの名無しさん
2012/07/10(火) 16:14:28.41#module
#defcfunc fib int n, var count
count++
if n<2 : return n
return fib(n-1, count)+fib(n-2, count)
#defcfunc fib_count int n, local count, local dummy
dummy=fib(n, count)
return count
#global
mes fib_count(10) ; 177
mes fib_count(10-1) ; 109
mes fib_count(30) ; 2692537
mes fib_count(30-1) ; 1664079
0682デフォルトの名無しさん
2012/07/10(火) 16:40:41.940683デフォルトの名無しさん
2012/07/10(火) 16:44:52.37case Nil => n
case xs => f(xs.filter(2<)./:(List.empty[Int])((xs, x) => x - 1 :: x - 2 :: xs), n + xs.size)
}
scala> f(10 :: Nil)
res0: Int = 109
scala> f(30 :: Nil)
res1: Int = 1664079
0684デフォルトの名無しさん
2012/07/10(火) 18:05:56.68(defun g (n)
(if (< n 3)
1
(+ (h (decf n)) (h (decf n)) 1)))
(g 10) => 109
(g 30) => 1664079
0685デフォルトの名無しさん
2012/07/10(火) 19:12:01.50C#
Func<int, int> f = i => (i < 3) ? 1 : 1 + f(i - 1) + f(i - 2);
Console.WriteLine(f(30));
0686デフォルトの名無しさん
2012/07/10(火) 19:42:22.03% Prolog
'n番目のフィボナッチ数を求める述語を再帰的に定義した場合にこの述語を呼び出す回数を求め'(_n番目,_フィボナッチ数,_呼び出す回数) :-
'帰納を使い、フィボナッチ数を得る'(_n番目,_フィボナッチ数,1,_呼び出す回数).
'帰納を使い、フィボナッチ数を得る'(0,0,S,S).
'帰納を使い、フィボナッチ数を得る'(1,0,S,S).
'帰納を使い、フィボナッチ数を得る'(2,1,S,S).
'帰納を使い、フィボナッチ数を得る'(N,X,S_1,S) :-
N > 2,
N_1 is N - 1,
N_2 is N - 2,
S_2 is S_1 + 2,
'帰納を使い、フィボナッチ数を得る'(N_1,X_1,S_2,S_3),
'帰納を使い、フィボナッチ数を得る'(N_2,X_2,S_3,S),
X is X_1 + X_2,!.
0687686
2012/07/10(火) 19:45:12.22'n番目のフィボナッチ数を求める述語を再帰的に定義した場合にこの述語を呼び出す回数を求める'(_n番目,_フィボナッチ数,_呼び出す回数) :-
'帰納を使い、フィボナッチ数を得る'(_n番目,_フィボナッチ数,1,_呼び出す回数).
0688デフォルトの名無しさん
2012/07/10(火) 19:55:39.31修正
Func<int, int> f = null; f = i => (i < 3) ? 1 : 1 + f(i - 1) + f(i - 2);
0689デフォルトの名無しさん
2012/07/10(火) 20:03:07.29再帰回数だけ計算すれば良いの?
0690デフォルトの名無しさん
2012/07/10(火) 20:18:19.33Python
無理矢理にも程がある。
def fibo_count(n):
global s
s += 1
if n < 3: return n
return fibo_count(n-1) + fibo_count(n-2)
def fibo(n):
if n < 2: return n
return fibo(n-1) + fibo(n-2)
print fibo(10) # 55
s = 0
fibo_count(10) # 109
print s
print fibo(10) * 2 - 1 # 109
print fibo(30) # 832040
s = 0
fibo_count(30) # 1664079
print s
print fibo(30) * 2 - 1 # 1664079
0691デフォルトの名無しさん
2012/07/10(火) 20:36:24.94import Control.Monad.State
import Control.Applicative
fib n = runState (f n) 0
where
f m = modify (+ 1) >>
if m < 3 then return 1 else (+) <$> f (m - 1) <*> f (m - 2)
main = do
print $ fib 10 -- (55,109)
print $ fib 30 -- (832040,1664079)
あと次のように再帰定義した場合には
再帰回数は 2*n-1 (n > 0) になるはず
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
fib n = fibs !! n
0692デフォルトの名無しさん
2012/07/11(水) 00:31:00.04let rec f n = match n with
| _ when n < 3 -> 1
| _ -> f (n-1) + f (n-2) + 1;;
let main =
Printf.printf "%d\n" (f 10);
Printf.printf "%d\n" (f 50);
0693デフォルトの名無しさん
2012/07/11(水) 04:13:59.15左端からn桁目の数のn乗を合計したものが元の数に等しい4桁以下の数をすべて求めよ。
例
89 => 8^1 + 9^2 = 89 OK
123 => 1^1 + 2^2 + 3^3 = 14 NG
0694デフォルトの名無しさん
2012/07/11(水) 04:56:06.49% Prolog
'左端からn桁目の数のn乗を合計したものが元の数に等しい4桁以下の数をすべて求める'(_4桁以下の数) :-
between(0,9999,_4桁以下の数),
number_codes(_4桁以下の数,Codes),),
findsum(_左端からn桁目の数のn乗,(
append(L0,[_左端からn桁目のcode|_],Codes),
length([_|L0],_n),
_左端からn桁目の数のn乗 is truncate((_左端からn桁目のcode-48) ^ _n),
_4桁以下の数).
findsum(_選択項,_項,_合計値) :-
findall(_選択項,_項,_値ならび),
sum(_値ならび,_合計値).
sum([],0).
sum([N|R],S) :-
sum(R,S_1),
S is S_1 + N.
0695694
2012/07/11(水) 05:13:26.17'左端からn桁目の数のn乗を合計したものが元の数に等しい4桁以下の数をすべて求める'(_4桁以下の数) :-
between(0,9999,_4桁以下の数),
number_codes(_4桁以下の数,Codes),
findsum(_左端からn桁目の数のn乗,(
append(L0,[_左端からn桁目のcode|_],Codes),
length([_|L0],_n),
_左端からn桁目の数のn乗 is truncate((_左端からn桁目のcode-48) ^ _n)),
_4桁以下の数).
findsum(_選択項,_項,_合計値) :-
findall(_選択項,_項,_値ならび),
sum(_値ならび,_合計値).
sum([],0).
sum([N|R],S) :-
sum(R,S_1),
S is S_1 + N.
0696デフォルトの名無しさん
2012/07/11(水) 05:31:01.05% Prolog
'左端からn桁目の数のn乗を合計したものが元の数に等しい4桁以下の数をすべて求める'(_4桁以下の数) :-
between(0,9999,_4桁以下の数),
'4要素以下の数ならび'(_4桁以下の数,[],_4要素以下の数ならび),
'左端からn桁目の数のn乗を合計したものが元の数に等しい'(_4要素以下の数ならび,_4桁以下の数).
'4要素以下の数ならび'(0,L,L) :- !.
'4要素以下の数ならび'(N,L_1,L) :-
M is N mod 10,
N_1 is N // 10,
'4要素以下の数ならび'(N_1,[M|L_1],L).
'左端からn桁目の数のn乗を合計したものが'([N_1],N_1).
'左端からn桁目の数のn乗を合計したものが'([N_1,N_2],S) :-
S is N_1 + N_2 * N_2.
'左端からn桁目の数のn乗を合計したものが'([N_1,N_2,N_3],S) :-
S is N_1 + N_2 * N_2 + N_3 * N_3 * N_3.
'左端からn桁目の数のn乗を合計したものが'([N_1,N_2,N_3,N_4],S) :-
S is N_1 + N_2 * N_2 + N_3 * N_3 * N_3 + N_4 * N_4 * N_4 * N_4.
0697デフォルトの名無しさん
2012/07/11(水) 05:50:47.83Python
for t in xrange(10000):
if t == sum( int(str(t)[i])**(i+1) for i in xrange(len(str(t))) ):
print t
0698デフォルトの名無しさん
2012/07/11(水) 08:16:16.44import Data.Char
xs = [n | n <- [0..9999], (sum $ zipWith ((^) . digitToInt) (show n) [1..]) == n]
0699デフォルトの名無しさん
2012/07/11(水) 08:55:50.48#module
#include "hspmath.as"
#deffunc check int n, local buf, local x
buf=str(n)
repeat strlen(buf)
x+=pow(peek(buf, cnt)-'0', cnt+1)
loop
return n=x
#global
repeat 10000
check cnt
if stat : mes cnt
loop
0700デフォルトの名無しさん
2012/07/11(水) 08:56:45.420701デフォルトの名無しさん
2012/07/11(水) 10:05:44.63> fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
0702デフォルトの名無しさん
2012/07/11(水) 11:01:47.62scala> lazy val fib: Stream[Int] = Stream.cons(0, Stream.cons(1, fib.zip(fib.tail).map(p => p._1 + p._2)))
0703デフォルトの名無しさん
2012/07/11(水) 12:24:43.311^1 + 2^2 + 3^3 = 14 ??
0704デフォルトの名無しさん
2012/07/11(水) 12:39:44.82すみません。例が間違っていました。
> >>693
> 1^1 + 2^2 + 3^3 = 14 ??
123 => > 1^1 + 2^2 + 3^3 = 32 NG
でした。
0705デフォルトの名無しさん
2012/07/11(水) 13:01:17.68C#
foreach (var n in Enumerable.Range(0, 9999))
if (n == (from i in n.ToString().ToCharArray().Select(c => c - 48)
.Select((val, index) => new { val, index })
select Math.Pow(i.val, (i.index + 1))
).Sum())
Console.WriteLine(n);
0706デフォルトの名無しさん
2012/07/11(水) 14:23:35.25scala> def f(n: Int) = for {
x <- 0 to n;
if x == x.toString.zip(1 to n.toString.length).map{t => math.pow(t._1 - '0', t._2)}.sum
} yield x
scala> f(9999)
res0: scala.collection.immutable.IndexedSeq[Int] =
Vector(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 89, 135, 175, 518, 598, 1306, 1676, 2427)
0707デフォルトの名無しさん
2012/07/11(水) 18:19:29.30明日が何曜日なのか表示せよ。
0708デフォルトの名無しさん
2012/07/11(水) 18:51:34.94wday_name="日","月","火","水","木","金","土"
mes strf("明日は %s曜日", wday_name((gettime(2)+1)\7))
0709デフォルトの名無しさん
2012/07/11(水) 18:57:30.66Console.WriteLine ( DateTime.Today.AddDays(1).ToString("明日は dddd"));
明日は 木曜日
0710デフォルトの名無しさん
2012/07/11(水) 19:12:29.19# [2] 問題文(含コード&リンク):
#指定した親フォルダ下のbin、objフォルダ内のDebug、Rleaseフォルダを全て削除するプログラムを作成
0711デフォルトの名無しさん
2012/07/11(水) 19:42:21.64Python
# -*- coding: utf-8 -*-
import datetime
w = [u'月', u'火', u'水', u'木', u'金', u'土', u'日']
print u'明日は' + w[(datetime.date.today() + datetime.timedelta(days=1)).weekday() % 7] + u'曜日'
0712デフォルトの名無しさん
2012/07/11(水) 20:43:50.18Haskell
import Data.Time.Calendar
import Data.Time.Clock
import Data.Time.Format
import System.Locale
main = getCurrentTime >>= putStrLn . formatTime defaultTimeLocale "%a" . addDays 1 . utctDay
0713デフォルトの名無しさん
2012/07/11(水) 21:24:14.39; Common Lisp
(loop for i to 9999
when (= i
(loop for c across (write-to-string i)
and n upfrom 1
sum (expt (digit-char-p c) n)))
collect i)
0714デフォルトの名無しさん
2012/07/11(水) 21:42:05.62J
f=:3 :'+/(^1+i.@#)"."0":y'
(#~(=f)"0)i.10000
0 1 2 3 4 5 6 7 8 9 89 135 175 518 598 1306 1676 2427
0715デフォルトの名無しさん
2012/07/11(水) 22:21:35.21scala> :paste
import java.util.Calendar
val cal = Calendar.getInstance
cal.add(Calendar.DAY_OF_YEAR, 1)
println("明日は" + new java.text.SimpleDateFormat("E").format(cal.getTime) + "曜日")
明日は木曜日
0716デフォルトの名無しさん
2012/07/11(水) 23:11:10.350717デフォルトの名無しさん
2012/07/11(水) 23:21:31.34REBOL
>> print pick system/locale/days now/weekday + 1
Thursday
0718デフォルトの名無しさん
2012/07/12(木) 00:34:05.90Gauche
(define (f)
(let1 g (lambda (n)
(let1 l ((.$ (map$ digit->integer) string->list number->string) n)
(= (apply + (map (^x (apply expt x)) (zip l (iota 5 1)))) n)))
(filter g (iota 10000))))
(print (f))
0719デフォルトの名無しさん
2012/07/12(木) 00:41:23.14Gauche
(use srfi-19)
(print (vector-ref #(Sun Mon Tue Wed Thu Fri Sat) (date-week-day (current-date))))
0720デフォルトの名無しさん
2012/07/12(木) 01:10:12.71修正
(print (vector-ref #(Sun Mon Tue Wed Thu Fri Sat) (mod (+ (date-week-day (current-date)) 1) 7)))
0721デフォルトの名無しさん
2012/07/12(木) 08:53:17.51% Prolog
'指定した親フォルダ下のbin、objフォルダ内のDebug、Rleaseフォルダを全て削除する'(_指定した親フォルダ) :-
append(_,[_フォルダ_1|R],[bin,obj]),
member(_フォルダ_2,['Debug','Rlease']),
atomic_list_concat(['rm -R ',_指定した親フォルダ,/,_フォルダ_1,/,_フォルダ_2],S),
shell(S),
R = [].
0722デフォルトの名無しさん
2012/07/12(木) 09:26:20.22Z Shell
#!/usr/bin/zsh
# NOTE: Rleaseは要求仕様に依るものでReleaseのTYPOではない。
if [ $# -eq 1 ]; then
rm -rf $1/**/{bin,obj}/**/{Debug,Rlease}/
fi
0723デフォルトの名無しさん
2012/07/12(木) 09:35:49.85% Prolog SWI-Prologで明日をズバリ入手する方法があるのか調査中。
明日が何曜日なのか表示する :-
date(date(_今日の年,_今日の月,_今日の日)),
翌日(_今日の年,_今日の月,_今日の日,_翌日の年,_翌日の月,_翌日の日),
day_of_the_week(date(_翌日の年,_翌日の月,_翌日の日),_曜日番号),
nth0(_曜日番号,[日曜,月曜,火曜,水曜,木曜,金曜,土曜],_曜日),
writef('%t',[_曜日]).
翌日(_今日の年,12,31,_翌日の年,1,1) :-
_翌日の年 is _今日の年 + 1,!.
翌日(_年,_今日の月,_今日の日,_年,_翌日の月,1) :-
月末日(_年,_今日の月,_今日の日),
_翌日の月 is _今日の月 + 1,!.
翌日(_年,_月,_今日の日,_年,_月,_翌日の日) :-
_翌日の日 is _今日の日 + 1.
月末日(_,2,29) :- !.
月末日(_年,2,28) :- \+(うるう年(_年)),!.
月末日(_,_今日の月,31) :- !.
月末日(_,_今日の月,30) :- member(_今日の月,[4,6,9,11]),!.
うるう年(_年) :- 0 is _年 mod 400,!.
うるう年(_年) :- 0 is _年 mod 100,!,fail.
うるう年(_年) :- 0 is _年 mod 4.
0724721
2012/07/12(木) 11:00:30.42% Prolog ごめんなさい。間違っていました。
'指定した親フォルダ下のbin、objフォルダ内のDebug、Rleaseフォルダを全て削除する'(_指定した親フォルダ) :-
append(_,[_フォルダ_1|R],[bin,obj]),
append(_,[_フォルダ_2|R_2],['Debug','Rlease']),
atomic_list_concat(['rm -R ',_指定した親フォルダ,/,_フォルダ_1,/,_フォルダ_2],S),
shell(S),
R_2 = [],
R = [].
% でした。>>721だと obj/Rlease が対象になる前に終了してしまいます。
0725デフォルトの名無しさん
2012/07/12(木) 11:37:30.24% Prolog 「明日は何曜日」は今日は何曜日の次の曜日と考えたら
% よいではないかという助言をいただきました。確かに・・
明日が何曜日なのか表示する :-
date(_今日),
day_of_the_week(_今日,_今日の曜日番号),
_明日の曜日番号 is (_今日の曜日番号 + 1) mod 7,
nth0(_明日の曜日番号,[日曜,月曜,火曜,水曜,木曜,金曜,土曜],_曜日),
writef('%t',[_曜日]).
0726デフォルトの名無しさん
2012/07/12(木) 12:01:23.00REBOL
>> print pick system/locale/days (mod now/weekday 7) + 1
Friday
0727デフォルトの名無しさん
2012/07/12(木) 12:03:49.88octave
> disp(strftime("%A",localtime(time+86400)))
Friday
0728デフォルトの名無しさん
2012/07/12(木) 13:08:25.17もし bin/Rlease や obj/Debug という*ファイル*があったら消えてしまいますね
0729デフォルトの名無しさん
2012/07/12(木) 13:58:36.23Python
import os
def func(rootdir):
for (root, dirs, files) in os.walk(rootdir, topdown=False):
for d in dirs:
path = os.path.normpath(os.path.join(root, d))
os.rmdir(path)
print path + ' ... deleted.'
for f in files:
path = os.path.normpath(os.path.join(root, f))
os.remove(path)
print path + ' ... deleted.'
root = raw_input('input the root directory: ')
func(root + '/bin/')
func(root + '/obj/Debug/')
func(root + '/obj/Rlease/')
0730729
2012/07/12(木) 14:01:12.07func(root + '/bin/Debug/')
func(root + '/bin/Rlease/')
func(root + '/obj/Debug/')
func(root + '/obj/Rlease/')
ですね。
0731デフォルトの名無しさん
2012/07/12(木) 14:02:32.18% Prolog 確かに。削除が失敗することも想定すると>>724はダメで、
'指定した親フォルダ下のbin、objフォルダ内のDebug、Rleaseフォルダを全て削除する'(_指定した親フォルダ) :-
'指定した親フォルダ下のbin、objフォルダ内の'(_フォルダ_1),
'Debug、Rleaseフォルダを'(_フォルダ_2),
'全て削除する'(_指定した親フォルダ,_フォルダ_1,_フォルダ_2).
'指定した親フォルダ下のbin、objフォルダ内のDebug、Rleaseフォルダを全て削除する'(_).
'指定した親フォルダ下のbin、objフォルダ内の'(_フォルダ_1) :-
member(_フォルダ_1,[bin,obj]).
'Debug、Rleaseフォルダを'(_フォルダ_2) :-
member(_フォルダ_2,['Debug','Rlease']).
'全て削除する'(_指定した親フォルダ,_フォルダ_1,_フォルダ_2) :-
atomic_list_concat([_指定した親フォルダ,/,_フォルダ_1,/,_フォルダ_2],_フォルダ),
\+(exists_file(_フォルダ)),
atomic_list_concat(['rm -R ',_フォルダ],S),
shell(S),
fail.
0732デフォルトの名無しさん
2012/07/12(木) 15:06:25.42文字列が与えられたとき、この文字列を出力するBrainf*ckプログラムを生成せよ。
0733デフォルトの名無しさん
2012/07/12(木) 16:08:06.03Haskell
import System.Directory
import System.Environment
main = do
roots <- getArgs
mapM_ (\dir -> removeDirectoryRecursive dir `catch` print)
[x ++ "/" ++ y ++ "/" ++ z | x <- roots, y <- ["bin", "obj"], z <- ["Debug", "Rlease"]]
0734デフォルトの名無しさん
2012/07/12(木) 16:12:07.15ttp://www.google.com/search?q=quine+brainf*ck
0735デフォルトの名無しさん
2012/07/12(木) 17:01:21.29三本のまっすぐな棒の長さ a, b, c (1<= a,b,c <=1000 の整数)が与えられたとき
三本の棒で作ることの出来る三角形の最大面積を求めよ(計算誤差は 0.001以下とする)
棒は切断したり曲げたりすることは出来ない
また棒の太さは十分細く無視できるものとする
0736デフォルトの名無しさん
2012/07/12(木) 17:05:19.67% Prolog
'文字列が与えられたとき、この文字列を出力するBrainf*ckプログラムを生成する'(_文字列) :-
atom_length(_文字列,_文字列の長さ),
文字列をセルに書き込む(_文字列),
セルの文字列を出力する(_文字列の長さ).
文字列をセルに書き込む(_文字列) :-
write(>),
sub_atom(_文字列,_,1,R,_文字),
一文字セルに書く(_文字),write(>),
R = 0,!.
セルの文字列を出力する(_文字列の長さ) :-
ポインターを戻す(_文字列の長さ),
セルから文字を順に取り出し出力する(_文字列の長さ).
一文字セルに書く(_文字) :-
char_code(_文字,_文字コード),
between(1,_文字コード,N),write(+),N = _文字コード.
ポインターを戻す(_文字列の長さ) :-
between(1,N,_文字列の長さ),write(<),N = _文字列の長さ.
セルから文字を順に取り出し出力する(_文字列の長さ) :-
between(1,N,_文字列の長さ),
write('.>'),
N = _文字列の長さ.
0737デフォルトの名無しさん
2012/07/12(木) 17:42:44.68意味がよくわからない。それだと、ヘロンの公式を適用するだけのように思うが。
0738デフォルトの名無しさん
2012/07/12(木) 17:44:42.36Scala
scala> def encode_bf(s: String) = s.flatMap("+" * _.toInt + ">") + "<" * s.length + ".>" * s.length
scala> :paste
object BrainfuckDecorder extends util.parsing.combinator.JavaTokenParsers {
val memory = Array.fill(4096)(0)
var pointer = 0
var counter = 0
def read: Int = memory(pointer)
def write(x: Int) = memory(pointer) = x
def exec(in: String) = parseAll(exprs, in)
def exprs = rep(incPtr | decPtr | incMem | decMem | output | input)
def incPtr = ">" ^^ { case ">" => {pointer += 1; counter += 1} }
def decPtr = "<" ^^ { case "<" => {pointer -= 1; counter += 1} }
def incMem = "+" ^^ { case "+" => write(read + 1) }
def decMem = "-" ^^ { case "-" => write(read - 1) }
def output = "." ^^ { case "." => print(read.toChar) }
def input = "," ^^ { case "," => {print(">"); write(readChar); println} }
}
scala> BrainfuckDecorder.exec(encode_bf("hoge\n"))
hoge
0739デフォルトの名無しさん
2012/07/12(木) 18:45:22.09面積計算して最大だせばいいのかな?
短く使うときは辺の長さは整数とは限らないのかな?
0740デフォルトの名無しさん
2012/07/12(木) 18:49:35.81#module
#deffunc swap var a, var b, local t
t=a
a=b
b=t
return
#defcfunc calc int a_, int b_ , int c_, local a, local b, local c, local s, local area
a=a_
b=b_
c=c_
if a<b : swap a, b
if a<c : swap a, c
if b<c : swap b, c
if a*a>b*b+c*c {
area=0.5*b*c
} else {
s=0.5*(a+b+c)
area=sqrt(s*(s-a)*(s-b)*(s-c))
}
return area
#global
mes calc(30,40,49) ; 599.489314
mes calc(30,40,50) ; 600.000000
mes calc(30,40,51) ; 600.000000
mes calc(1,1,10) ; 0.500000
0741デフォルトの名無しさん
2012/07/12(木) 19:03:45.81Io
f:=method(s,
a:=0;w:="";
s foreach(v,b:=v-a;w=w ..(if(b>0,"+","-")repeated(b abs)..".");a=a+b);
w)
Io> f("ACB")
==> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.++.-.
0742デフォルトの名無しさん
2012/07/12(木) 19:06:39.65Python
import sys
write = sys.stdout.write
s = raw_input()
cur = 0
dif = 0
for e in s:
code = ord(e)
dif = code - cur
cur = code
for _ in xrange(abs(dif)):
write('-' if dif < 0 else '+')
write('.')
0743デフォルトの名無しさん
2012/07/12(木) 19:22:50.70Python
a, b, c = sorted(map(int, raw_input().split()))
if a + b <= c:
print -1
else:
s = (a + b + c) / 2.
S = (s * (s-a) * (s-b) * (s-c)) ** .5
print S
0745デフォルトの名無しさん
2012/07/12(木) 22:39:33.271が連続しない2進数を1から小さい順に1000個求めよ。
例
10 => OK
110 => NG
10101 =>OK
11011 =>NG
0746デフォルトの名無しさん
2012/07/12(木) 22:51:33.54buf=""
repeat 1000,1
buf+=str(cnt\2)
mes buf
loop
0747デフォルトの名無しさん
2012/07/12(木) 22:52:25.180748デフォルトの名無しさん
2012/07/12(木) 23:28:59.47Haskell
import Data.List
b 0 = "0"
b 1 = "1"
b n = b x ++ b y where (x,y) = n `divMod` 2
main = print $ take 1000 $ filter (not . isInfixOf "11") $ map b [1..]
0749デフォルトの名無しさん
2012/07/12(木) 23:36:20.48C#
public static IEnumerable<string> bin()
{
for (int i = 0; ; ++i) yield return Convert.ToString(i, 2);
}
static void Main() {
Regex regex = new Regex("1{2,}");
foreach (var s in (from s in bin() where !regex.IsMatch(s) select s).Take(1000))
Console.WriteLine(s);
}
0750デフォルトの名無しさん
2012/07/12(木) 23:39:08.080751デフォルトの名無しさん
2012/07/12(木) 23:39:32.32http://ideone.com/yncM8
0752デフォルトの名無しさん
2012/07/12(木) 23:47:56.870753デフォルトの名無しさん
2012/07/13(金) 00:01:04.20#module
#defcfunc num2bin int x_, local x, local buf
x=x_
buf=""
repeat
if x=0 : break
buf=strf("%d%s", x&1, buf)
x>>=1
loop
return buf
#global
result.0="1"
repeat -1, 2
buf=num2bin(cnt)
if instr(buf, 0, "11")<0 {
result.length(result)=buf
if length(result)>=1000 : break
}
loop
buf=""
repeat 1000
buf+=result.cnt+"\n"
loop
mesbox buf, ginfo_sx, ginfo_sy
0754デフォルトの名無しさん
2012/07/13(金) 00:32:00.79この問題の元の答え教えてもらえませんか?
もしくはC#で書ける人いたらお願いします
0755デフォルトの名無しさん
2012/07/13(金) 00:46:57.504フォルダに
System.IO.Directory.Deleteで trueつければいいんじゃねーの?
0756デフォルトの名無しさん
2012/07/13(金) 00:57:39.67Gauche
(define (gen s)
(list->string (apply append (map (^x (append (take (circular-list #\+) (char->integer x)) '(#\. #\>))) (string->list s)))))
0757デフォルトの名無しさん
2012/07/13(金) 01:02:03.34普段C#なんて殆ど書かないし、仕様を履き違えてるかもしれないし、バグがあるかもしれないけど、どうぞ。
使うのは自己責任で。ディレクトリを削除するツールなので念押ししておきます。
using System;
using System.IO;
public class Labo_1276873238_710 {
private void doIt() {
Console.Write("input your root directory: ");
string root = Console.In.ReadLine();
Directory.Delete(root + @"\bin\Debug\", true);
Directory.Delete(root + @"\bin\Release\", true);
Directory.Delete(root + @"\obj\Debug\", true);
Directory.Delete(root + @"\obj\Release\", true);
}
static void Main(string[] args) {
new Labo_1276873238_710().doIt();
}
}
0758デフォルトの名無しさん
2012/07/13(金) 01:12:02.22Python
l = ['1', '0'] * 500
for i in xrange(1000):
s = ''.join(l)[0:i+1]
print int(s, 2)
0759デフォルトの名無しさん
2012/07/13(金) 01:17:54.80Gauche
(use srfi-13)
(use srfi-43)
(define (f)
(letrec ((itr (lambda (n vs)
(if (= (vector-length vs) 1000) vs
(if (string-scan (format "~b" n) "11") (itr (+ n 1) vs)
(itr (+ n 1) (vector-append vs (vector n))))))))
(itr 0 (make-vector 0))))
(print (f))
0760デフォルトの名無しさん
2012/07/13(金) 01:20:06.49まずプログラムの出力が"100"を含むかどうか
チェックしろと言いたい
0761デフォルトの名無しさん
2012/07/13(金) 03:36:28.12% Prolog
'1が連続しない2進数を1から小さい順に1000個求めよ。' :-
'1が連続しない2進数を1から小さい順に1000個求めよ。'([1],1).
'1が連続しない2進数を1から小さい順に1000個求めよ。'([1|L],_度数) :-
atomic_list_concat([0,b|[1|L]],S),
atom_to_term(S,X,_),
writef('%t: %t=%t\n',[_度数,X,S]),
_度数 = 1000,!.
'1が連続しない2進数を1から小さい順に1000個求めよ。'([1|L],_度数_1) :-
_度数_2 is _度数_1 + 1,
'1が連続しない2進数を1から小さい順に1000個求めよ。'([0|[1|L]],_度数_2).
'1が連続しない2進数を1から小さい順に1000個求めよ。'([0|L],_度数) :-
member(N,[1,0]),
'1が連続しない2進数を1から小さい順に1000個求めよ。'([N|[0|L]],_度数).
0762デフォルトの名無しさん
2012/07/13(金) 08:50:35.54% Prolog
'1が連続しない2進数を1から小さい順に1000個求めよ。'(_1000個の数ならび) :-
findall(_10進数,(
'1が連続しない2進数を1から小さい順に'([1],1,_度数,_ビットならび),
( _度数 > 1000,!,fail;
'ビットならびを10進数に変換'(_ビットならび,_10進数))),
_1000個の数ならび).
'1が連続しない2進数を1から小さい順に'([1|L],_度数,_度数,[1|L]).
'1が連続しない2進数を1から小さい順に'([1|L],_度数_1,_度数,_ビットならび) :-
_度数_2 is _度数_1 + 1,
'1が連続しない2進数を1から小さい順に'([0,1|L],_度数_2,_度数,_ビットならび).
'1が連続しない2進数を1から小さい順に'([0|L],_度数_1,_度数,_ビットならび) :-
member(N,[1,0]),
'1が連続しない2進数を1から小さい順に'([N,0|L],_度数_1,_度数,_ビットならび).
'ビットならびを10進数に変換'(L,_10進数) :-
atomic_list_concat([0,b|L],_二進数表示),
atom_to_term(_二進数表示,_10進数,_).
0763762
2012/07/13(金) 09:18:07.48% Prolog 最初の述語の終止条件は以下が適切でした。
'1が連続しない2進数を1から小さい順に1000個求めよ。'(_1000個の数ならび) :-
findall(_10進数,(
'1が連続しない2進数を1から小さい順に'([1],1,_度数,_ビットならび),
( _度数 = 1000,! ;
'ビットならびを10進数に変換'(_ビットならび,_10進数))),
_1000個の数ならび).
%
% findall(X,(
% read(X),
% ( X=end_of_file,!,fail; true )),
% L).
%
% のような場合はLの中にend_of_fileを蒐集したくないから、failを入れます。上の場合は、
% 1000番目を含めたいから、 _度数 = 1000,!,true; でよい。(trueは省略可)
0764デフォルトの名無しさん
2012/07/13(金) 09:20:10.44すみません。訂正。repeatを落としました。
%
% findall(X,(
% repeat,
% read(X),
% ( X=end_of_file,!,fail; true )),
% L).
0765デフォルトの名無しさん
2012/07/13(金) 09:42:33.31>>763 - >>764 はなかったことにしてください !!!
正しく実行されるためには、二箇所に 'ビットならびを10進数に変換' を書く必要がありました。
これを入れないと1000番目の要素だけ数値ではなく変数になってしまいます。
'1が連続しない2進数を1から小さい順に1000個求めよ。'(_1000個の数ならび) :-
findall(_10進数,(
'1が連続しない2進数を1から小さい順に'([1],1,_度数,_ビットならび),
( _度数 = 1000,!,'ビットならびを10進数に変換'(_ビットならび,_10進数);
'ビットならびを10進数に変換'(_ビットならび,_10進数))),
_1000個の数ならび).
0766758
2012/07/13(金) 09:58:01.95cnt = 0
n = 1
while 1:
b = format(n, 'b')
if not '11' in b:
cnt += 1
print b
if cnt == 1000:
break
n += 1
0767デフォルトの名無しさん
2012/07/13(金) 11:36:08.66ありがとうございます
0768デフォルトの名無しさん
2012/07/13(金) 18:10:13.97ある数xの立方根を求めよ。
例
x=4のとき1.587401
0769デフォルトの名無しさん
2012/07/13(金) 18:20:28.84#module
#include "hspmath.as"
#defcfunc calc double x
return pow(x, 1.0/3)
#global
mes calc(4)
0770デフォルトの名無しさん
2012/07/13(金) 18:43:19.82Python
n = float(raw_input('n='))
print n ** (1./3)
0771デフォルトの名無しさん
2012/07/13(金) 18:59:50.21壁は#, 通路は.で表されている.
また迷路の外側は全て壁(即ち#)となっている.
スタート地点はS, ゴール地点はGである.
スタートからゴールまでの道のりを表わせ.
上へ移動する場合にはu, 同様に下はd, 右はr, 左はlとせよ.
最短経路が複数ある場合は, それらのうちどれかひとつを出力せよ。
例1)
#######
#..S..#
#.....#
#..G..#
#######
答え)
dd
例2)
#######
#.....#
#.G.#.#
#..#..#
#.#.S.#
#.....#
#######
答え)
ldlluuru
0772771
2012/07/13(金) 19:04:32.72ttp://ideone.com/
自分の言語がないときは、"Text"を選ぶとプレーンテキストとして表示されるようです。
0773デフォルトの名無しさん
2012/07/13(金) 19:46:58.84http://ideone.com/Uz0uM
0774デフォルトの名無しさん
2012/07/13(金) 22:12:17.47Gauche
(define (f a b c)
(if (and (< a (+ b c)) (< b (+ a c)) (< c (+ a b)))
(let ((s (/ (+ a b c) 2)))
(sqrt (* s (- s a) (- s b) (- s c))))
-1))
>>759
- (itr 0 (make-vector 0))))
+ (itr 1 (make-vector 0))))
なぜいつも問題文が読めないのか
0775デフォルトの名無しさん
2012/07/13(金) 22:13:49.59Gauche
(define (f n) (expt n (/ 1 3)))
0776デフォルトの名無しさん
2012/07/14(土) 02:10:56.70C#
http://ideone.com/uJYEx
距離で.を置換後、Gから逆にたどったけどあってんのかな?
0777デフォルトの名無しさん
2012/07/14(土) 02:22:25.58http://ideone.com/SUA7T
0778デフォルトの名無しさん
2012/07/14(土) 05:35:15.41########
#......#
#.G....#
#......#
#....S.#
#......#
########
このときは5文字が正解なんですが, 7文字出力してますね.
0779デフォルトの名無しさん
2012/07/14(土) 07:21:24.60出発点(2,4).
終着点(4,4).
迷路の定義(L) :-
nth0(Y,L,S),
sub_atom(S,X,1,_,A),
\+(A = '#'),
assertz(道(Y,X)),
fail;true.
最短経路(_最短経路) :-
出発点(Y0,X0),
findmin([_通過距離,_経路],(
道に迷う([[Y0,X0]],Y0,X0,_方向ならび),
length(_方向ならび,_通過距離),
atom_chars(_経路,_方向ならび)),
[_,_最短経路]).
道に迷う(_,Y,X,[]) :- 終着点(Y,X).
道に迷う(L,Y_1,X_1,[_方向|R]) :-
隣接点を得る(L,Y_1,X_1,Y_2,X_2,_方向),
道に迷う(L_2,Y_2,X_2,R).
隣接点を得る(L,Y_1,X_1,Y_2,X_2,_方向) :-
member([_方向,A,B],[[r,1,0],[l,-1,0],[d,0,1],[u,0,-1]]),
Y_2 is Y_1 + B, X_2 is X_1 + A,
道(Y_2,X_2),
\+(member([Y_2,X_2],L_1)).
0780779
2012/07/14(土) 08:20:54.47% Prolog
述語 道に迷う/3 と 隣接点を得る/6 に一ヶ所ずつ誤りがあった。
下サイトに修正したものを載せます。
http://nojiriko.asia/prolog/ironnagengo5_771.html
0781デフォルトの名無しさん
2012/07/14(土) 09:33:49.72ありがとー
http://ideone.com/evnF5
0782デフォルトの名無しさん
2012/07/14(土) 10:51:37.63Perl
use feature qw(say);
my @list = (1);
foreach(1..1000){
say @list;
my $p = $#list;
while(1){
if ($p < 0){
unshift(@list, 1);
last;
}
if ($list[$p] ^= 1){
$list[--$p] or last;
$list[$_] = 0 foreach($p..$#list);
}
--$p;
}
}
0783デフォルトの名無しさん
2012/07/14(土) 10:54:16.60Perl
http://ideone.com/QLlrK
0784デフォルトの名無しさん
2012/07/14(土) 13:58:28.01単精度浮動小数点数はIEEE 754形式では
(-1) ** 符号部 * (1 + 仮数部) * 2 ** (指数部 - 127)
で表現します.
符号部が上位1bit, 指数部が次の8bit, 仮数部が残りです.
例)
1
0011 1111 1000 0000 0000 0000 0000 0000
1.5
0011 1111 1100 0000 0000 0000 0000 0000
5.23
0100 0000 1010 0111 0101 1100 0010 1001
-1.25
1011 1111 1010 0000 0000 0000 0000 0000
-3.888
1100 0000 0111 1000 1101 0100 1111 1110
-100.0099
1100 0010 1100 1000 0000 0101 0001 0010
0785デフォルトの名無しさん
2012/07/14(土) 16:50:59.68#module
#defcfunc int2bin int value, local buf
buf=""
repeat 32
buf+=strf("%c", '0'+((value>>(31-cnt))&1))
if (cnt\4)=3 : buf+=" "
loop
return buf
#defcfunc solve str num_str, local value, local x, local buf, local sign
value=double(num_str)
dupptr x, varptr(value), 8, vartype("int")
if x.1 & $80000000 : sign=1
flp_d=((x.1 & $7ff00000)>>20)-$3ff
flp_f=((flp_d+$7f) & $ff)<<23
if flp_d<-$7f : flp_f=0
if flp_d>$7f : flp_f=$ff<<23
y=(sign<<31)|flp_f|((x.1<<3)&$007ffff8)|((x.0>>29)&$00000007)
return int2bin(y)
#global
mes solve("1")
mes solve("1.5")
mes solve("5.23")
mes solve("-1.25")
mes solve("-3.888")
mes solve("-100.0099")
mes solve("0")
0786デフォルトの名無しさん
2012/07/14(土) 20:06:29.35; Common Lisp
(loop for binary upfrom #2r1
until (= (length list) 1000)
unless (search "11" (format nil "~b" binary))
collect binary into list
finally (return list))
0787デフォルトの名無しさん
2012/07/14(土) 20:18:21.45Perl
use feature qw(say);
sub ieee754_32bit {
my ($n) = @_;
my $s = ($n < 0 ? 1 : 0);
$n = abs($n);
my $e = 0;
if ($n == 0){
$n = 1;
$e = -127;
}
while($n >= 2){
$n /= 2;
$e++;
}
while($n < 1){
$n *= 2;
--$e;
}
my $d = ($s << 31) | ((127 + $e) << 23) | int(($n - 1) * (1 << 23) + 0.5);
return unpack('B*', pack('N', $d));
}
foreach(1, 1.5, 5.23, -1.25, -3.888, -100.0099){
say $_;
say join(' ', ieee754_32bit($_) =~ /([01]{4})/g);
}
0788デフォルトの名無しさん
2012/07/14(土) 21:37:48.56; Common Lisp
(defun ieee754 (x)
(format t "~39,'0,' ,4:b"
(multiple-value-bind (signif expon sign)
(integer-decode-float (float x))
(+ (if (plusp sign) 0 (expt 2 31))
(* (+ expon 150) (expt 2 23))
(- signif (expt 2 23))))))
0789デフォルトの名無しさん
2012/07/14(土) 21:50:54.84丸めを訂正してみる。
my $f = ($n - 1) * (1 << 23);
my $r = ((($f - int($f) == 0.5) and ((int($f) & 1) == 0)) ? 0 : 0.5);
my $d = ($s << 31) | ((127 + $e) << 23) | int($f + $r);
0790デフォルトの名無しさん
2012/07/15(日) 22:40:41.78Gauche
(use util.list)
(use binary.io)
(use gauche.uvector)
(define (f x)
(let ((v (make-u32vector 1))) (put-f32le! v 0 x)
(string-join (map list->string (slices (string->list (format "~32,'0b" (ref v 0))) 4)))))
0791デフォルトの名無しさん
2012/07/16(月) 16:23:58.58C#
Action<float> f = x => BitConverter.GetBytes(x).Reverse().ToList().ForEach( b=>Console.Write( Convert.ToString(b,2).PadLeft(8,'0')));
f(-100.0099F);
0792デフォルトの名無しさん
2012/07/19(木) 19:25:24.252点が与えられたときその2点を結ぶ単純な経路(同じ頂点を通らない経路)
が2つ以上存在するかを判定するアルゴリズムと計算量を述べよ。
深さ優先探索で|V|+|E| とかでしょうか?
0793デフォルトの名無しさん
2012/07/20(金) 00:04:15.691.全ての経路情報について グラフ G0、頂点 V0 とする
2.指定された2点間を接続する最小木について グラフG1,、頂点 V1 とする
3.G0 について V1 以外の頂点を可能な限りクラスタリングしてグラフ G2、頂点 V2 とする
4.G2 に閉路があれば、経路が2つ以上存在する
0794デフォルトの名無しさん
2012/07/20(金) 22:20:56.42mが3でnが2の場合の例:
111
112
121
122
211
212
221
222
0795デフォルトの名無しさん
2012/07/20(金) 22:32:05.19#module
#deffunc hoge int m, int n, int d, var result
if d>=m : mes result : return
repeat n
poke result, d, cnt+'1'
hoge m, n, d+1, result
loop
return
#deffunc solve int m, int n, local result
sdim result, m+1
hoge m, n, 0, result
return
#global
solve 3, 2
0796デフォルトの名無しさん
2012/07/21(土) 05:40:52.31% Prolog
http://nojiriko.asia/prolog/ironnagengo5_794.html
0797デフォルトの名無しさん
2012/07/21(土) 08:54:43.15長方形ABCDの二辺ABとBCが与えられたとき(AB>BC)
L=AE=BF=CF=DE=EFとなるLを求めよ。
A■■■■■■■■■■■■■B
■■□□□□□□□□□□□■■
■□■□□□□□□□□□■□■
■□□■□□□□□□□■□□■
■□□□E■■■■■F□□□■
■□□■□□□□□□□■□□■
■□■□□□□□□□□□■□■
■■□□□□□□□□□□□■■
D■■■■■■■■■■■■■C
例
AB=11、BC=8のとき、L=5
0798デフォルトの名無しさん
2012/07/21(土) 09:07:48.54#module
#defcfunc calc double AB, double BC
return (-AB+sqrt(4.0*AB*AB+3.0*BC*BC))/3.0
#global
mes calc(11, 8)
0799デフォルトの名無しさん
2012/07/21(土) 10:06:19.44>>771
http://ideone.com/ZLxkM
>>794
let f m n =
let rec series result = function
| 0 -> result
| m -> series [for r in result do for x in 1 .. n -> r + string x] (m - 1)
series [""] m
0800デフォルトの名無しさん
2012/07/21(土) 10:46:00.24let f AB BC = sqrt (4./9. * AB ** 2. + 1./3. * BC ** 2.) - 1./3. * AB
0801デフォルトの名無しさん
2012/07/21(土) 13:18:27.80Gauche
(define (p xs n)
(if (= n 0) '(())
(apply append (map (^x (map (pa$ cons x) (p xs (- n 1)))) xs))))
(define (f m n)
(p (iota n 1) m))
(print (f 3 2))
0802デフォルトの名無しさん
2012/07/21(土) 13:39:40.59J
f=:4 :'1":1+#.inv i.y^x'
3 f 2
111
112
121
122
211
212
221
222
0803デフォルトの名無しさん
2012/07/21(土) 14:13:36.40#include "sqlele.hsp"
#module
#defcfunc solve int m, int n, local src, local dest, local ret
sql_open ":memory:"
sql_q "CREATE TABLE base (s TEXT)"
repeat n,1
sql_q strf("INSERT INTO base (s) VALUES('%d')", cnt)
loop
repeat m
if cnt=0 {
dest=strf("%c.s", 'A'+cnt)
src=strf("base %c", 'A'+cnt)
} else {
dest+=strf("||%c.s", 'A'+cnt)
src+=strf(",base %c", 'A'+cnt)
}
loop
sql_q strf("SELECT %s result FROM %s", dest, src)
ret=""
repeat stat
ret+=strf("%s\n", sql_v("result"))
sql_next
loop
sql_close
return ret
#global
buf=solve(3, 2)
mesbox buf, ginfo_sx, ginfo_sy
0804デフォルトの名無しさん
2012/07/21(土) 14:59:20.59J
間違えました。802はn=2のときしかうまくいきませんでした。
f=:4 :'1":1+y#.inv i.y^x'
4 f 3
1111
1112
1113
1121
(略)
3323
3331
3332
3333
0805デフォルトの名無しさん
2012/07/21(土) 17:15:40.12% Prolog
'長方形ABCDの二辺ABとBCが与えられたとき(AB>BC)L=AE=BF=CF=DE=EFとなるLを求めよ。'(AB,BC,L) :-
between(0,100000,N),
L is AB * N / 100000,
L^2 >= 0.25 * (BC^2 + (AB - L)^2),!.
0806デフォルトの名無しさん
2012/07/21(土) 18:04:32.540807デフォルトの名無しさん
2012/07/21(土) 20:43:33.210808デフォルトの名無しさん
2012/07/25(水) 19:55:06.21敷き詰める矩形は後述の52種のうちから選択し90度回転を認め、各一回だけ使用できる
解は厳密解でなくてもよいが、計算時間は一分以内を目安とせよ
問題.1 50x50 の領域になるべく隙間なく矩形を並べたとき、隙間の総面積を出力せよ。またそのときの並べ方を出力せよ。
問題.2 200x100 の領域になるべく隙間なく矩形を並べたとき、隙間の総面積を出力せよ。またそのときの並べ方を出力せよ。
52種の矩形表記順は 名前 矩形幅 矩形高さ の順である
http://www1.axfc.net/uploader/Sc/so/365046.txt
0809808
2012/07/25(水) 20:09:30.84矩形が領域外にはみ出さないようにすること
矩形同士が重ならないようにすること
0810デフォルトの名無しさん
2012/07/26(木) 11:31:46.35>,[>,]<[<]+++++++++++++++++++++++++++++++++++++++++++>[[-<.>]++++++++++++++++++++++++++++++++++++++++++++++.++++++++++++++++.------------------->]
0811デフォルトの名無しさん
2012/07/28(土) 01:05:50.59ニワン語
dt(x.pow(1/3))
0812デフォルトの名無しさん
2012/08/01(水) 10:23:40.35# [1] 授業単元: C言語実習
# [2] 問題文(含コード&リンク):
# 「分母と分子にある同じ数字を消す」という間違った約分を行うと、
# 正しく約分した値と同じになる分数が存在する。
# (例えば「187/748」は、普通に約分すると1/4に、分母と分子で重複している7と8を消すと1/4となる)
# このような分数は無限に存在するので、下のような条件を付ける。
#
# (1)分母と分子で同じ数字があればそのペアは必ず消す
# (2)消されるペアは、分母と分子に1文字ずつしか入っていない。つまり消すペアは一意に決まり、
# また、同じ数字で複数のペアが存在することもない
# (3)最終的に分母分子がそれぞれ1桁でできた、1未満の既約分数となる
# (4)数字の0(ゼロ)は使わない
# (5)負の分数は考えない
#
# この条件で、上記の間違った約分を行った結果が、正しく約分した値と同じになる分数は
# 何通りあるか。
#
0813デフォルトの名無しさん
2012/08/01(水) 18:24:37.57http://ideone.com/Jdhwn
349
0814デフォルトの名無しさん
2012/08/04(土) 12:57:57.54http://ideone.com/wgRC2
0815デフォルトの名無しさん
2012/08/05(日) 19:02:11.50各文字について、前の文字との差分をとるか次のポインタに進めるか、
より短く表現できる方を使っていく
let toBF (input : string) =
let diff x y =
let c, s = if x - y < 128uy then x - y, "-" else y - x, "+"
String.replicate (int c) s + "."
let bytes = System.Text.Encoding.UTF8.GetBytes input
let prevs = bytes |> Seq.append [0uy] |> Seq.pairwise |> Seq.map ((<||) diff)
let zeros = bytes |> Seq.map (diff 0uy >> (+) ">")
Seq.zip prevs zeros |> Seq.map (fun (prev, zero) -> [prev; zero] |> Seq.minBy String.length)
|> String.concat ""
0816デフォルトの名無しさん
2012/08/09(木) 18:30:04.22どなたか教えていただけませんか?
最初に「文字列を入力してください.」と表示して文字列を読みこみ、
次に「確認のため、もう一度入力してください.」と表示して
再び文字列を読み込み、二つの文字列が同じなら「OK」と表示して終了し、
違っている場合は「文字列の照合に失敗しました.
もう一度入力してください」と表示して、照合に成功するまで聞き続けるプログラムをex07-3-02.rbで保存して実行してください.
0817デフォルトの名無しさん
2012/08/09(木) 18:57:09.320818デフォルトの名無しさん
2012/08/09(木) 19:07:48.63Rubyなんて久しぶりに書いたわ.
ソースコードはUTF-8で保存してください.
# vim:set fileencoding=utf-8:
while 1
puts '文字列を入力してください.'
s1 = gets
puts '確認のため, もう一度入力してください.'
s2 = gets
if s1 == s2
puts 'OK'
break
else
puts '文字列の照合に失敗しました. もう一度入力してください.'
end
end
0819デフォルトの名無しさん
2012/08/09(木) 19:18:13.12できましたあああああマジありがとうございます!!!
0820デフォルトの名無しさん
2012/08/09(木) 22:14:29.79# [1] 授業単元: 計算量理論
# [2] 問題文:
Merkle-Hellmanの公開鍵暗号系をJava言語で実装せよ.
ヒント: Javaには,大きな整数を表すためにBigInteger という
クラスが用意されている.そのクラスに,大きな整数間
の算術演算を行うためのインスタンス・メソッドが用意
されている.
C言語でプログラムを書きたい場合は,
多倍長計算用のライブラリ(GMP)のインストールが必要.
インストールする際,下記のサイトを参考にするように.
http://homepage2.nifty.com/m_kamada/math/gmp_ja.htm
よろしくおねがいします><
0821デフォルトの名無しさん
2012/08/09(木) 23:00:14.27Javaの宿題スレに行ってください.
0822デフォルトの名無しさん
2012/08/10(金) 03:33:19.67本来のこのスレの使い方は、最初にJavaスレで課題が解決されて、
その後、このスレにコピーさせてもらって出題。
みんなで、いろんな言語で回答し合って楽しむというもの。
0823デフォルトの名無しさん
2012/08/10(金) 03:34:24.33ごめん、「Javaの宿題」スレですね。
0824821
2012/08/10(金) 11:05:30.65???
だからJavaの宿題スレに誘導したんだけど.
0825デフォルトの名無しさん
2012/08/10(金) 14:32:39.06問題1
最初に「文字列を入力してください.」と表示して文字列を読みこみ、
次に「数字を入力してください.」と表示して数字を読み込み、
入力文字列を入力した数字の回数分だけ一行ずつ表示するプログラムを
ex07-3-03.rbで保存して実行してください.
問題2
問題1で作成したプログラムは、数字の読み込みについてバグがある
可能性があります(数字でないものが入力されたとき、
どうなるでしょうか?).もしバグがある場合、
それを修正したプログラムをex07-3-04.rbで保存して実行してください.
0826デフォルトの名無しさん
2012/08/10(金) 15:06:34.49Console.Write("文字列を入力してください.");
var inputText = Console.ReadLine();
Console.Write("数字を入力してください.");
var inputNum = Console.ReadLine();
if (int.TryParse(inputNum, out num))
for (int i = 0; i < num; i++)
Console.WriteLine(inputText);
0827デフォルトの名無しさん
2012/08/10(金) 15:17:21.67# vim:set fileencoding=utf-8:
puts '文字列を入力してください.'
s = gets
puts '数字を入力してください.'
n = gets.to_i
n.times {
print s
}
# vim:set fileencoding=utf-8:
puts '文字列を入力してください.'
s = gets
s1 = ''
while s1 !=~ /\d+/
puts '数字を入力してください.'
s1 = gets
begin
n = Integer(s1)
n.times {
print s
}
break
rescue
end
end
0828デフォルトの名無しさん
2012/08/10(金) 15:58:23.07>>827
ありがとうございました
0829デフォルトの名無しさん
2012/08/10(金) 17:17:31.77数独の解答が9行9列の文字列で与えられたとき正しいかどうか判定せよ。
0830デフォルトの名無しさん
2012/08/11(土) 03:22:14.98問題1
はじめに変数に適当な数の文字列による配列をあらかじめ設定しておき、入力された数字を受け取ったら、そのスロットの文字列を表示するプログラムをex08-02.rbで保存して実行してください.
問題2
問題1のプログラムは、nilのスロットが指定されると、そのままnilを返します.このときには「そのスロットには文字列はありません.」と表示されるように、書き換えて、ex08-03.rbで保存して実行してください.
問題3
はじめに文字列の値を設定した配列変数の各スロットについて、その文字列の文字数を表示するプログラムをex08-04.rbで保存して実行してください.たとえばstrings=[’dog’,’cat’,’mouse’]の場合、以下のように出力させます.
dogは3文字
catは3文字
mouseは5文字
問題4
はじめに文字列の値を設定した配列変数の各スロットの内容を3回ずつ表示するプログラムをex08-05.rbで保存して実行してください.
0831デフォルトの名無しさん
2012/08/11(土) 03:23:39.01以下のように入力したいだけの文字列を入力するよう求めて、Enterが押されたらそれを入力した順につなげて1行に出力するプログラムをex08-07.rbで保存して実行してください.
文字列を入力してください
dog[Enter]
文字列を入力してください
cat[Enter]
文字列を入力してください
elephant[Enter]
文字列を入力してください
[Enter]
あなたの入力した文字列は
dog,cat,elephant
です.
問題6
問題5のプログラムを、文字列を入力とは逆順に出力するように書き換えたプログラムをex08-08.rbで保存して実行してください.
問題7
問題5のプログラムを、3文字の文字列のみを出力するように書き換えたプログラムをex08-09.rbで保存して実行してください.
0832デフォルトの名無しさん
2012/08/11(土) 10:35:42.25let checkSudoku (numberTable : string[][]) =
let valid = List.sort >> (=) ([1 .. 9] |> List.map string)
[ [ for y in 0 .. 8 -> [ for x in 0 .. 8 -> y, x ] ]
[ for x in 0 .. 8 -> [ for y in 0 .. 8 -> y, x ] ]
[ for i in 0 .. 3 .. 8 do for j in 0 .. 3 .. 8 -> [ for y in 0 .. 2 do for x in 0 .. 2 -> y + i, x + j ] ] ]
|> List.concat |> List.forall (List.map (fun (y, x) -> numberTable.[y].[x]) >> valid)
0833デフォルトの名無しさん
2012/08/11(土) 15:18:13.61#module
#defcfunc check array map, local x, local y, local f, local t
dim f, 9, 3
for y, 0, 9
for x, 0, 9
t=1<<map(x, y)
f(y, 0)|=t
f(x, 1)|=t
f((y/3)*3+(x/3), 2)|=t
next
next
for y, 0, 3
for x, 0, 9
if f(x, y)!$3fe : return 0
next
next
return 1
#global
dim map, 9, 9
map(0,0)=4,1,5,6,3,8,9,7,2
map(0,1)=3,6,2,4,7,9,1,8,5
map(0,2)=7,8,9,2,1,5,3,6,4
map(0,3)=9,2,6,3,4,1,7,5,8
map(0,4)=1,3,8,7,5,6,4,2,9
map(0,5)=5,7,4,9,8,2,6,3,1
map(0,6)=2,5,7,1,6,4,8,9,3
map(0,7)=8,4,3,5,9,7,2,1,6
map(0,8)=6,9,1,8,2,3,5,4,7
mes check(map)
0834デフォルトの名無しさん
2012/08/12(日) 07:18:34.92OS壊すコードいれとけよwwwwwwwwwww
0835デフォルトの名無しさん
2012/08/12(日) 07:22:59.750836デフォルトの名無しさん
2012/08/12(日) 08:58:30.650837デフォルトの名無しさん
2012/08/12(日) 15:55:21.86open System
let slot = [|Some "dog"; Some "cat"; None; Some "mouse"|]
let get nil = Console.ReadLine >> int >> Array.get slot >> (fun x -> defaultArg x nil)
let io f =
Seq.unfold (fun _ -> printfn "文字列を入力してください"; match Console.ReadLine() with "" -> None | x -> Some(x, ()))
>> f >> printfn "あなたの入力した文字列は\n%s\nです."
let 問題1 = get "nil" >> printfn "%s"
let 問題2 = get "そのスロットには文字列はありません" >> printfn "%s"
let 問題3() = slot |> Seq.choose id |> Seq.iter (fun x -> printfn "%sは%d文字" x x.Length)
let 問題4() = for _ in 1 .. 3 do slot |> Seq.choose id |> Seq.iter (printfn "%s")
let 問題5 = String.concat "," |> io
let 問題6 = Seq.toList >> List.rev >> String.concat "," |> io
let 問題7 = Seq.map (fun (x : string) -> x.[.. min 3 x.Length - 1]) >> String.concat "," |> io
0838デフォルトの名無しさん
2012/08/12(日) 18:34:17.72Scala
https://github.com/tono-nakae/package-loading-problem/blob/master/src/main/scala/PLP.scala
https://github.com/tono-nakae/package-loading-problem/blob/master/src/main/scala/PLPFrame.scala (描画処理)
解答.1
並べ方 https://raw.github.com/tono-nakae/package-loading-problem/master/Answer1.png
隙間の総面積は15
解答.2
並べ方 https://raw.github.com/tono-nakae/package-loading-problem/master/Answer1.png
隙間の総面積は3338 ([email protected]にて制限時間1分で打ち切り)
0839838
2012/08/12(日) 22:23:36.05https://raw.github.com/tono-nakae/package-loading-problem/master/Answer2.png
0840デフォルトの名無しさん
2012/08/13(月) 13:36:46.10誰か暇なときでいいんで教えて
0841デフォルトの名無しさん
2012/08/13(月) 14:04:23.49ここはそういうスレじゃないんです.
0842デフォルトの名無しさん
2012/08/13(月) 14:23:54.83% Prolog
'自然数nの階乗n!を表示する'(_n,X) :-
'自然数nの階乗n!を表示する'(1,_n,1,X).
'自然数nの階乗n!を表示する'(_n,_n,Y,X) :-
X is _n * Y.
'自然数nの階乗n!を表示する'(_m,_n,Y_1,X) :-
_m < _n,
Y_2 is _m * Y_1,
_m_2 is _m + 1,
'自然数nの階乗n!を表示する'(_m_2,_n,Y_2,X).
0843デフォルトの名無しさん
2012/08/13(月) 14:29:00.97% Prolog 一部変更
'自然数nの階乗n!を表示する'(_n,_自然数nの階乗) :-
'自然数nの階乗n!を表示する'(1,_n,1,_自然数nの階乗).
'自然数nの階乗n!を表示する'(_n,_n,Y,_自然数nの階乗) :-
_自然数nの階乗 is _n * Y.
'自然数nの階乗n!を表示する'(_m,_n,Y_1,_自然数nの階乗) :-
_m < _n,
Y_2 is _m * Y_1,
_m_2 is _m + 1,
'自然数nの階乗n!を表示する'(_m_2,_n,Y_2,_自然数nの階乗).
% _自然数nの階乗n! とできないのが辛い所
0844デフォルトの名無しさん
2012/08/13(月) 14:34:29.81% すみません。課題の読み違えを直します。
% Prolog
'自然数nの階乗n!を表示する'(_n) :-
'自然数nの階乗n!を表示する'(1,_n,1,_自然数nの階乗).
'自然数nの階乗n!を表示する'(_n,_n,Y,_自然数nの階乗) :-
_自然数nの階乗 is _n * Y,
writef('自然数%tの階乗は %t です\n',[_n,_自然数nの階乗]).
'自然数nの階乗n!を表示する'(_m,_n,Y_1,_自然数nの階乗) :-
_m < _n,
Y_2 is _m * Y_1,
_m_2 is _m + 1,
'自然数nの階乗n!を表示する'(_m_2,_n,Y_2,_自然数nの階乗).
0845デフォルトの名無しさん
2012/08/13(月) 15:37:49.79質問スレチだった?
0846デフォルトの名無しさん
2012/08/13(月) 15:44:40.150847デフォルトの名無しさん
2012/08/13(月) 15:50:31.13スレチでもこちらは歓迎。勝手に好きな言語で解答を書くスレです。
ただ、Rubyと指定してRuby解が戻ってくるかは疑問。
0848デフォルトの名無しさん
2012/08/13(月) 18:04:36.23Scala >>838-839 を改良
https://github.com/tono-nakae/package-loading-problem/blob/master/src/main/scala/PLP.scala
https://github.com/tono-nakae/package-loading-problem/blob/master/src/main/scala/PLPFrame.scala (描画処理)
解答.1
前回(>>838)と変わらず。
解答.2
並べ方 https://raw.github.com/tono-nakae/package-loading-problem/4f3058a4b79409c3e4ce94c44b51d67714f2432f/Answer2.png
隙間の総面積は2435 ([email protected]にて制限時間1分で打ち切り)
前回(>>838)
並べ方 https://raw.github.com/tono-nakae/package-loading-problem/ca4d69d5521fbba14ee031207db031df6881d231/Answer2.png
隙間の総面積は3338 ([email protected]にて制限時間1分で打ち切り)
0849デフォルトの名無しさん
2012/08/13(月) 23:24:15.23自然数nの二重階乗を求めよ。
例
0!! = 1
5!! = 15
15!! = 2027025
0850デフォルトの名無しさん
2012/08/13(月) 23:39:23.12#module
#defcfunc calc int n
if n<=1 : return 1
return n*calc(n-2)
#global
mes "0!! = "+calc(0)
mes "5!! = "+calc(5)
mes "15!! = "+calc(15)
0851デフォルトの名無しさん
2012/08/14(火) 00:00:05.42% Prolog
http://toro.2ch.net/test/read.cgi/tech/1344160387/275
0852デフォルトの名無しさん
2012/08/14(火) 00:50:01.32n = int(raw_input('n='))
res = 1
for i in xrange(n, 0, -2):
res *= i
print res
0853デフォルトの名無しさん
2012/08/14(火) 01:21:13.92R
> f <- function(n)ifelse(n<1,1,prod(seq(n,1,-2)))
> f(0)
[1] 1
> f(5)
[1] 15
> f(15)
[1] 2027025
0854デフォルトの名無しさん
2012/08/14(火) 07:27:23.32Octave
function z=f(n)
z=prod(n:-2:1)
end
0855デフォルトの名無しさん
2012/08/14(火) 08:27:07.35Perl
http://ideone.com/W0maU
0856デフォルトの名無しさん
2012/08/15(水) 23:54:36.69Scala >>848 改良
https://github.com/tono-nakae/package-loading-problem/blob/master/src/main/scala/PLP.scala
https://github.com/tono-nakae/package-loading-problem/blob/master/src/main/scala/PLPFrame.scala (描画処理)
解答.1
隙間の総面積は7
並べ方 https://raw.github.com/tono-nakae/package-loading-problem/8bbc802b3c597b78dd243b7dbea329365e1a482b/Answer1.png
解答.2
隙間の総面積は794 ([email protected]にて3秒で収束)
並べ方 https://raw.github.com/tono-nakae/package-loading-problem/3b4822ba0d697084f4f7c4dd7e59e2106857962e/Answer2.png
0857デフォルトの名無しさん
2012/08/16(木) 08:30:24.96これはすごい
0858デフォルトの名無しさん
2012/08/18(土) 12:01:03.17let multiFactorial d n =
Seq.initInfinite (fun i -> bigint(n - i * d)) |> Seq.takeWhile ((<) 0I) |> Seq.fold (*) 1I
let factorial = multiFactorial 1
let doubleFactorial = multiFactorial 2
0859デフォルトの名無しさん
2012/08/21(火) 01:37:16.98整数nが与えられたとき、nより大きい最小の偶数を求めよ。
例
n=2 のとき 4
n=-6 のとき -4
0860デフォルトの名無しさん
2012/08/21(火) 01:48:25.67Z80
or 1
inc a
0861デフォルトの名無しさん
2012/08/21(火) 22:18:14.35#module
#defcfunc calc int n
return n+2-(n&1)
#global
mes calc(2)
mes calc(-6)
■ このスレッドは過去ログ倉庫に格納されています