いろんな言語で宿題 第五編at TECH
いろんな言語で宿題 第五編 - 暇つぶし2ch1:デフォルトの名無しさん
10/06/19 00:00:38
前スレは512k超えで終了しました。


2:デフォルトの名無しさん
10/06/19 00:06:50
スレリンク(tech板:904番)
# 期限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言語を用いて書け。
#


3:デフォルトの名無しさん
10/06/19 00:09:04
スレリンク(tech板:918番)
# [1] 授業単元:Cプログラミング演習
# [2] 問題文(含コード&リンク):
# 問題1:文字列"Computer1Programing2Communication3Electro4"を、"test.txt"に書き込むプログラムを作成せよ。
# 問題2:ファイル"test.txt"から文字列も読み込み、並びを逆にしてファイル"sample.txt"に出力するプログラムを作成せよ。("test.txt"は問題1で作成したものを使用すること。)
# 問題3:ファイル"sample.txt"から大文字だけを画面に表示させるプログラムを作成せよ。("sample.txt"は問題2で作成したものを使用すること。)
#


4:デフォルトの名無しさん
10/06/19 00:11:08
スレリンク(tech板:941番)
# ベクトルを規格化する関数 normal
#
# 2つのベクトルの差の大きさを返す関数 dist を作成せよ。
#
# よろしくお願いします
#



5:デフォルトの名無しさん
10/06/19 00:13:51
スレリンク(tech板:5番)
# 次の問題を解くプログラムを再帰を使って実装せよ。
# 問題 コインの種類として、1,5,8,10,15の5種類を与える。
# に対して、最小枚数のコインでmを支払うときの枚数を求めよ。
#



6:デフォルトの名無しさん
10/06/19 00:24:25
スレリンク(db板:139番)
# 期間の抽出について相談です。
# 元情報
# 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)



7:デフォルトの名無しさん
10/06/19 00:27:38
スレリンク(db板:154番)
# 質問です。
# 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を取得したい。
#



8:デフォルトの名無しさん
10/06/19 04:52:35
>>3
使用言語: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

9:デフォルトの名無しさん
10/06/19 08:30:47
スレリンク(tech板:54番)
# アルゴリズムや処理の高速化の知恵をお借りしたく。宿題ではありません。
#
# Cで英単語のスペルチェッカを作って、タイムアタックするYO!というお題。
# 与えられているのは、14万語強の英単語リスト(約1.4MB)、
# 700万語強の照合するテキスト(約39MB)と、プログラムのテンプレ。
# これに、各自で辞書の読み込みload()、チェックルーチンcheck()、
# 辞書の単語数のカウントcount()、メモリの開放unload()を実装するようです。
# 照合の仕様は、単純に辞書に同じ単語があるかどうかだけです。
# ただし大文字小文字は区別しません。
#
# 試しに手元のMacBook+gccで配列に突っ込んだ辞書を
# 逐一リニアサーチさせてみると9700秒、
# 辞書を50万個のハッシュの中に無理矢理おさめて14秒です。
#
# 講義で想定している実装は、ハッシュ+片方向の連結リスト。
# あるいはトライ木。ぼちぼちと試していくつもりですが、
# ↓の結果(クラウドなサーバー上で実行)を見る限り、
# トップのあたりはどうも想像の斜め上をいく実装をしている模様。
# URLリンク(www.cs50.net)
# みなさんなら、どう攻めますか?
# お題の詳細は↓の中のpset6.pdf、辞書はwords、
# テンプレのプログラムと照合テキストはpset6.zipにあります。
# URLリンク(cdn.cs50.net)



10:デフォルトの名無しさん
10/06/19 14:22:34
>>7
% 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).



11:デフォルトの名無しさん
10/06/19 14:24:53
>>6
% 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').


12:デフォルトの名無しさん
10/06/19 14:28:05
>>5
% 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,
_枚数 =< _暫定候補枚数.



13:デフォルトの名無しさん
10/06/19 15:24:49
>>3
使用言語: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

14:デフォルトの名無しさん
10/06/19 15:53:08
スレリンク(tech板:955番)
# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):
# 以下のプログラムで、pointを昇順に並び替えるプログラムを作る。ソートの部分の
みを書き換え、プログラムを作りなさい。
# URLリンク(ime.nu)

#
# struct data {
# int car_num;
# char name[MAX_LEN];
# char cons[MAX_LEN];
# char nationality[MAX_LEN];
# int birth;
# double point;
# };



15:デフォルトの名無しさん
10/06/19 15:55:02
>>14
% Prolog
URLリンク(nojiriko.asia)


16:デフォルトの名無しさん
10/06/19 16:21:50
スレリンク(tech板:170番)
# 【 課題 】入力したテキストに含まれる文字を種類別に使用回数を表示し、降順にソートし出力するプログラムを作れ。
# 【 形態 】Javaアプリケーション(main()で開始)
# 【 期限 】6月22日
# 【 Ver  】1.6.0_20
# 【 補足 】../test/read.cgi/tech/1267796762/83と同様の問題ですが漢字や記号など全ての種類によらずに統計したい場合です。よろしくお願いします。
#
#



17:デフォルトの名無しさん
10/06/19 17:13:41
>>16
% Prolog
URLリンク(nojiriko.asia)


18:デフォルトの名無しさん
10/06/19 21:35:13
>>2
% 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).


19:デフォルトの名無しさん
10/06/19 21:36:39
>>2
% 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]],!.



20:デフォルトの名無しさん
10/06/19 21:59:08
>>3
使用言語: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();

21:デフォルトの名無しさん
10/06/19 22:39:23
>>3
% 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).




22:デフォルトの名無しさん
10/06/19 22:40:44
>>3
% 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')).



23:デフォルトの名無しさん
10/06/20 06:44:30
>>16
使用言語:J

f=:monad def ';:inv":&.>(\:{:"1)(~.;"0#/.~)y'

f ucp'a/bb/ccc/漢字'
/ 3
c 3
b 2
a 1
漢 1
字 1

24:デフォルトの名無しさん
10/06/20 15:11:56
>>2
使用言語: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

25:デフォルトの名無しさん
10/06/20 16:41:55
>>2
使用言語: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]

26:デフォルトの名無しさん
10/06/20 21:41:07
>>2
使用言語:十進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

27:デフォルトの名無しさん
10/06/20 23:14:50
スレリンク(tech板:90番)
# 1から10までの積を計算するプログラムを書け。このとき,whileループを用いて、
# 画面に 1*2*3*・・・・*10 = という風に表示されるようにすること。


28:デフォルトの名無しさん
10/06/20 23:18:23
スレリンク(tech板:95番)
# [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)を入力すれば
# 上記の定積分のロンバーグ表の値と積分値が画面表示
# されるようなプログラムを作ること。
#



29:デフォルトの名無しさん
10/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件を取得したいです。


30:デフォルトの名無しさん
10/06/21 00:38:32
>>29
% 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),_解ならび).


31:デフォルトの名無しさん
10/06/21 07:40:51
>>27
% 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).


32:デフォルトの名無しさん
10/06/21 08:07:14
>>31 (>>27)
% 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).




33:デフォルトの名無しさん
10/06/21 21:42:27
>>4
% 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).


34:デフォルトの名無しさん
10/06/22 11:49:26
スレリンク(tech板:133番)
# [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);
#
# これを入力した文字列を逆順に表示できるように書き換えよ
#



35:デフォルトの名無しさん
10/06/22 12:22:29
>>34
% 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),!.


36:デフォルトの名無しさん
10/06/22 15:47:03
スレリンク(tech板:138番)
# 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;}
# のように変数名と値を表示するプログラムを書け。
# ただし、コマンドライン引数に重複があっても、対応する環境変数について複数回表示してはならない


37:デフォルトの名無しさん
10/06/22 15:48:33
>>36
% Prolog

program :-
    user_parameters(L),
    append(_,[_環境変数名|R],L),
    環境変数の表示(_環境変数名),
    R = [].

環境変数の表示(_環境変数名) :-
    getenv(_環境変数名,_値),
    write_formatted('%t=%t\n',[_環境変数名,_値]),!.
環境変数の表示(_).


38:デフォルトの名無しさん
10/06/22 16:43:01
スレリンク(tech板:181番)
# 【 課題 】 GUIで電卓の機能をもったプログラムを作成してください。デザインや機能は自由ですが、最低四則演算はできるようにしてください。
# アプレットのソースは結構あるのですがXPに入っている電卓のようなものが
# 一番ベストです!!
# よろしくお願いします


39:デフォルトの名無しさん
10/06/22 17:47:07
スレリンク(tech板:135番)
# 配列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}と
# なるようにせよ.


40:デフォルトの名無しさん
10/06/22 17:53:17
>>39
% 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),!.



41:デフォルトの名無しさん
10/06/22 18:18:11
>>40
% 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).


42:デフォルトの名無しさん
10/06/22 18:49:57
スレリンク(tech板:144番)
# [1] 授業単元:C・プログラミング
# [2] 問題文(含コード&リンク):
# 深さ優先探索をリスト表現で表すプログラムを作成せよ。
# 制限は特にないです。
#



43:デフォルトの名無しさん
10/06/22 19:56:45
スレリンク(tech板:182番)
# 【 課題 】GUIを使って、Gメールなどのユーザー名とパスワードを入力する画面を作成する。また、アカウントを持ってない人用の
#       ページも作成し、そこに入力した内容はDBにデータが保存されるようにプログラムを作りなさい。


44:デフォルトの名無しさん
10/06/22 20:34:45
スレリンク(tech板:148番)
#   URLリンク(ime.nu)
# 次の構造体について要素数3の構造体配列を宣言し、
# それぞれの値を標準入力(キーボードから入力)し、
# 各科目の平均点を表示するプログラムを作成しなさい。
# なお、表示は実効例通りになるようにすること。
#
# struct Score{
# int english; // 英語の点数
# int math; // 数学の点数
# int physics; // 物理の点数
# 実効例
# 1人目
# 英語:(入力した点数)
# 数学:(入力した点数)
# 物理:(入力した点数)
# 2人目
# 英語:(入力した点数)
# 数学:(入力した点数)
# 物理:(入力した点数)
# 3人目
# 英語:(入力した点数)
# 数学:(入力した点数)
# 物理:(入力した点数)
# 英語の平均点は(英語の平均点の計算結果を表示)です。
# 数学の平均点は(数学の平均点の計算結果を表示)です。
# 物理の平均点は(物理の平均点の計算結果を表示)です。


45:デフォルトの名無しさん
10/06/23 04:47:09
スレリンク(tech板:150番)
# [1] 授業単元:C++プログラミング
# [2] 問題文(含コード&リンク):三目並べを作成せよ。ポインタとクラスを使用。



46:デフォルトの名無しさん
10/06/23 04:49:28
スレリンク(tech板:166番)
# 表示例のように,名前,性別,身長,体重,腹囲(ウエスト)を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, メタボリック症候群の疑いがあります


47:デフォルトの名無しさん
10/06/23 06:38:39
>>44
% 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.
各科目の平均点を表示する(_).


48:デフォルトの名無しさん
10/06/23 07:26:59
>>42
% Prolog

出会うまでリストを手繰る(_求めるもの,[_求めるもの|R]) :-
    write_formatted('!%t!\n',[_求めるもの]).
出会うまでリストを手繰る(_求めるもの,[A|R]) :-
    list(A),
    write_formatted('%t-',[A]),
    出会うまでリストを手繰る(_求めるもの,A);
    \+(list(A)),
    write_formatted('%t-',[A]),
    出会うまでリストを手繰る(_求めるもの,R).


49:デフォルトの名無しさん
10/06/23 07:56:07
>>48 (>>42)
% Prolog 間違えました。>>48は、深く潜ってのリストの探索に失敗するとそれで終わりになってしまいます。

出会うまでリストを手繰る(_求めるもの,[_求めるもの|R]) :-
    write_formatted('!%t!\n',[_求めるもの]).
出会うまでリストを手繰る(_求めるもの,[A|R]) :-
    list(A),
    出会うまでリストを手繰る(_求めるもの,A);
    出会うまでリストを手繰る(_求めるもの,R).
出会うまでリストを手繰る(_求めるもの,[A|R]) :-
    \+(list(A)),
    write_formatted('%t-',[A]),
    出会うまでリストを手繰る(_求めるもの,R).


50:デフォルトの名無しさん
10/06/23 08:17:40
>>49 (>>42)
% 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).


51:デフォルトの名無しさん
10/06/23 12:21:01
>>46
% 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,!.
診断(_,_,'').


52:デフォルトの名無しさん
10/06/23 12:51:11
>>51
% 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).


53:デフォルトの名無しさん
10/06/23 16:37:12
スレリンク(tech板:170番)
# 【質問テンプレ】
# [1] 授業単元: C言語プログラミング
# [2] 問題文(含コード&リンク):
# 1.関数sqrtを使って1~10までの二乗根の和を求めなさい。
# 2.16進数ABC.DEを10進数にしなさい。


54:デフォルトの名無しさん
10/06/23 16:48:16
>>53
% 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 は URLリンク(nojiriko.asia) 参照


55:デフォルトの名無しさん
10/06/23 16:51:36
スレリンク(tech板:172番)
# 【質問テンプレ】
# [1] 授業単元: プログラミングB
# [2] 問題文(含コード&リンク):実行したい処理を選ぶことが可能なプログラムを作りなさい。このとき、実
# 行できる処理は以下の三つとする。
#
# 処理1:複数の2択問題への回答に応じた結果を表示する。(例:職種選択、旅行先選び
#
# 処理2:文字コード一覧表を出力する。(文字コード32~126を一行に8文字ずつ)
#
# 処理3:本のページ数を入力し、その本を読み切るために必要な日数を表示
#     する。このとき、初日は10ページ、2日目は20ページ,,,と読むページ
#     数は増加するものとする。
#
# 以下の仕様で作成すること
#
# キーボードから入力された数に応じて、switch文で各処理に移動する。
# 処理1:if文を使って
# 処理2:for文を使って
# 処理3:while文またはdo・while文を使って。


56:デフォルトの名無しさん
10/06/24 05:39:57
スレリンク(tech板:190番)
# モンテカルロ法で√2の近似値を求めたいのですが、
# ネット調べてみるとモンテカルロ法と言えばπの近似に関するばかりで・・・
# どなたか教えてくださいませ
#



57:デフォルトの名無しさん
10/06/24 05:42:12
スレリンク(tech板:192番)
# [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] を宣言し、各メンバ変数をソートする関数を作成せよ。


58:デフォルトの名無しさん
10/06/24 11:10:47
>>56% Prologモンテカルロ法で√2の近似値を求める(_試行回数,_除数,X) :-    count((for(1,N,_試行回数),U is (random mod _除数) ^ 2,U < _除数 * _除数/ 2),Y),    X is Y / (_試行回数 / 2).

59:デフォルトの名無しさん
10/06/24 11:13:05
>>58
% Prolog 字化けしてしまいました。書き直し。

モンテカルロ法で√2の近似値を求める(_試行回数,_除数,X) :-
    count((for(1,N,_試行回数),U is (random mod _除数) ^ 2,U < _除数 * _除数/ 2),Y),
    X is Y / (_試行回数 / 2).



60:デフォルトの名無しさん
10/06/24 12:13:40
スレリンク(tech板:195番)
# [1] 授業単元:情報処理
# [2] 問題文:ガウスの消去法のプログラムをピボット対応と
#       ピボット非対応の2つ作成し、連立方程式の解を求めよ。
#      (ただし解くべき連立方程式は5元1次方程式で、ピボットの
#       発生するものと発生しないものの2種類とする)


61:デフォルトの名無しさん
10/06/24 13:56:28
スレリンク(tech板:196番)
# 演習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
# %



62:デフォルトの名無しさん
10/06/24 14:47:25
>>61
% Prolog
URLリンク(nojiriko.asia)



63:デフォルトの名無しさん
10/06/24 17:43:23
スレリンク(tech板:198番)
# ファイルkadai.txt に記述された数行の数値を表す文字列を読み込み、
# 整数に変更して数値として表示するプログラムを作成せよ。
# 関数としてstrtol()を使用すれば問題ないが、同じ機能の関数を作成すること。
# 基数の設定に関する引数は必要なくデフォルト(先頭が0 なら8 進、それ以外は10 進、16 進は使用しない)とする
#



64:デフォルトの名無しさん
10/06/24 19:06:29
>>63
% 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.


65:デフォルトの名無しさん
10/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



66:デフォルトの名無しさん
10/06/25 02:41:43
スレリンク(tech板:212番)
# [1] 授業単元: 数値解析
# [2] 問題文(含コード&リンク): URLリンク(ime.nu)
# ニュートン・ラフソン法についての問題です。教科書に例題として載っていたプログラミングに今回問題となっている方程式の当てはめ方がわかりません(おそらく初歩的な事だと思われます)
#



67:デフォルトの名無しさん
10/06/25 02:43:01
スレリンク(tech板:213番)
#
# [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
#



68:デフォルトの名無しさん
10/06/25 02:52:19
スレリンク(db板:188番)
# 学校でSQLの授業とっててこんな問題が出たけど理解不能だったんで助けてくだしあ。
#
# XMLについて、その概要をコンピュータの意味処理という視点から書いて下さい。
# また、実際にどのような分野で使われていますか?
# 具体例を一つあげて説明してください。
#



69:デフォルトの名無しさん
10/06/25 05:37:46
# 今2つのテキストファイルがあって、内容はおおよそ下のようです
#
# --------------テキスト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の一番右の列の数値に足したいのですが
# どのようにしたらいいでしょうか


70:デフォルトの名無しさん
10/06/25 06:32:37
>>69
% 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).



71:デフォルトの名無しさん
10/06/25 06:33:34
>>69
% 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,!.


72:デフォルトの名無しさん
10/06/25 06:38:10
>>70
% Prolog 改行位置の調整をし忘れた。これを忘れるとatomの途中で改行してしまう。
URLリンク(nojiriko.asia) を参照してください。


73:デフォルトの名無しさん
10/06/25 07:44:06
>>69
使用言語: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

74:デフォルトの名無しさん
10/06/25 08:02:01
スレリンク(tech板:320番)
# 日本語文章中の複数の単語を置換したいです。
# ファイルは一つのディレクトリに複数あります。
# >URLリンク(ime.nu)
# ファイル検索はcygwin かlinux上なので上記を参考にしています。
# trではうまくいきませんでした。
#
# お題
#
# 拡張子が .rb の全てのファイルに対して、
#
# #!/usr/bin/env ruby
#
# を
#
# #!/usr/local/bin/ruby
#
# に置換する。ついでに、「ruby」という文字を「perl」に置き換える



75:69
10/06/25 08:34:45
スレリンク(tech板:627番)

76:デフォルトの名無しさん
10/06/25 08:41:00
>>74
% 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は URLリンク(nojiriko.asia) 参照


77:デフォルトの名無しさん
10/06/25 09:28:41
>>66 問題文が抜けてしまいました。
#
# 問題
# 適当な数字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) */



78:デフォルトの名無しさん
10/06/25 12:16:13
>>66
% 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座標,!.



79:デフォルトの名無しさん
10/06/25 12:20:29
スレリンク(tech板:215番)
# [1] 授業単元: 画像処理
#
# [2] 問題文(含コード&リンク):
# 入力した2値白黒画像をハフ変換して直線および円を検出し、結果を表示するプログラムを作成せよ。
# 直線の式はρ= xcosθ + ysinθを、円の式はr2= (x-a)2 + (y-b)2をそれぞれ使用する。
#
# なお、直線について処理後のρθ平面を濃淡画像として出力せよ。
# 円については処理後のabrパラメータ空間をGnuplotを用いて、
# 1点のエッジに対する軌跡(円錐)と2点以上のエッジに対する軌跡(円錐)を出力せよ。
#
# また、円と直線両方について、3種類以上に閾値を変化させた実験結果を逆変換し、
# その結果を原画像に投影した画像も出力せよ。


80:デフォルトの名無しさん
10/06/25 14:49:52
スレリンク(tech板:217番)
# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):
# 午前四時から正午までは Good Morning! と、
# 正午から午後八時までは Good Afternoon! と、
# 午後八時から午前四時までは Good Evening! と、表示するプログラムを書け。ただし、境界の時刻は前の時間帯に含まれるものとする
#
#



81:デフォルトの名無しさん
10/06/25 15:12:36
>>80
% 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').



82:デフォルトの名無しさん
10/06/25 15:45:05
>>80
使用言語:J

f=: monad define
'Good ',>(3|<.8%~4+3{6!:0''){'Evening!';'Morning!';'Afternoon!'
)
f ''
Good Afternoon!

83:デフォルトの名無しさん
10/06/25 16:47:19
スレリンク(tech板:609番)
# 以下の問題を頼む。(ルンゲクッタ、クラス、配列、ファイルの書き込み、反復処理を使って)
#
# GAを使って理想的なドアになるようにkp,kd,mを求める
# m:ドアの重さ
# v:ドアの閉まる速さ
# kp:ばね定数
# kd:ダンパー
# x:距離
# x':xをtで微分
# x'':xをtで二階微分
#
# eq of motion
# -kp*x-kd*x'=m*x''
#



84:デフォルトの名無しさん
10/06/25 17:25:48
スレリンク(tech板:218番)
# [1] 授業単元: プログラム
# [2] 問題文(含コード&リンク): 番号 国語 数学 英語のメンバを持っている構造体を作って各教科の平均値と、全平均値を求めてください。(人数は4人とか5人で行ってください。あと番号っていうのは、番号は、4人なら1~4までで5人なら1~5までです)



85:デフォルトの名無しさん
10/06/25 19:10:36
>>80
使用言語:Io

f := method(
writeln("Good ",list("Evening!","Morning!","Afternoon!")at(((Date hour + 4) / 8) floor % 3))
)

Io> f()
Good Afternoon!
==> nil

86:デフォルトの名無しさん
10/06/25 20:07:02
>>84
% 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 _国語 + _数学 + _英語),
        _全平均値).


87:デフォルトの名無しさん
10/06/25 20:09:37
>>86 (>>84)
% 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 _国語 + _数学 + _英語),
        _全平均値).


88:デフォルトの名無しさん
10/06/25 21:43:05
しまった。境界の時刻の処理ができていません。
>>82 >>85 はボツにしてください。

89:デフォルトの名無しさん
10/06/26 05:51:28
スレリンク(tech板:224番)
# [1] 授業単元: 解析
#
# [2] 問題文(含コード&リンク):
# x=1.0, 1.1,...,3.9, 4.0が与えられた時のlogxの値をラグランジュ補間で求め、
# その近似値とlogxの真値をそれぞれ出力せよ。
# また、求めた値と真値との誤差(絶対値)も求め、一次多項式の誤差と2次多項式の誤差を
# それぞれ出力せよ。



90:デフォルトの名無しさん
10/06/26 05:53:29
スレリンク(tech板:226番)
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):
# 構造体Triangleを下のように定義する。
# URLリンク(ime.nu)
# この構造体により一つの三角形を表現する。
# Triangle構造体の構成要素は、三つの頂点のx座標、y座標をメンバとして持つ構造体Pointである。
# このTriangle構造体を用いて、以下の使用に従う関数を作成し、任意の三角形の面積、その三角形を適切な2×2行列で線形変換した結果の三角形の座標とその面積、および任意の二つの三角形が合同であるかどうかを表示するプログラムを実装しなさい。
# ・一つのTriangle構造体の変数を引数とし、その構造体が表す三角形の面積を返す関数。
# ・一つのTriangle構造体の変数と、double型の二次元配列(2×2行列Aとする)を引数とし、引数で与えた三角形を行列Aによって線形変換した後の三角形を返す関数。
# ・二つのTriangle構造体の変数を引数とし、その構造体が合同であれば1を、合同でなければ0を返す関数。
#



91:デフォルトの名無しさん
10/06/26 06:13:34
スレリンク(tech板:223番)
# 【質問テンプレ】
# [1] 授業単元:画像処理
# [2] 問題文:URLリンク(ime.nu)
#
# <問題>
# 画像ファイル1つに対して、ラプラシアンマスクを適用した画像を作成せよ。
# ラプラシアンマスクは下図に示す8近傍方を使用すること。
# | -1|-1 |-1|
# | -1| 8 |-1|
# | -1|-1 |-1|
#
# ラプラシアンマスクを画像に適用したあとの画素値が(0~255 の範囲外になった場合、0よりも小さいならば0に、255以上ならば255にすること。)
# 今回は画像の縁については処理を行わなくてよい。
#
# 画像の作成にはbmp.hに定義されたSaveBMPを用いて行う。
# ヘッダファイルの定義は URLリンク(nojiriko.asia) にコピー保存させていただきました。


92:デフォルトの名無しさん
10/06/26 06:18:09
スレリンク(db板:197番)
# ・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
#



93:デフォルトの名無しさん
10/06/26 06:20:45
>>92 のつづきです。

#
# ツリーで表記すると、
# A
# ├B
# │├C
# ││├D
# ││└E
# │└F
# └G
#  ├C
#  │├D
#  │└E
#  └H
#
# Aという部品は、BとGの部品で出来ている。
# Bという部品はCとFの部品で出来ている~という感じです。
#



94:デフォルトの名無しさん
10/06/26 06:43:55
>>92 >>93 のつづきです。

95:デフォルトの名無しさん
10/06/26 06:45:39
>>92 >>93 のつづきです。
# ・欲しい結果
# これを階層のレベルと、それぞれの子の合計数を出したい。
# ここでいう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
#



96:デフォルトの名無しさん
10/06/26 06:49:00
スレリンク(db板:200番)
# 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
#



97:デフォルトの名無しさん
10/06/26 06:53:43
>>80
使用言語:J
分、秒も参照するようにしました。

f=: monad define
'Good ',>(3|<.8%~3+({.>.@+[:*[:+/}.)3 4 5{6!:0''){'Evening!';'Morning!';'Afternoon!'
)
f ''
Good Morning!

98:デフォルトの名無しさん
10/06/26 13:24:31
>>89
% 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).



99:デフォルトの名無しさん
10/06/26 17:41:40
スレリンク(tech板:186番)
# 【課題 】ネストを用いて九九を出力するためのプログラムを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
# 行数の関係で・・と省略したところもありますが実際は・を省略せずに作成してください



100:デフォルトの名無しさん
10/06/26 17:46:42
スレリンク(tech板:234番)
# [1]授業単元:システムプログラミング
# [2]課題:URLリンク(nojiriko.asia) にコピーさせていただきました。
#



101:デフォルトの名無しさん
10/06/26 20:02:13
>>99
使用言語: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

102:デフォルトの名無しさん
10/06/26 20:18:09
>>53
使用言語:J


NB. p1
+/%:>:i.10
22.4683

NB. p2
16babc.de
2748.87

103:デフォルトの名無しさん
10/06/27 03:13:49
>>99
% 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]).


104:デフォルトの名無しさん
10/06/27 08:08:10
>>99
% 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).


105:デフォルトの名無しさん
10/06/27 08:19:43
>>99
% 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).


106:デフォルトの名無しさん
10/06/27 08:20:49
>>99
% 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],_数値文字列).


107:デフォルトの名無しさん
10/06/27 08:41:03
>>104 - >>106 は何をやってるか?
もし、Prologに整数がなかったら、九九表はこのように書く、というのが>>106
組込述語length/2の第二引数は整数となるから、「整数がない」と言うわけにはいかない。
それでlength/2を排除しようとしている。


108:デフォルトの名無しさん
10/06/27 08:55:58
スレリンク(tech板:246番)
# [1] 授業単元:計算機とアルゴリズム
# [2] 問題文(含コード&リンク):数列と漸化式を表示できるように9行目からお願いし
ます。URLリンク(ime.nu)
# 練習問題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");



109:デフォルトの名無しさん
10/06/27 09:31:35
>>96
% 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).


110:デフォルトの名無しさん
10/06/27 09:38:00
>>109 (>>96)

% 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).


111:デフォルトの名無しさん
10/06/27 10:32:23
>>108
% 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.


112:デフォルトの名無しさん
10/06/27 13:37:37
>>92
% 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,_階層,_親,_個数).



113:デフォルトの名無しさん
10/06/27 17:45:12
スレリンク(tech板:251番)
# 【質問テンプレ】
# [1] 授業単元: プログラミング演習
# [2] 問題文(含コード&リンク): 入力した2つの整数の間 (入力した数も範囲に含める) にある
#  「2の倍数でない」かつ「3の倍数でない」かつ「5の倍数でない」
# の条件を満たす整数を順に表示し,最後にその個数を表示するプログラムを作成せよ
#



114:デフォルトの名無しさん
10/06/27 19:44:13
>>113
% 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).



115:デフォルトの名無しさん
10/06/27 20:39:28
>>27
使用言語:J

((,'*'&,)&":/,' = '"_,":@(*/))>:i.10
1*2*3*4*5*6*7*8*9*10 = 3628800

116:デフォルトの名無しさん
10/06/27 21:16:43
>>113
使用言語: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

117:デフォルトの名無しさん
10/06/28 03:56:30
スレリンク(tech板:199番)
# 【 課題 】下記参照です。
# 【 形態 】1. Javaアプリケーション(main()で開始)/
# 【 期限 】6/29
# 【 Ver  】"1.6.0_20"
# 【 補足 】丸投げです。よろしくお願いします。
#
# キーホ゛ート゛から整数(0-100)をいくつか入力し、終わった時点で、それらの最大値・最小値・平均を表示させよう。
# 「!」の入力で処理を終了する。
# 数値の入力のたびにすべきこと:
# 最大値と最小値の更新
# 入力の総和に加算
# 入力の個数を1増加
#



118:デフォルトの名無しさん
10/06/28 03:58:47
スレリンク(tech板:254番)
# [1] 授業単元:情報処理学
# [2] 問題文(含コード&リンク):
# do-while文を用いて、キーボードから入力された値が素数であるかどうかを
# 判別するプログラムを作成せよ。入力された値が素数の場合は"素数"と出力し、
# 素数でない場合は最小の因数を出力せよ。


119:デフォルトの名無しさん
10/06/28 04:02:00
スレリンク(tech板:255番)
# 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文を使って)



120:デフォルトの名無しさん
10/06/28 04:03:21
スレリンク(tech板:258番)
# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):
# 次のように表示するプログラムを作りなさい。
#
# 私の学籍番号は0000000Aです。
# 氏名は aaaaa aaaaaaaaです。
#        ↑半角スペース
#



121:デフォルトの名無しさん
10/06/28 05:07:38
>>117
% 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),!.


122:デフォルトの名無しさん
10/06/28 05:09:06
>>117
% 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,_).



123:デフォルトの名無しさん
10/06/28 07:32:58
>>119
% 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),!.



124:デフォルトの名無しさん
10/06/28 07:35:31
>>119
% 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),!.


125:デフォルトの名無しさん
10/06/28 07:43:32
スレリンク(tech板:273番)
# 社員の情報を管理するプログラムを作りたい。
# 下の実行例のような社員データベースを処理するプログラムを実装しなさい。
# URLリンク(ime.nu)
# 現在何人社員がいますか:3
#
# 1人目の情報を入力してください。
# 名前:TANAKA
# 年齢:26
# 年俸:550
#
# 2人目の情報を入力してください。
# 名前:NAKAMURA
# 年齢:50
# 年俸:1000
#
# 3人目の情報を入力してください。
# 名前:YAMADA
# 年齢:35
# 年俸:650
#
# **** 社員データベース管理プログラム ****
#     1:社員追加
# 2:昇級
# 3:名前検索
# 4:年俸検索(ある値以上の年俸を表示)
# 5:全社員の表示
#
# 9:End
#
# Select a number ?


126:デフォルトの名無しさん
10/06/28 08:30:24
>>118
% 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,!.



127:デフォルトの名無しさん
10/06/28 12:59:17
>>118
使用言語: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 です。

128:デフォルトの名無しさん
10/06/28 13:00:11
>>119
使用言語: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

129:デフォルトの名無しさん
10/06/28 14:03:07
スレリンク(tech板:274番)
# 1] 授業単元: プログラム入門
# [2] 問題文(含コード&リンク): 2つの自然数 n と m を入力し、その積 n×m を
# たし算のみで計算するプログラムを作成せよ。


130:デフォルトの名無しさん
10/06/28 14:06:00
>>129
% 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.



131:デフォルトの名無しさん
10/06/28 14:08:06
スレリンク(tech板:278番)
# [1] 授業単元: C言語プログラミング入門
# [2] 問題文:関数の再帰的呼び出しによりAckermann(アッカーマン)関数を計算するプログラムを作れ。同じプログラムを繰り返し処理(ループ計算)により実現できるか考えよ。Ackermann関数は次式で定義される。
#



132:デフォルトの名無しさん
10/06/28 14:11:34
>>131 まだつづきがありました
#
# 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


133:デフォルトの名無しさん
10/06/28 16:59:03
スレリンク(tech板:200番)
# [課題]携帯のiアプリをSTARを使い作成しています。
# 学校のホームページに載っている休講情報に接続して、それから先生の名前と日にちだけ取り出す方法が知りたいです。
# 休講情報は
#
# 6月
# 24日
#  野口 文子 先生
#  山下 紗枝 先生
#  井上 恵子 先生
#
# 25日
#  山下 紗枝 先生
#
# 26日
# ・
# ・
# ・
#
# のようになっています。
# 先生の名前の前の全角スペースを目印にして、配列に入れるそうなのですが・・・。


134:デフォルトの名無しさん
10/06/28 17:08:55
>>131
使用言語: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

135:デフォルトの名無しさん
10/06/28 17:17:36
>>131
% 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).


136:デフォルトの名無しさん
10/06/28 17:27:23
>>129
使用言語:J
大きい数の方を小さい数だけコピーしてリストをつくり合計。

f=: dyad define
if. 0=x<.y do. 0 else. x(<.+/@#>.)y end.
)

628 f 2010
1262280

12 f 0
0

137:デフォルトの名無しさん
10/06/28 20:10:56
>>131
使用言語: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.

138:デフォルトの名無しさん
10/06/28 20:26:04
>>129
使用言語: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

139:デフォルトの名無しさん
10/06/28 20:57:33
>>118
使用言語: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

140:デフォルトの名無しさん
10/06/28 21:25:28
スレリンク(tech板:286番)
# [1] プログラミング1
# [2] 現在のインターネットを実現しているTCP/IP通信プロトコルでは主にIPv4
#   を用いており、コンピュータを一意に識別するために32ビットのIPアドレスを
#   用いている。これを踏まえ、IPアドレスの4つの数字を入力させ、これらを32ビットの
#   データ型であるunsigned int型の変数にIPアドレスを示す2進数の数値として保存せよ。
#   保存したIPアドレスがunsigned intの整数値として解釈するといくつとなるか表示する
#   プログラムを作成せよ。


141:デフォルトの名無しさん
10/06/28 21:29:37
スレリンク(tech板:288番)
# [1] 応用プログラミング
# [2] 問題文(含コード&リンク):
#   URLリンク(ime.nu)
#
# 次の構造体について配列を5個宣言し、標準入力でそれぞれの値を初期化し、
# 身長(height)が小さい順にソートするプログラムを作成しなさい。
#
# (下記のプログラムの続きから作成することとする)
# また実効例結果を下に記す。この通りに表示されるように作成する。
#
# 課題では以下の宣言以外はすべてmain関数内で作成すること。
# 配列変数を入れ替える要領で構造体を入れ替えプログラムを作成すること。
#
#
# #include<stdio.h>
# typedef struct
# {
# char name[32];
# double height;
# }Student;


142:デフォルトの名無しさん
10/06/28 21:30:46
スレリンク(tech板:300番)
# [1] 授業単元:情報処理学
# [2] 問題文(含コード&リンク):
# 例1は、3教科5人の生徒の合計得点を求めるプログラムである。
# これを実行し、動作を説明せよ。さらに、教科毎の平均点、
# 生徒毎の平均点を計算して表示できるようにプログラムを修正し、
# 結果とともに示せ。
#


143:デフォルトの名無しさん
10/06/28 21:31:54
>>27
使用言語: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

144:デフォルトの名無しさん
10/06/28 21:33:10
スレリンク(tech板:304番)
# 次レスにまとめても規制されてしまったので・・・・
# [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
#
#



145:デフォルトの名無しさん
10/06/28 21:36:06
スレリンク(tech板:305番)
# [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型へ
#          型変換せよ。


146:デフォルトの名無しさん
10/06/28 22:56:35
スレリンク(tech板:309番)
# [1] 授業単元:C++プログラミング
# [2] 問題文(含コード&リンク):コンピュータ対人間の○×ゲームプログラムを作りなさい。


147:デフォルトの名無しさん
10/06/29 06:37:36
スレリンク(tech板:317番)
# [1] 授業単元:プログラミング言語
# [2] # リストに格納したデータを,データファイルとは
# 別のファイル(出力先ファイルとよぶ)に書き出す.
# データファイルと出力先ファイルのファイル名は
# コマンドライン引数として指定する
# 下記テンプレートを使用すること
# URLリンク(ime.nu)



148:デフォルトの名無しさん
10/06/29 07:47:45
スレリンク(db板:231番)
# 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です。


149:デフォルトの名無しさん
10/06/29 08:42:29
>>140
% 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,!.




次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch