2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

いろんな言語で宿題 第五編

1 :デフォルトの名無しさん:2010/06/19(土) 00:00:38
前スレは512k超えで終了しました。


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


4 :デフォルトの名無しさん:2010/06/19(土) 00:11:08
http://pc12.2ch.net/test/read.cgi/tech/1274827528/941
# ベクトルを規格化する関数 normal
#
# 2つのベクトルの差の大きさを返す関数 dist を作成せよ。
#
# よろしくお願いします
#



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



6 :デフォルトの名無しさん:2010/06/19(土) 00:24:25
http://pc11.2ch.net/test/read.cgi/db/1274791771/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 :デフォルトの名無しさん:2010/06/19(土) 00:27:38
http://pc11.2ch.net/test/read.cgi/db/1274791771/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/06/19(土) 08:30:47
http://pc12.2ch.net/test/read.cgi/tech/1276215571/54
# アルゴリズムや処理の高速化の知恵をお借りしたく。宿題ではありません。
#
# 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/



10 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/06/19(土) 15:53:08
http://pc12.2ch.net/test/read.cgi/tech/1274827528/955
# [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;
# };



15 :デフォルトの名無しさん:2010/06/19(土) 15:55:02
>>14
% Prolog
http://nojiriko.asia/prolog/c136_955.html


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



17 :デフォルトの名無しさん:2010/06/19(土) 17:13:41
>>16
% Prolog
http://nojiriko.asia/prolog/j69_170.html


18 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/06/20(日) 23:14:50
http://pc12.2ch.net/test/read.cgi/tech/1276810079/90
# 1から10までの積を計算するプログラムを書け。このとき,whileループを用いて、
# 画面に 1*2*3*・・・・*10 = という風に表示されるようにすること。


28 :デフォルトの名無しさん:2010/06/20(日) 23:18:23
http://pc12.2ch.net/test/read.cgi/tech/1276810079/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 :デフォルトの名無しさん: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件を取得したいです。


30 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/06/22(火) 11:49:26
http://pc12.2ch.net/test/read.cgi/tech/1276810079/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/06/22(火) 15:47:03
http://pc12.2ch.net/test/read.cgi/tech/1276810079/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 :デフォルトの名無しさん:2010/06/22(火) 15:48:33
>>36
% Prolog

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

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


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


39 :デフォルトの名無しさん:2010/06/22(火) 17:47:07
http://pc12.2ch.net/test/read.cgi/tech/1276810079/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/06/22(火) 18:49:57
http://pc12.2ch.net/test/read.cgi/tech/1276810079/144
# [1] 授業単元:C・プログラミング
# [2] 問題文(含コード&リンク):
# 深さ優先探索をリスト表現で表すプログラムを作成せよ。
# 制限は特にないです。
#



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


44 :デフォルトの名無しさん:2010/06/22(火) 20:34:45
http://pc12.2ch.net/test/read.cgi/tech/1276810079/148
#   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人目
# 英語:(入力した点数)
# 数学:(入力した点数)
# 物理:(入力した点数)
# 英語の平均点は(英語の平均点の計算結果を表示)です。
# 数学の平均点は(数学の平均点の計算結果を表示)です。
# 物理の平均点は(物理の平均点の計算結果を表示)です。


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



46 :デフォルトの名無しさん:2010/06/23(水) 04:49:28
http://pc12.2ch.net/test/read.cgi/tech/1276810079/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/06/23(水) 16:37:12
http://pc12.2ch.net/test/read.cgi/tech/1276810079/170
# 【質問テンプレ】
# [1] 授業単元: C言語プログラミング
# [2] 問題文(含コード&リンク):
# 1.関数sqrtを使って1〜10までの二乗根の和を求めなさい。
# 2.16進数ABC.DEを10進数にしなさい。


54 :デフォルトの名無しさん:2010/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 は http://nojiriko.asia/prolog/c136_75.html 参照


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


56 :デフォルトの名無しさん:2010/06/24(木) 05:39:57
http://pc12.2ch.net/test/read.cgi/tech/1276810079/190
# モンテカルロ法で√2の近似値を求めたいのですが、
# ネット調べてみるとモンテカルロ法と言えばπの近似に関するばかりで・・・
# どなたか教えてくださいませ
#



57 :デフォルトの名無しさん:2010/06/24(木) 05:42:12
http://pc12.2ch.net/test/read.cgi/tech/1276810079/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/06/24(木) 12:13:40
http://pc12.2ch.net/test/read.cgi/tech/1276810079/195
# [1] 授業単元:情報処理
# [2] 問題文:ガウスの消去法のプログラムをピボット対応と
#       ピボット非対応の2つ作成し、連立方程式の解を求めよ。
#      (ただし解くべき連立方程式は5元1次方程式で、ピボットの
#       発生するものと発生しないものの2種類とする)


61 :デフォルトの名無しさん:2010/06/24(木) 13:56:28
http://pc12.2ch.net/test/read.cgi/tech/1276810079/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 :デフォルトの名無しさん:2010/06/24(木) 14:47:25
>>61
% Prolog
http://nojiriko.asia/prolog/c137_196.html



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



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



66 :デフォルトの名無しさん:2010/06/25(金) 02:41:43
http://pc12.2ch.net/test/read.cgi/tech/1276810079/212
# [1] 授業単元: 数値解析
# [2] 問題文(含コード&リンク): http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10745.txt
# ニュートン・ラフソン法についての問題です。教科書に例題として載っていたプログラミングに今回問題となっている方程式の当てはめ方がわかりません(おそらく初歩的な事だと思われます)
#



67 :デフォルトの名無しさん:2010/06/25(金) 02:43:01
http://pc12.2ch.net/test/read.cgi/tech/1276810079/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 :デフォルトの名無しさん:2010/06/25(金) 02:52:19
http://pc11.2ch.net/test/read.cgi/db/1274791771/188
# 学校でSQLの授業とっててこんな問題が出たけど理解不能だったんで助けてくだしあ。
#
# XMLについて、その概要をコンピュータの意味処理という視点から書いて下さい。
# また、実際にどのような分野で使われていますか?
# 具体例を一つあげて説明してください。
#



69 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/06/25(金) 06:38:10
>>70
% Prolog 改行位置の調整をし忘れた。これを忘れるとatomの途中で改行してしまう。
http://nojiriko.asia/prolog/perl_ni_tsuite43_627.html を参照してください。


73 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/06/25(金) 08:02:01
http://pc12.2ch.net/test/read.cgi/tech/1274121477/320
# 日本語文章中の複数の単語を置換したいです。
# ファイルは一つのディレクトリに複数あります。
# >http://ime.nu/www.machu.jp/diary/20070224.html#p01
# ファイル検索はcygwin かlinux上なので上記を参考にしています。
# trではうまくいきませんでした。
#
# お題
#
# 拡張子が .rb の全てのファイルに対して、
#
# #!/usr/bin/env ruby
#
# を
#
# #!/usr/local/bin/ruby
#
# に置換する。ついでに、「ruby」という文字を「perl」に置き換える



75 :69:2010/06/25(金) 08:34:45
http://pc12.2ch.net/test/read.cgi/tech/1266565626/627

76 :デフォルトの名無しさん:2010/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は http://nojiriko.asia/prolog/replace_atom.html 参照


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


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



81 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/06/25(金) 15:45:05
>>80
使用言語:J

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

83 :デフォルトの名無しさん:2010/06/25(金) 16:47:19
http://pc12.2ch.net/test/read.cgi/tech/1197620454/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 :デフォルトの名無しさん:2010/06/25(金) 17:25:48
http://pc12.2ch.net/test/read.cgi/tech/1276810079/218
# [1] 授業単元: プログラム
# [2] 問題文(含コード&リンク): 番号 国語 数学 英語のメンバを持っている構造体を作って各教科の平均値と、全平均値を求めてください。(人数は4人とか5人で行ってください。あと番号っていうのは、番号は、4人なら1〜4までで5人なら1〜5までです)



85 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/06/25(金) 21:43:05
しまった。境界の時刻の処理ができていません。
>>82 >>85 はボツにしてください。

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



90 :デフォルトの名無しさん:2010/06/26(土) 05:53:29
http://pc12.2ch.net/test/read.cgi/tech/1276810079/226
# [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を返す関数。
#



91 :デフォルトの名無しさん:2010/06/26(土) 06:13:34
http://pc12.2ch.net/test/read.cgi/tech/1276810079/223
# 【質問テンプレ】
# [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 にコピー保存させていただきました。


92 :デフォルトの名無しさん:2010/06/26(土) 06:18:09
http://pc11.2ch.net/test/read.cgi/db/1274791771/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 :デフォルトの名無しさん:2010/06/26(土) 06:20:45
>>92 のつづきです。

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



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

95 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/06/26(土) 06:49:00
http://pc11.2ch.net/test/read.cgi/db/1274791771/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/06/26(土) 17:41:40
http://pc12.2ch.net/test/read.cgi/tech/1267796762/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 :デフォルトの名無しさん:2010/06/26(土) 17:46:42
http://pc12.2ch.net/test/read.cgi/tech/1276810079/234
# [1]授業単元:システムプログラミング
# [2]課題:http://nojiriko.asia/data/10751.txt にコピーさせていただきました。
#



101 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/06/26(土) 20:18:09
>>53
使用言語:J


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

NB. p2
16babc.de
2748.87

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


108 :デフォルトの名無しさん:2010/06/27(日) 08:55:58
http://pc12.2ch.net/test/read.cgi/tech/1276810079/246
# [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");



109 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/06/27(日) 17:45:12
http://pc12.2ch.net/test/read.cgi/tech/1276810079/251
# 【質問テンプレ】
# [1] 授業単元: プログラミング演習
# [2] 問題文(含コード&リンク): 入力した2つの整数の間 (入力した数も範囲に含める) にある
#  「2の倍数でない」かつ「3の倍数でない」かつ「5の倍数でない」
# の条件を満たす整数を順に表示し,最後にその個数を表示するプログラムを作成せよ
#



114 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/06/27(日) 20:39:28
>>27
使用言語:J

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

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



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


119 :デフォルトの名無しさん:2010/06/28(月) 04:02:00
http://pc12.2ch.net/test/read.cgi/tech/1276810079/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 :デフォルトの名無しさん:2010/06/28(月) 04:03:21
http://pc12.2ch.net/test/read.cgi/tech/1276810079/258
# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):
# 次のように表示するプログラムを作りなさい。
#
# 私の学籍番号は0000000Aです。
# 氏名は aaaaa aaaaaaaaです。
#        ↑半角スペース
#



121 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/06/28(月) 07:43:32
http://pc12.2ch.net/test/read.cgi/tech/1276810079/273
# 社員の情報を管理するプログラムを作りたい。
# 下の実行例のような社員データベースを処理するプログラムを実装しなさい。
# 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 ?


126 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/06/28(月) 14:03:07
http://pc12.2ch.net/test/read.cgi/tech/1276810079/274
# 1] 授業単元: プログラム入門
# [2] 問題文(含コード&リンク): 2つの自然数 n と m を入力し、その積 n×m を
# たし算のみで計算するプログラムを作成せよ。


130 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/06/28(月) 14:08:06
http://pc12.2ch.net/test/read.cgi/tech/1276810079/278
# [1] 授業単元: C言語プログラミング入門
# [2] 問題文:関数の再帰的呼び出しによりAckermann(アッカーマン)関数を計算するプログラムを作れ。同じプログラムを繰り返し処理(ループ計算)により実現できるか考えよ。Ackermann関数は次式で定義される。
#



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


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


141 :デフォルトの名無しさん:2010/06/28(月) 21:29:37
http://pc12.2ch.net/test/read.cgi/tech/1276810079/288
# [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;


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


143 :デフォルトの名無しさん:2010/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 :デフォルトの名無しさん:2010/06/28(月) 21:33:10
http://pc12.2ch.net/test/read.cgi/tech/1276810079/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 :デフォルトの名無しさん:2010/06/28(月) 21:36:06
http://pc12.2ch.net/test/read.cgi/tech/1276810079/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 :デフォルトの名無しさん:2010/06/28(月) 22:56:35
http://pc12.2ch.net/test/read.cgi/tech/1276810079/309
# [1] 授業単元:C++プログラミング
# [2] 問題文(含コード&リンク):コンピュータ対人間の○×ゲームプログラムを作りなさい。


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



148 :デフォルトの名無しさん:2010/06/29(火) 07:47:45
http://pc11.2ch.net/test/read.cgi/db/1274791771/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 :デフォルトの名無しさん:2010/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,!.



150 :デフォルトの名無しさん:2010/06/29(火) 10:14:46
>>144
% 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).


151 :デフォルトの名無しさん:2010/06/29(火) 10:33:05
http://pc12.2ch.net/test/read.cgi/tech/1276810079/316
# 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



152 :デフォルトの名無しさん:2010/06/29(火) 12:35:39
>>151
% 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).


153 :デフォルトの名無しさん:2010/06/29(火) 13:20:25
>>151
% Prolog [2]

'入力した文字配列中に,abcという並びがいくつあるか調べる' :-
    get_chars(Chars),
    count(append(_,[a,b,c|_],Chars),Count),
    write_formatted('#abc = %t\n'[Count]).


154 :デフォルトの名無しさん:2010/06/29(火) 13:25:25
http://pc12.2ch.net/test/read.cgi/tech/1276810079/325
# 画像上のある点からy=ax^2の2次曲線を赤線で描画しなさい(画像 320×240)
#
#
# (x,y)=(160,120)
# a=1/3のとき
# a=1/2のとき
# a=1のとき
# a=2のとき
#
# 描画範囲
# yの範囲は40
# xの範囲は60
#



155 :デフォルトの名無しさん:2010/06/29(火) 13:47:10
>>148
% 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).


156 :デフォルトの名無しさん:2010/06/29(火) 15:42:04
>>147
% Prolog

program :-
    user_parameters([_データファイル,_出力ファイル]),
    get_chars(_データファイル,Chars),
    put_chars(_出力ファイル,Chars).


157 :デフォルトの名無しさん:2010/06/29(火) 17:34:43
http://pc12.2ch.net/test/read.cgi/tech/1276810079/331
# [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[]の各要素の偏差値を表示するプログラムを作成せよ
#



158 :デフォルトの名無しさん:2010/06/29(火) 18:02:13
>>157
% 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) ,偏差値(_値,_平均値,_標準偏差,_偏差値)),_偏差値ならび).


159 :デフォルトの名無しさん:2010/06/29(火) 19:04:21
http://pc12.2ch.net/test/read.cgi/tech/1276810079/334
# [1] 授業単元:画像処理
# [2] 問題文(含コード&リンク):16×16サイズの白黒ビットマップ画像を読み込んで、
#                  上下反転させた画像をビットマップで保存するプログラムを作成。
#


160 :デフォルトの名無しさん:2010/06/29(火) 22:57:29
http://pc12.2ch.net/test/read.cgi/tech/1276810079/335
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):ファイルに保存された会員情報を指定された項目をキーとしてソートするプログラムを作成する.
# 出力形式は,入力データと同じ,つまり1行に1人分のデータを格納し,各項目間はカンマで区切るものとする.
# また,ソート済みのデータはファイルではなく標準出力に出力するものとする.
# 整数型のデータについては数値として,文字列型のデータについては大文字/小文字を区別せずにソートをすること.
# ソートアルゴリズムはこれまでの演習で使用したもの,していないものに関わらず,何を用いてもよい.
#
# また,会員数は最大で20,000人と仮定してもよい.
#
# 会員情報の入ったファイルのファイル名,キーとなる項目,正順か逆順かの指定はプログラム実行時の引数として与える.第一引数が会員情報の入ったファイル名,第二引数が項目番号(表1参照),第三引数がソート方法(0なら昇順,1なら降順)とする.
nt)
# 州 5 文字列(最大で50文字)
# 郡 6 文字列(最大で50文字)#
# 表1: データ型 項目名 項目番号 型
# 会員ID 1 整数(int)
# 姓 2 文字列(最大で50文字)
# 名 3 文字列(最大で50文字)



161 :デフォルトの名無しさん:2010/06/29(火) 23:52:14
http://pc12.2ch.net/test/read.cgi/tech/1276810079/340
# [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 は合計には加えないものとする


162 :デフォルトの名無しさん:2010/06/30(水) 00:03:23
http://pc12.2ch.net/test/read.cgi/tech/1266565626/675
# ../test/read.cgi/tech/1266565626/673
# ・とあるディレクトリd0以下に存在する全てのディレクトリをなぞる。
#
# ・このとき、今位置するディレクトリdnの相対的な深さをdとして、
#  d個のピリオドをディレクトリdnの名前の前に足した文字列 をファイルFに出力する。
#
# ・また、このとき、今位置するディレクトリdnにテキストファイルがあれば、
#  d+1個のピリオドをテキストファイルtnの名前の前に足し、拡張子.txtを除いた文字列 をファイルFに出力する。
# ・さらに、そのテキストファイルtnの内容をそのままファイルFに出力する。
#  テキストファイルtnの内容の各行頭には、ピリオドはつけない。
#  テキストファイルtnの内容のとある行頭にピリオドがある場合は、ピリオドの前に半角空白を入れる。


163 :デフォルトの名無しさん:2010/06/30(水) 02:04:53
>>161
% 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).


164 :デフォルトの名無しさん:2010/06/30(水) 07:14:15
>>161
% 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,_合計値,_平均値).


165 :デフォルトの名無しさん:2010/06/30(水) 07:30:57
>>163->>164 (>>161)
% Prolog write_formattedであるべきところがwriteになっているところが複数箇所ありました。% 以下サイトに書き直しておきます。
http://nojiriko.asia/prolog/c137_340.html



166 :デフォルトの名無しさん:2010/06/30(水) 11:44:59
http://pc12.2ch.net/test/read.cgi/tech/1200175247/861
# [1] 授業単元:ファイル操作、2分探索法
# [2] 問題文:学生の身長、体重のデータを読み込みある学籍番号を入力した
# ときにその学生の学籍番号、身長、体重を2分探索法により求め、出力しなさい。
# 学生のデータは、txtファイルでxx yyy zzという風に記載されています。
# (例)出力結果
# 学生番号:xx
# 身長:yyy (cm)
# 体重:zz (kg)


167 :デフォルトの名無しさん:2010/06/30(水) 17:07:33
>>166
% Prolog
http://nojiriko.asia/prolog/ruby2_861.html



168 :デフォルトの名無しさん:2010/06/30(水) 17:24:16
http://pc12.2ch.net/test/read.cgi/tech/1200175247/863
# 【質問テンプレ】
# [1] 授業単元:プログラミング
# [2] 問題文:
# 二分法による平方根の計算。但し、求めたい平方根(自
# 然数)を入力できるようにした上で、プログラムの実行時
# の計算回数を計算・表示できるように、プログラムを作成
# すること。


169 :デフォルトの名無しさん:2010/06/30(水) 18:02:30
>>168
% 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).


170 :デフォルトの名無しさん:2010/06/30(水) 20:56:38
http://pc12.2ch.net/test/read.cgi/tech/1276810079/357
# [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



171 :デフォルトの名無しさん:2010/06/30(水) 21:54:55
>>170
% 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 = [].

'この場合、要素数(構造体の数)はいらないから'.


172 :デフォルトの名無しさん:2010/06/30(水) 22:54:32
>>170
% 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(_ファイル名).




173 :デフォルトの名無しさん:2010/06/30(水) 23:39:49
>>162
% Prolog
http://nojiriko.asia/prolog/Perl_ni_tsuite43_675.html



174 :デフォルトの名無しさん:2010/07/01(木) 05:33:43
http://pc12.2ch.net/test/read.cgi/tech/1257968644/58
# 二分法とニュートン法で次の非線形方程式の解を求めるプログラムを作成せよ
#
# x=2+logx (x≧1)
#



175 :デフォルトの名無しさん:2010/07/01(木) 09:00:30
>>170
% 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)).


176 :デフォルトの名無しさん:2010/07/01(木) 11:24:56
>>200
% 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,_残りならび).


177 :デフォルトの名無しさん:2010/07/01(木) 11:29:40
>>176 の出題レス番号は >>200 ではなくて >>133 でした。


178 :デフォルトの名無しさん:2010/07/01(木) 13:47:49
>>175
これも >>170 ではなくて >>160 だった。


179 :デフォルトの名無しさん:2010/07/01(木) 15:45:50
http://pc12.2ch.net/test/read.cgi/tech/1276810079/390
# [1] 授業単元: プログラミング言語
# [2] 問題文(含コード&リンク): http://ime.nu/kansai2channeler.hp.infoseek.co. jp/cgi-bin/joyful/img/10772.txt
#
# 演習1
# 再帰呼び出しを用いたフィボナッチ数


180 :デフォルトの名無しさん:2010/07/01(木) 16:13:56
>>179
% 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.


181 :デフォルトの名無しさん:2010/07/01(木) 19:54:48
>>160
% Prolog
http://nojiriko.asia/prolog/c137_335.html



182 :デフォルトの名無しさん:2010/07/02(金) 00:20:09
>>131
使用言語:十進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

183 :デフォルトの名無しさん:2010/07/02(金) 00:21:11
>>131
使用言語: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

184 :デフォルトの名無しさん:2010/07/02(金) 00:22:11
>>131
使用言語: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>

185 :デフォルトの名無しさん:2010/07/02(金) 04:59:37
http://pc12.2ch.net/test/read.cgi/tech/1276810079/405
# 摂氏から華氏,及び華氏から摂氏に換算する関数を作成して、
# main関数でキーボードから温度とその値が摂氏であるか華氏であるかを
# 入力し,摂氏ならば華氏に,華氏ならば摂氏に換算した値を小数点以下1桁までで出力するプログラムを作成しなさい。
# なお出力は main関数で行うこと。
#



186 :デフォルトの名無しさん:2010/07/02(金) 05:00:56
http://pc12.2ch.net/test/read.cgi/tech/1276810079/409
# [1] 授業単元:プログラミングC
# [2] 問題文(含コード&リンク):
# 極座標(r,θ)の値を入力すると、直交座標(x,y)に変換するプログラムを作成せよ。
# 但し,θの値はdegree(度)で入力すること。また、πの値は逆三角関数(arctan(x))を使って計算をすること。
#



187 :デフォルトの名無しさん:2010/07/02(金) 05:01:48
http://pc12.2ch.net/test/read.cgi/tech/1276810079/410
# [1] 授業単元:アルゴリズム論
# [2] 問題文(含コード&リンク):分離連作法と外部ハッシュ法の性能比較
#



188 :デフォルトの名無しさん:2010/07/02(金) 05:04:19
http://pc12.2ch.net/test/read.cgi/tech/1267796762/215
#
# 【 課題 】
# 課題1
#
# 整数型の変数n1,n及びn3には、数値が格納されている。
# これらの3個の数値の大小比較を行い、最大値を変数maxに、最小値を変数minに格納する手続き部である。
# 最初にn1とn2の大小比較を行い、大きいほうをmaxに入れ、小さい方をmmminに入れる。
# 次に、max及びminとn3を大小比較して、大きいほうをmaxに、小さい方をminに入れて、最終的な最大値および
#
# 最小値を決定する。



189 :デフォルトの名無しさん:2010/07/02(金) 05:21:57
http://pc12.2ch.net/test/read.cgi/tech/1200175247/877
# [1] 授業単元:2分探索法
# [2] 問題文: http://nojiriko.asia/jpeg/up10962.jpg にコピーさせていただきました。
#



190 :デフォルトの名無しさん:2010/07/02(金) 05:26:20
http://pc12.2ch.net/test/read.cgi/tech/1260922392/45
# 以下の条件(仕様)を満たすプログラムを作成し, そのプログラム(Pascalプログラムソースファイル)とともに その解説書を提出すること.
# 逆ポーランド記法で入力された論理式の充足可能性を判定し, その式の値をtrueにする変数値を,通常の表記とともに出力すること.
# 可能な演算は論理積(and), 論理和(or), 否定(not), の3種類として, それぞれ'a','o','n' で表現すること.
# 使用可能な論理変数は x0, x1, ..., x9 の10種類とし, それぞれ '0','1',...,'9' で表現すること.
# 例) (x1∧x2)∨(¬x1∧x3) ⇒  12a1n3ao
# 使用できない文字が含まれる入力に対してエラーの旨を出力すること.
# 入力された論理式の充足可能性を判定, 式の値を true にする変数値を出力した後, 再度入力待ち状態になり, 空の文字列を入力するとプログラムが終了すること.


191 :デフォルトの名無しさん:2010/07/02(金) 06:10:53
>>189
% 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).


192 :デフォルトの名無しさん:2010/07/02(金) 06:57:45
>>191 (>>189)
% 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).


193 :デフォルトの名無しさん:2010/07/02(金) 07:00:34
>>189
% 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,_誕生_月,_誕生_年,[_学籍番号,_氏名,_誕生_月,_誕生_日]).



194 :デフォルトの名無しさん:2010/07/02(金) 07:05:19
>>193 (>>189)
% 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,_誕生_月,_誕生_年,[_学籍番号,_氏名,_誕生_月,_誕生_日]).


195 :デフォルトの名無しさん:2010/07/02(金) 07:17:53
>>191->>194 (>>189)
% Prolog もう二ヶ所エラーがあった。書き直しはしません。アーカイブの方を見てください。
http://nojiriko.asia/prolog/c137_877.html


196 :デフォルトの名無しさん:2010/07/02(金) 08:00:34
>>188
% Prolog
http://nojiriko.asia/prolog/j69_215.html


197 :デフォルトの名無しさん:2010/07/02(金) 10:33:56
>>185
% 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,!.



198 :デフォルトの名無しさん:2010/07/02(金) 12:22:18
>>131
使用言語: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=)?
>

199 :デフォルトの名無しさん:2010/07/02(金) 12:44:54
>>131
使用言語: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

200 :デフォルトの名無しさん:2010/07/02(金) 17:55:15
>>131
使用言語: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

201 :デフォルトの名無しさん:2010/07/02(金) 17:56:43
>>131
使用言語: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

202 :デフォルトの名無しさん:2010/07/02(金) 19:05:41
http://pc12.2ch.net/test/read.cgi/tech/1276810079/414
# [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以外の数値が入力されたら再入力させること。


203 :デフォルトの名無しさん:2010/07/02(金) 19:06:31
http://pc12.2ch.net/test/read.cgi/tech/1276810079/417
# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):
# 正の整数を引数とし、その階乗(n!)を計算して戻り値とする関数
# factを作成して動作を確認せよ。
#



204 :デフォルトの名無しさん:2010/07/02(金) 19:13:16
http://pc12.2ch.net/test/read.cgi/tech/1267796762/222
# 【 課題 】http://nojiriko.asia/data/993.html にコピーさせていただきました。
# 【 形態 】1. Javaアプリケーション(main()で開始)
# 【 期限 】7月7日
# 【 Ver  】"1.6.0_20"
# 【 補足 】アップしたファイルに先生が途中まで解答したものが含まれているので、なるべくならそれを使用して下さい。
#



205 :デフォルトの名無しさん:2010/07/02(金) 21:07:45
>>202
% 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.


206 :デフォルトの名無しさん:2010/07/02(金) 21:12:00
http://pc12.2ch.net/test/read.cgi/tech/1276810079/420
# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):
# 実数値(xとする)と正の実数値(yとする)を引数としてx^yを戻り値とする
# 関数mypowを作成し、プログラムリストと実行結果を示せ。
# ただし、xとyについてはmain関数でキーボードから入力するようにし、
# 出力結果としては、mypow関数の計算結果と数学関数pow関数の結果を
# 両方表示するようにせよ。また、mypow関数のプロトタイプ宣言も行うこと。
#


207 :デフォルトの名無しさん:2010/07/02(金) 21:13:42
http://pc12.2ch.net/test/read.cgi/tech/1276810079/421
# [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] とし
#  て求められるので,あとは成績と共に表示すればよい。
#



208 :デフォルトの名無しさん:2010/07/02(金) 22:03:42
>>186
使用言語:J

f=:[:+.[r.(180%~4*_3 o.1)*]

2 f 30
1.73205 1
1 f 45
0.707107 0.707107

209 :デフォルトの名無しさん:2010/07/02(金) 22:38:10
>>203
% 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).


210 :デフォルトの名無しさん:2010/07/02(金) 22:57:09
>>186
使用言語: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]

211 :デフォルトの名無しさん:2010/07/03(土) 08:02:22
>>207
使用言語: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

212 :デフォルトの名無しさん:2010/07/03(土) 11:19:52
>>207
% 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.


213 :デフォルトの名無しさん:2010/07/03(土) 11:28:49
>>186
使用言語: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)

214 :デフォルトの名無しさん:2010/07/03(土) 17:26:07
http://pc12.2ch.net/test/read.cgi/tech/1276810079/441
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):
# UNIXコマンドのgrep(指定したファイルを読み込み、指定した文字列とマッチする行を出力するコマンド)と同じ動作をするプログラムを実装しなさい。
# ただし、オプションなどの副次的な機能はつけなくてもよい。
#



215 :デフォルトの名無しさん:2010/07/03(土) 19:54:29
>>207
使用言語: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

216 :デフォルトの名無しさん:2010/07/03(土) 22:37:10
>>186
% Prolog

'極座標(r,θ)の値を入力すると、直交座標(x,y)に変換する'(_r,_θ,_x,_y) :-
    _x is _r * cos(4 * atan(1) * _θ / 180),
    _y is _r * sin(4 * atan(1) * _θ / 180).


217 :デフォルトの名無しさん:2010/07/04(日) 06:18:13
http://pc12.2ch.net/test/read.cgi/tech/1276810079/457
# [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



218 :デフォルトの名無しさん:2010/07/04(日) 08:26:53
http://pc12.2ch.net/test/read.cgi/tech/1276810079/461
# [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 以下になった部分列に対して、単純挿入法に切り替える手法が用いられる。



219 :デフォルトの名無しさん:2010/07/04(日) 08:28:30
http://pc12.2ch.net/test/read.cgi/tech/1276810079/466
# どなたか教えてください。ずっと考えてたけど、答えがわかりませんorz。
#
# <標準関数>文字列と削除文字列を入力し、文字列中から削除文字列を削除しなさい。
# ※配列の使用は2つだけ。
# 例) 文字列入力→ABCDEFAABCDABC
#    削除文字列→ABC
#    結果文字列→DEFAD
#
# どなたか教えてください、お願いします。



220 :デフォルトの名無しさん:2010/07/04(日) 10:01:14
>>219
使用言語:J

f=:dyad def 'y{~<<<,(i.#x)+/~I.x E.y'

'ABC' f 'ABCDEFAABCDABC'
DEFAD
'ABA' f 'ABABABC'
BC

二番目の例のように検索文字列が重なった場合どこまで消す?

221 :デフォルトの名無しさん:2010/07/04(日) 13:25:52
http://pc11.2ch.net/test/read.cgi/db/1274791771/243
# プログラム言語で以下の集約を定義しなさい。
# 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;


222 :デフォルトの名無しさん:2010/07/04(日) 15:20:36
>>219
% 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 の第二番目の解釈、挑戦してみたが、結構複雑。


223 :デフォルトの名無しさん:2010/07/04(日) 15:23:07
http://pc12.2ch.net/test/read.cgi/tech/1276810079/475
# [1] 授業単元:プログラミング
# [2]問題文:
# ファイルseiseki.txt から氏名と点数を読み込んで、成績順に並べ替え、結果を画
# 面に表示するプログラムを作成せよ。
# ・氏名は2次元配列、点数は1次元配列に格納する。
# ・ データの並べ替えには単純挿入法、単純選択法またはバブルソートを使用する。
# ・ 文字列 x[]と文字列y[]の入れ替えは、文字列操作関数strcpy を用いて行う。
# strcpy(z,x); strcpy(x,y); strcpy(y,z);
#



224 :デフォルトの名無しさん:2010/07/04(日) 16:14:09
http://pc12.2ch.net/test/read.cgi/tech/1276810079/481
# [1] 授業単元:方程式の解
# [2] 問題文(含コード&リンク):方程式exp(-x^2/2)=0.5の解を求める
#



225 :デフォルトの名無しさん:2010/07/04(日) 18:38:36
http://pc12.2ch.net/test/read.cgi/tech/1267796762/230
# 【 課題 】テキストファイルを読み込み行毎に出現頻度を統計するプログラムを作れ
# 【 形態 】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
#
# という風に表示します。


226 :デフォルトの名無しさん:2010/07/04(日) 18:43:07
http://pc12.2ch.net/test/read.cgi/tech/1267796762/231
# 【 課題 】()が使える電卓に改造しなさい。(再帰メソッド使用)
# 【 形態 】2. Applet
# 【 GUI  】2. Swing
# 【 期限 】7/5
# 【 Ver  】1.6.0_15
# 【 補足 】()以外の部分は完成しているのですが、()の部分をどう作って
# いいかわからず困っています。「再帰メソッド」というのも色々調べてみましたが、
# 上手く理解できません。以下がソースです。
# http://nojiriko.asia/data/s0.txt にコピーさせていただきました。


227 :デフォルトの名無しさん:2010/07/04(日) 23:31:37
>>225
% 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,_出現頻度ならび),!.


228 :デフォルトの名無しさん:2010/07/04(日) 23:34:57
>>225
% 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).



229 :デフォルトの名無しさん:2010/07/04(日) 23:37:49
http://pc12.2ch.net/test/read.cgi/tech/1276810079/501
# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):
# 次式の値を返す関数を作成せよ。
# f(x)=e^{-x} cos(2πx)
# その関数を用いて0≦x≦3の間で0.1刻みで計算し、結果をリダイレクトで
# ファイルに記録せよ。その結果をgnuplotでグラフにして示せ。
#



230 :デフォルトの名無しさん:2010/07/05(月) 00:18:05
>>221
% Prolog

地方で集約する(_地方,_人口) :-
    findsetof(_地方,(
          'PopTbl'(_pref_name,_population),
          地方(_地方,_pref_name)),
         L1),
    append(_,[_地方|_],L1),
    findsum(_population,(
          'PopTbl'(_pref_name,_population),
          地方(_地方,_pref_name)),
        _人口).

地方(四国,徳島).
地方(四国,香川).
地方(四国,愛媛).
地方(四国,高知).
地方(九州,福岡).
地方(九州,佐賀).
地方(九州,長崎).


231 :デフォルトの名無しさん:2010/07/05(月) 04:59:32
>>229
% 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 .



232 :デフォルトの名無しさん:2010/07/05(月) 05:30:09
>>229
% 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 .


233 :デフォルトの名無しさん:2010/07/05(月) 05:34:16
http://pc12.2ch.net/test/read.cgi/tech/1276810079/504
# [1]授業単元:プログラミング演習
# [2]問題文;離散探索木(26進)と外部ハッシュ法の比較(探索関数)
#  キー:   文字列
#  使用ファイル: wordE100KR.dat
#  上記ファイルを読み込み、通常の配列に格納する。
#  この配列から要素を読み込み、分離連鎖法および離散探索木(26進)を生成する。
#  格納された要素と同一の要素集合すなわち、配列に格納された用語集合に対して、1万語毎に探索を行い、照合回数、および探索時間を測定する。
#  結果として、照合回数について20個のデータ(2×10)、同様に探索時間について20
個のデータ(2×10)が得られる。
#  これらのデータをExcelに格納し、表、グラフを作成し、分析せよ。



234 :デフォルトの名無しさん:2010/07/05(月) 06:00:39
>>232
% Prolog "-g program " が必要だった。

[SWI-Prolog]# pl -s temp.pro -g program >temp


235 :デフォルトの名無しさん:2010/07/05(月) 12:42:13
http://pc12.2ch.net/test/read.cgi/tech/1276810079/506
# [1] 授業単元: C言語プログラミング
# [2] 問題文メモリや実行時間の許容範囲内の、最大完全数、最大友愛数、および最大婚約数を算出プログラムを作成
#



236 :デフォルトの名無しさん:2010/07/05(月) 12:46:03
http://pc12.2ch.net/test/read.cgi/tech/1267796762/233
# 【 課題 】部分一致文字列の探索関数の比較(配列‐二分探索とTrie(26進))
#  作成関数:   追加、探索
#  キー:   文字列
#  使用ファイル: wordE100KR.dat
# ・二分探索法を改良し、前方一致(例: info?)を実現する関数を作成する。
# ・多分探索木の巡回関数に基づき、部分木出力関数をTrie(26進)に適用し、前方一致(例: info?)を実現する関数(部分木巡回‐出力関数)を作成する。
# ・特定の部分文字集合(100)に対し、比較(照合)回数、および出力時間を測定し、これらの結果を、表、グラフに表し、分析する。
# 【 形態 】1. Javaアプリケーション(main()で開始)
# 【 GUI  】4. 制限なし
# 【 期限 】7月12日
# 【 Ver  】1.6.0_15
# 【 補足 】参照ファイルはアップしてあります。


237 :デフォルトの名無しさん:2010/07/05(月) 15:08:39
>>233
% 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,[]).


238 :デフォルトの名無しさん:2010/07/05(月) 15:24:59
>>233
% Prolog 最後一行が千切れてしまった。

分離連鎖(24,[]). 分離連鎖(25.[]).


239 :デフォルトの名無しさん:2010/07/05(月) 15:39:40
>>233
% 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])).


240 :デフォルトの名無しさん:2010/07/05(月) 17:27:48
>>229
使用言語: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'

241 :デフォルトの名無しさん:2010/07/05(月) 18:18:25
http://pc12.2ch.net/test/read.cgi/tech/1267796762/241
# 【 課題 】1.B木を実現するプログラムを作成しなさい。ただし、プログラムの
最初で各節点が持つ最大の子の数(m)を入力して、プログラムを開始する。


242 :デフォルトの名無しさん:2010/07/05(月) 21:09:35
http://pc12.2ch.net/test/read.cgi/tech/1276810079/519
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク): 四則演算と平方根を求める事が出来る電卓プログラムを作成せよ.
#



243 :デフォルトの名無しさん:2010/07/06(火) 04:13:13
http://pc12.2ch.net/test/read.cgi/tech/1276810079/523
# [1] 授業単元: Visual Studio 入門
# [2] 問題文 3問ほどあるのでリンクを
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10782.txt
#
# 問題1
# 下に示すように,非負の整数値を読み込んで,その数を逆順に表示するプログラムを作成せ
# よ.なお,負の値を読み込んだ場合は,再入力を促すメッセージを表示すること.
#
#
# 非負の整数を入力してください: 1963
# 1963 を逆から読むと3691 です.
#



244 :デフォルトの名無しさん:2010/07/06(火) 04:14:05
http://pc12.2ch.net/test/read.cgi/tech/1276810079/523
# [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 です.
#



245 :デフォルトの名無しさん:2010/07/06(火) 04:15:18
http://pc12.2ch.net/test/read.cgi/tech/1276810079/523
# [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


246 :デフォルトの名無しさん:2010/07/06(火) 04:17:51
http://pc12.2ch.net/test/read.cgi/tech/1276810079/534
# [1] 授業単元: Visual Studio 入門
# [2] 問題 半乱順列の関数作成



247 :デフォルトの名無しさん:2010/07/06(火) 04:19:01
http://pc12.2ch.net/test/read.cgi/tech/1276810079/535
# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):data.txtに書かれている氏名と成績を読み込み、氏名を2次元配列、成績を1次元配列に格納せよ。
#



248 :デフォルトの名無しさん:2010/07/06(火) 04:29:25
http://pc11.2ch.net/test/read.cgi/db/1274791771/248
# 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

#


249 :デフォルトの名無しさん:2010/07/06(火) 05:01:23
http://pc12.2ch.net/test/read.cgi/tech/1247100724/713
# 宿題片づけスレで省られたのでお願いします。
# C言語初級者、画像処理初心者です。
#
# [1] 授業単元:画像処理
# [2] 問題文(含コード&リンク):16×16サイズの白黒ビットマップ画像を読み込んで、
#                  上下反転させた画像をビットマップで保存するプログラムを作成。
#



250 :デフォルトの名無しさん:2010/07/06(火) 06:51:56
>>243
% 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).


251 :デフォルトの名無しさん:2010/07/06(火) 07:08:51
>>244
% 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).



252 :デフォルトの名無しさん:2010/07/06(火) 07:59:21
>>245
% 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.


253 :デフォルトの名無しさん:2010/07/06(火) 08:04:52
>>252 (>>245)
% 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.


254 :デフォルトの名無しさん:2010/07/06(火) 08:28:59
>>248
% 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]),!.


255 :デフォルトの名無しさん:2010/07/06(火) 10:45:25
>>247
% 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(成績ならび(_成績ならび)).


256 :デフォルトの名無しさん:2010/07/06(火) 10:54:55
>>255 (>>247)
% 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(成績ならび(_成績ならび)).


257 :デフォルトの名無しさん:2010/07/06(火) 10:59:41
>>256 (>>247)
% 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(成績ならび(_成績ならび)). 


258 :デフォルトの名無しさん:2010/07/06(火) 11:04:03
>>257
Prologのプログラムを読む場合の注意は、引数の中にある論理変数の変化に集中するから、
そこの部分の桁位置を揃えるようにしてみたい。>>256->>257は失敗。


259 :デフォルトの名無しさん:2010/07/06(火) 12:07:16
>>258
% Prolog 全体として書の雰囲気を持つ算譜にしたい。
http://nojiriko.asia/prolog/c137_535.html


260 :デフォルトの名無しさん:2010/07/06(火) 16:46:08
http://pc11.2ch.net/test/read.cgi/db/1274791771/255
# 同一テーブルで、自分自身を除く前回の履歴を結合したいです
# 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
# となる。
#



261 :デフォルトの名無しさん:2010/07/06(火) 16:47:50
>>260 つづき
#
# LEFT OUTER JOIN
# SELECT MAX(製造ロット) AS MAX製造ロット
# FROM 生産履歴 生産履歴前回
# WHERE 製造ロット<>生産履歴.製造ロット※2
# GROUP BY 設備
#
# ※2で引っかかる。
# どなたか回答よろしくお願いします。


262 :デフォルトの名無しさん:2010/07/06(火) 17:24:08
http://pc12.2ch.net/test/read.cgi/unix/1127388574/83
# 1
# 12
# 123
# 1234
# 12345
# このプログラミング作成したい。


263 :デフォルトの名無しさん:2010/07/06(火) 17:33:45
>>262
% 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').


264 :デフォルトの名無しさん:2010/07/06(火) 17:41:48
>>263 (>>262)
% 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').


265 :デフォルトの名無しさん:2010/07/06(火) 18:08:31
>>264 (>>262)
% 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').



266 :デフォルトの名無しさん:2010/07/06(火) 19:32:02
>>265 (>>262)
% 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).


267 :デフォルトの名無しさん:2010/07/06(火) 20:10:02
>>246
% 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).


268 :デフォルトの名無しさん:2010/07/06(火) 22:29:47
http://pc12.2ch.net/test/read.cgi/tech/1276810079/569
# コインの種類(例えば、1円、5円、8円、10円、15円)に対して、金額を入力すると
# その金額を払うのに最も枚数が少なくて済むコインの出し方を出力してくれる
# プログラム。
# 例えば、23円と入力すると、「10円1枚・8円1枚・5円1枚の計3枚」と出力できるプログラムです。
# ただし、「10円2枚・1円3枚の計5枚」は「最小」ではないため、上の出力を優先します。
# 入力された金額が負の場合は、「Error」を出力するようにします。
# そこで、下のようなプログラムを書いたのですが、うまく起動しません。
# このプログラムを、上の出力例のように出力してくれるように書きなおしてくれませんか??
# 下のプログラムでは合計枚数を出力する部分しか書いてません。
# ちなみに、再帰を使ってプログラミングお願いします。



269 :デフォルトの名無しさん:2010/07/07(水) 05:08:38
http://pc12.2ch.net/test/read.cgi/tech/1276810079/595
# [1] 授業単元:プログラミング演習
# Q1. 問題文:4つの整数を入力し、それらを要素とする行列を求め、その値を以下のような
# 形式で表示するプログラムを作成せよ。
#
# 例 100 20 30 40と入力すれば
#   | 100 20 | =3400
# | 30 40 | と表示される
#
# Q.2ディスカウントストアでどの商品でも5個以上買えば1割引、10個以上で2割引、20個以上で
# 4割引となっていた。キーボードから買う商品の単価と個数を入力し、合計金額を計算するプログラミングを
# 作成せよ。
#



270 :デフォルトの名無しさん:2010/07/07(水) 07:32:53
>>269
% 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,_値).


271 :デフォルトの名無しさん:2010/07/07(水) 07:52:13
>>269
% 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 _式.


272 :デフォルトの名無しさん:2010/07/07(水) 08:33:41
>>271 (>>269)
% 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 _式.


273 :デフォルトの名無しさん:2010/07/07(水) 14:05:52
http://pc12.2ch.net/test/read.cgi/tech/1276810079/602
# [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に読み換えたものも追加



274 :デフォルトの名無しさん:2010/07/07(水) 15:04:06
>>273
% 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).



275 :デフォルトの名無しさん:2010/07/07(水) 15:11:45
>>274 (>>273)
% 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).


276 :デフォルトの名無しさん:2010/07/07(水) 16:06:52
>>273
% Prolog

'0から7までの数字が描かれたカードがある。ただし、0だけ2枚で、合計9枚とする。この中から4枚を選ぶ組合せを考える。ただし、6と7は同時に選ばない(両方選ばなくてもよい)。このような組合せは何通りあるか'(_何通り) :-
    count(('0から7までの数字が描かれたカードがある。ただし、0だけ2枚で、合計9枚とする。この中から4枚を選ぶ組合せを考える。ただし、6と7は同時に選ばない(両方選ばなくてもよい)。このような組合せを列挙する'(U)),_何通り).


277 :デフォルトの名無しさん:2010/07/07(水) 16:09:47
http://pc12.2ch.net/test/read.cgi/tech/1276810079/603
# [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]として求められるので、
#   あとは成績と共に表示すればいい。


278 :デフォルトの名無しさん:2010/07/07(水) 22:33:59
>277
% Prolog これは既出。
http://nojiriko.asia/prolog/c137_421.html


279 :デフォルトの名無しさん:2010/07/08(木) 00:52:11
>>243
使用言語:J

load 'misc'
f=:monad define
a=.prompt '非負の整数を入力してください: '
smoutput a,' を逆から読むと ',(|.a),' です.'
)

f ''
非負の整数を入力してください: 1234
1234 を逆から読むと 4321 です.

280 :デフォルトの名無しさん:2010/07/08(木) 01:22:17
>>244
使用言語: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 です.

281 :デフォルトの名無しさん:2010/07/08(木) 01:32:42
>>245
使用言語: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

282 :デフォルトの名無しさん:2010/07/08(木) 01:40:50
>>262
使用言語:J

smoutput@(8!:2)\>:i.5
1
12
123
1234
12345

283 :デフォルトの名無しさん:2010/07/08(木) 05:05:31
http://pc12.2ch.net/test/read.cgi/tech/1276810079/618
# 【質問テンプレ】
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):
# 円形テンプレートマッチングのプログラムを作成せよ。
#
# 白い楕円が複数書いてあるBMP画像を読み込み(適当にペイントで作成)画像左下からラスタ走査し、円形テンプレートマッチングをするプログラムを作成せよ。
# 円形テンプレートはサイズA〜Bまで変化させ、一致率(円形テンプレートの円周上に一致する白画素と一致している数/円形テンプレート円周のプロット数、円形テンプレート内の黒画素に一致している黒画素数/円形テンプレート内の黒画素数)
# 上位5つを色を変えて描画せよ。
#
# また、一致率上位5つの半径、一致率、座標(画像の左下をx=0、y=0とする)をdos窓上に標示せよ。
#



284 :デフォルトの名無しさん:2010/07/08(木) 05:08:09
http://pc12.2ch.net/test/read.cgi/tech/1276810079/619
# [1] 授業単元:Cプログラミング演習
# [2] 問題文(含コード&リンク):
# 問題1. 10進数1234を2進数で表示するプログラムを作成せよ。
# 問題2. 変数の下位16ビット中の1のビット数を数える関数 int bit_count(int x) を作成せよ
#



285 :デフォルトの名無しさん:2010/07/08(木) 05:11:58
http://pc12.2ch.net/test/read.cgi/tech/1276810079/630
# [1] 授業単元:Cプログラミング
# [2] 問題文(含コード&リンク):
#
# 概要:数値を1つ(2〜9の数字)入力し、その個数分の"*"を1辺とする
# 完成図(*=★、空白=☆):
#
# 3を入力した場合
# ★★★
# ☆☆★
# ★★★
#
# 9を入力した場合
# ★★★★★★★★★
# ☆☆☆☆☆☆☆☆★
# ★★★★★★★☆★
# ★☆☆☆☆☆★☆★
# ★☆★★★☆★☆★
# ★☆★☆☆☆★☆★
# ★☆★★★★★☆★
# ★☆☆☆☆☆☆☆★
# ★★★★★★★★★


286 :デフォルトの名無しさん:2010/07/08(木) 07:12:02
>>284
% Prolog
http://nojiriko.asia/prolog/c137_619.html


287 :デフォルトの名無しさん:2010/07/08(木) 07:31:47
>>284
使用言語:J

NB. p1
(8!:2)#:1234
10011010010


NB. p2
bit_count=:monad def '+/(16#2)#:y'
a=:1234
bit_count a
5

288 :デフォルトの名無しさん:2010/07/08(木) 10:35:47
>>285
% Prolog
http://nojiriko.asia/prolog/c137_630.html



289 :デフォルトの名無しさん:2010/07/08(木) 12:45:49
>>269
使用言語: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

290 :デフォルトの名無しさん:2010/07/08(木) 13:49:38
ttp://pc12.2ch.net/test/read.cgi/tech/1276810079/632
# [1] 授業単元:C・プログラミング
# [2] 問題文(含コード&リンク):
# 下記のGPA計算のプログラムを読み込んだ数値を入れる配列を指すポインタを用いて書き換えよ.ただし,配列は1次元配列を用い,また関数を使う必要はない.
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10794.txt
#



291 :デフォルトの名無しさん:2010/07/08(木) 23:27:41
>>285
使用言語: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
★★★★★
☆☆☆☆★
★★★☆★
★☆☆☆★
★★★★★

292 :デフォルトの名無しさん:2010/07/09(金) 19:19:10
>>273
使用言語: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

293 :デフォルトの名無しさん:2010/07/10(土) 02:25:47
使用言語:pascal
以下の条件(仕様)を満たすプログラムを作成し, そのプログラム(Pascalプログラムソースファイル)とともに その解説書を提出すること.
逆ポーランド記法で入力された論理式の充足可能性を判定し, その式の値をtrueにする変数値を,通常の表記とともに出力すること.
可能な演算は論理積(and), 論理和(or), 否定(not), の3種類として, それぞれ 'a','o','n' で表現すること.
使用可能な論理変数は x0, x1, ..., x9 の10種類とし, それぞれ '0','1',...,'9' で表現すること.
例) (x1∧x2)∨(¬x1∧x3) ⇒  12a1n3ao
使用できない文字が含まれる入力に対してエラーの旨を出力すること.
入力された論理式の充足可能性を判定, 式の値を true にする変数値を出力した後, 再度入力待ち状態になり, 空の文字列を入力するとプログラムが終了すること.

padcalの宿題スレで返答がないのでこちらに書かせていただきました。
解説も出来たらお願いします。

294 :デフォルトの名無しさん:2010/07/12(月) 18:55:29
>>245
使用言語: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

295 :デフォルトの名無しさん:2010/07/16(金) 01:38:24
# 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10839.txt
コピーさせていただきました
ホームページ上からデータを追加、検索したりする問題です。
# OS:Linux


296 :デフォルトの名無しさん:2010/07/18(日) 10:04:24
http://pc12.2ch.net/test/read.cgi/tech/1279286575/42 # 1] 授業単元:く興味本位での自習 # [2] 問題文 # (繰り返し文を用いて) # 1〜10までの偶数を出力 # # 2 # 4 # 6 # 8 # 10 #

297 :デフォルトの名無しさん:2010/07/18(日) 12:52:47
>>296
使用言語:Scilab

-->2:2:10
ans =

2. 4. 6. 8. 10.

298 :デフォルトの名無しさん:2010/07/18(日) 12:58:29
>>296
使用言語: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

299 :デフォルトの名無しさん:2010/07/18(日) 19:05:48
prologの問題で5本ハノイの塔を考えているのですが、効率のいいアルゴリズムがわかりません。
協力お願いします。
#使用言語: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).

こんな感じでやりました。(見にくくてすみません)

300 :デフォルトの名無しさん:2010/07/18(日) 19:26:52
↑の続きですが、試行回数を3本の時以下にする問題です。

301 :デフォルトの名無しさん:2010/07/19(月) 21:28:51
落雷による停電で不通になっていたPrologアーカイブ http://nojirio.asia/prolog/index.html 復旧しました。

302 :デフォルトの名無しさん:2010/07/19(月) 21:30:29
>>301 間違えました。 http://nojiriko.asia/prolog/index.html ですね。

303 :デフォルトの名無しさん:2010/07/20(火) 06:28:12
書き込み規制中に100題以上進んでしまいました。順にアップしていくつもりですが、追いつかないかもしれない。C/C++の課題は上のアーカイブにc13[7-8]_*.htmlのファイル名でコピーしてあります。中には解答を含んでいるものもありますが、四分の一くらいかな。

304 :デフォルトの名無しさん:2010/07/20(火) 06:36:38
Javaの宿題からの出題分は j69_*.html ですね。たとえば、http://nojiriko.asia/prolog/j69_264.html でindexに未登録のものでも参照できます。


305 :デフォルトの名無しさん:2010/07/23(金) 04:12:54
http://pc12.2ch.net/test/read.cgi/tech/1276810079/648
# [1] 授業単元:
# [2] 問題文(含コード&リンク):
# 2〜9の数字を入力その数字に応じて図形を表示させる関数を作る
# 正方形 三角形 六角形 菱形 星 渦巻き
# 星と渦巻き以外できたからこの2つについて知りたい
# 例 7を入力したとき 左:渦 右:星
#
# *******  *   *   *
#          *    * *  *
# *****  *     ***
# *    *  *  *******
# * ***  *     ***
# *       *   *  *  *
# *******  *   *   *
#



306 :デフォルトの名無しさん:2010/07/23(金) 04:19:04
http://pc12.2ch.net/test/read.cgi/tech/1276810079/655
# [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
# 計算結果は約分をして表示
#



307 :デフォルトの名無しさん:2010/07/23(金) 04:22:05
http://pc11.2ch.net/test/read.cgi/db/1274791771/276
# 以下のようなテーブルがあります。
#
# 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なら赤+青+緑
# の色を持っていることを意味します。



308 :デフォルトの名無しさん:2010/07/23(金) 04:23:44
>>307 のつづきです。

# これを結合の段階で、以下のように色名を取得することは可能なのでしょうか?
#
# 1 商品1 赤
# 1 商品1 青
# 2 商品2 緑
# 2 商品2 黒
# 3 商品3 赤
# 3 商品3 青
# 3 商品3 緑
#



309 :デフォルトの名無しさん:2010/07/23(金) 04:33:04
これはまだ7月9日分です。この後140題くらい出題されています。

310 :デフォルトの名無しさん:2010/07/23(金) 07:03:30
>>307
% 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,_色名).


311 :デフォルトの名無しさん:2010/07/23(金) 13:26:16
http://pc12.2ch.net/test/read.cgi/tech/1267796762/260
# 【 課題 】今月のカレンダ作成詳細は下に書きます
# 【 形態 】Javaアプリケーション(main()で開始)
# 【 期限 】7月14日日
# 【 Ver  】1.6.0_20
#
# 今月、7月のカレンダーを2次元配列に格納してください。
# 要素数は縦5横7の配列となります。(曜日は格納する必要がありません。)
# 週の先頭が日曜日はじまりで格納してください
# 配列のカレンダーを表示するコードを追加してください。
# 日にちを1つ入力するとその日が何曜日かを表示するコードに修正してください。
# よろしくお願いします



312 :デフォルトの名無しさん:2010/07/23(金) 13:39:21
>>311
% 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).


313 :デフォルトの名無しさん:2010/07/23(金) 13:43:32
>>296
% Prolog 解答例その一

'1〜10までの偶数を出力' :-
    for(1,N,10),
    偶数(N),
    write_formatted('%t\n',[N]),
    fail.
'1〜10までの偶数を出力'.


314 :デフォルトの名無しさん:2010/07/23(金) 13:45:36
>>296
% 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).


315 :デフォルトの名無しさん:2010/07/23(金) 13:49:38
>>296
% 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).


316 :デフォルトの名無しさん:2010/07/23(金) 13:50:58
>>296
% 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).


317 :デフォルトの名無しさん:2010/07/23(金) 13:52:28
>>296
% 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).


318 :デフォルトの名無しさん:2010/07/23(金) 13:56:07
>>296
% 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.


319 :デフォルトの名無しさん:2010/07/23(金) 14:04:39
>>313->>318 Prologのプログラミングではほとんどの場合数個のプログラムパターンが選択可能だ。この点Pythonなどとはかなり性質のことなったプログラム言語だといえよう。

320 :デフォルトの名無しさん:2010/07/23(金) 18:22:30
http://pc12.2ch.net/test/read.cgi/tech/1276810079/678
# [1] 授業単元:C言語
# [2] 問題文(含コード&リンク):
# 以下の機能を持つプログラムを作ること。
#
# -1から100の数字の中から素数を抽出する (配列に直接数字を指定することは不
# 可)
# -抽出した素数を大きい順(降順)にソートする
# -ソートした素数を1行につき5個表示する(6個目以降は次の行に表示する)
#
# 但し、以下の4つの機能を使ったプログラムにすること。
# -サブ関数
# -配列
# -if文
# -for文
#
# 以下の点に関して工夫をした場合は加点の対象とする
#
# -素数の計算時間の低減
# -見つけた素数の数のカウント
# -ソートのアルゴリズム高速化
# -実行時間の表示


321 :デフォルトの名無しさん:2010/07/23(金) 18:23:58
http://pc12.2ch.net/test/read.cgi/tech/1276810079/684
# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):
# 二つのint型整数の小さい方の値を返す関数
#  int i_minof(int x, int y){ /* ... */}
# を作成せよ。
#



322 :デフォルトの名無しさん:2010/07/23(金) 18:24:47
http://pc12.2ch.net/test/read.cgi/tech/1276810079/685
# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):
# 下に示すように、整数値を読み込んで、その値を0までカウントダウン
# しながら表示するプログラムを作成せよ。なお、負の値を読み込んだ時は
# 何も表示しない(改行も表示せず終了する)ようにせよ。
# =====
# 整数を入力してください:9
# 9 8 7 6 5 4 3 2 1 0
# =====


323 :デフォルトの名無しさん:2010/07/23(金) 18:30:15
http://pc12.2ch.net/test/read.cgi/tech/1267796762/262
# 【 課題 】自動販売機プログラム(レイアウトは自由)
# 【 形態 】 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. 商品の在庫が無くなった場合には、商品の在庫が無くなった旨を表示し、購入不
可とする。



324 :デフォルトの名無しさん:2010/07/23(金) 20:26:49
http://pc12.2ch.net/test/read.cgi/tech/1276810079/694
# [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
#



325 :デフォルトの名無しさん:2010/07/23(金) 20:29:42
http://pc12.2ch.net/test/read.cgi/tech/1276810079/696
# 【質問テンプレ】
# [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を求める
#



326 :デフォルトの名無しさん:2010/07/23(金) 20:37:16
http://pc12.2ch.net/test/read.cgi/tech/1276810079/756
# [1] 授業単元: ソフトウェア信頼性
# [2] 問題文(含コード&リンク):
# 問題文+自分で作った部分は以下のファイルに
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10810.txt
#
# //単語の集合からなるファイルを読み込んで、辞書順に並べ替えて出力するプログラムを作成しなさい。
# //(*) ファイルは一行に一単語であり、すなわち単語間は改行コードで区切られる。




327 :デフォルトの名無しさん:2010/07/23(金) 20:44:30
int 型の配列に読み込んだ全要素を逆順に並べ替える
# プログラムを作成せよ
#
# 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


328 :デフォルトの名無しさん:2010/07/23(金) 20:45:56
http://pc12.2ch.net/test/read.cgi/tech/1276810079/754
#
# 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



329 :デフォルトの名無しさん:2010/07/23(金) 20:46:55
http://pc12.2ch.net/test/read.cgi/tech/1276810079/754
#
# 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



330 :デフォルトの名無しさん:2010/07/23(金) 20:49:11
http://pc12.2ch.net/test/read.cgi/tech/1276810079/758
# [1] 授業単元:プログラミング実習
# [2] 問題文(含コード&リンク):53!を正確に計算して出力するjavaプログラムを作成せよ。
# ここでは1桁分の数を記憶するオブジェクトを多数作りそれらの協調で計算を進めること。
#



331 :デフォルトの名無しさん:2010/07/23(金) 20:50:23
http://pc12.2ch.net/test/read.cgi/tech/1276810079/778
# 【質問テンプレ】
# [1] 授業単元:画像処理プログラミング
# [2] 問題文(含コード&リンク):http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10814.zip
# 画像を8×8 画素のブロックに分割します。各ブロック毎に平均値を求めます。
# ※average という関数を作ってブロック内の平均値を求めても良いでしょう。
# ブロック内の画素すべての輝度値を平均値で置き換えます。どのような画像が得られますか?
# 8×8画素のブロックサイズでモザイク処理を行うプログラムと、モザイク処理後の画像を提出しなさい。
#



332 :デフォルトの名無しさん:2010/07/23(金) 20:52:40
http://pc12.2ch.net/test/read.cgi/tech/1276810079/781
# [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α



333 :デフォルトの名無しさん:2010/07/23(金) 20:54:24
ttp://pc12.2ch.net/test/read.cgi/tech/1276810079/781
# [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%



334 :デフォルトの名無しさん:2010/07/23(金) 20:55:31
http://pc12.2ch.net/test/read.cgi/tech/1276810079/781
# [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%未満→やせすぎ


335 :デフォルトの名無しさん:2010/07/23(金) 20:56:42
http://pc12.2ch.net/test/read.cgi/tech/1276810079/781
# [1] 授業単元:プログラミングC
# [2] 問題文(含コード&リンク):http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10816.txt
# いっぱいあります。
#
# 4.1
# 入力された値が偶数だったら「even」、奇数だったら「odd」と出力する処理を10回繰り返すプログラムをwhile文、for文を使ってそれぞれ作成せよ。


336 :デフォルトの名無しさん:2010/07/23(金) 20:58:22
http://pc12.2ch.net/test/read.cgi/tech/1276810079/781
# [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)を求めるプログラムを作成せよ。


337 :デフォルトの名無しさん:2010/07/23(金) 20:59:29
http://pc12.2ch.net/test/read.cgi/tech/1276810079/781
# [1] 授業単元:プログラミングC
# [2] 問題文(含コード&リンク):http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10816.txt
# いっぱいあります。
#
# 4.7
# 自然数nを乳力すると、nの約数をすべて表示するプログラムを作成せよ。
# (n以下の自然数について約数かどうかチェックする)



338 :デフォルトの名無しさん:2010/07/24(土) 04:05:21
http://pc12.2ch.net/test/read.cgi/tech/1267796762/367
# 組織のある部門にある能力を持つ人間を追加したり削除したりすることで,その組織全体もしくは部分的な部門の能力を計算するシステムを構築せよ.
# このシステムによって,組織内のニーズにあった人員配置を行なう支援をできると期待できる.
# 基本的にこのシステムは以下の機能を最低限有しなければならない.
#
# 1. 登録すべき部門や副部門を指定する.
# 2. 人物の名前(文字列),資格数(整数),勤務経験年数(整数),年齢を入力する.
# 3. もし,既に十分な人数がシステムに登録済の場合,そのデータと,前段階で入力された資格数,勤務経験年数,年齢に基づき,この人物の能力の値(high, middle or low)をシステムが予測し表示する.
# 4. システム(プログラム)を停止した際,現在,保持しているデータを保存できる.
# 5. システム(プログラム)を起動した際,既存のデータがあれば,それを読み込める.

#
# 単純化のため,能力は人物,組織どちらも金額(円)で表現されているとする.
# 人物も単純化のため,その氏名で区別することとし,同一氏名の人物は組織に追加できなくてもよい.
# 組織の中にある部門は階層的な構造となっており,その階層の深さは均一でない.
# 例えば「/秘書課/」という部門は組織の直下に位置するが,「/営業部/関東営業部/」,「/開発部/半導体課/」,「/研究部/先端科学課/タイムマシン開発グループ/」等2もしは3階層の場合もある.
# 尚,階層の深さ制限は無いものとする.
# ある部門の下に人物と副部門が同時に配置される場合もある.
# 例えば,営業部部長の田中さんは「/営業部/田中」と表現できるが,関東営業部に属する山田さんは,「/営業部/関東営業部/山田」となる.
# 尚,本システムでは日本語名は扱えなくてもよい.


339 :デフォルトの名無しさん:2010/07/24(土) 05:48:26
http://pc12.2ch.net/test/read.cgi/tech/1279286575/398
# [1] 授業単元:OS
# [2] 問題文(含コード&リンク):サーバクライアント通信をFIFOで作る
# – 一つのサーバプロセスが,
# • FIFOを作る.
# • データを待つ.
# • SIGINTを受信したら,FIFOを削除してから終了する.
# – 複数のクライアントプロセスが,サーバにリクエストを送る.
# – 文字列を送るクライアントプロセスが複数(forkすればおk).
# – サーバプロセスは単に表示する
#



340 :デフォルトの名無しさん:2010/07/24(土) 05:51:03
http://pc12.2ch.net/test/read.cgi/tech/1279286575/393
# [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のところにスペクトルが出るようなものを作りたいです。


341 :デフォルトの名無しさん:2010/07/24(土) 05:55:19
http://pc12.2ch.net/test/read.cgi/tech/1276810079/784
# [1] 授業単元:プログラミング演習III
# [2] 問題文(含コード&リンク):
# 以下の機能を含む整数版秀丸エディタ用のDLLを作成せよ。
# ・返り値がint型で、パラメータ(整数)を渡すと、「整数*5」の結果を返す。
# ・返り値がchar型で、パラメータ(文字列)を渡すと、文字列の先頭にHello!!を付け
た「Hello!!+文字列」の結果を返す。


342 :デフォルトの名無しさん:2010/07/24(土) 05:56:36
http://pc12.2ch.net/test/read.cgi/tech/1276810079/786
# コンピュータ基礎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 の場合は「優秀」
# と表示するプログラムを作りなさい。


343 :デフォルトの名無しさん:2010/07/24(土) 05:58:21
http://pc12.2ch.net/test/read.cgi/tech/1276810079/786
# コンピュータ基礎1
# OS windows7 32bit
# gcc2.9.5
# 言語 c
# 期限 なし
# 課題でいくつかc言語の課題が出て、本当に簡単なのは何とか解いたのですが2つほど分からないものがあったので
# よろしければ教えていただきたいです。
#
# キーボードから1つの実数値xを入力し、絶対値を表示するプログラムを作りなさい
#



344 :デフォルトの名無しさん:2010/07/24(土) 06:02:08
http://pc12.2ch.net/test/read.cgi/tech/1276810079/788
# [1] 授業単元:プログラミング演習I
# [2] 問題文(含コード&リンク):
# 課題
# (1000以下の完全数)正整数kが等式
#    k=(kの約数の内、k以外のものの総和)
# を満たす時、kは完全数であるという。たとえば、6の約数は 1,2,3,6の4個であり、6=1+2+3であるため、6は完全数である。1000以下の完全数をすべて出力するプログラムを作れ。
#



345 :デフォルトの名無しさん:2010/07/24(土) 06:03:12
http://pc12.2ch.net/test/read.cgi/tech/1276810079/790
# 以下の入力をして、これを二次元配列に代入していく方法がわかりません。
# 当方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に代入する。


346 :デフォルトの名無しさん:2010/07/24(土) 06:04:58
http://pc12.2ch.net/test/read.cgi/tech/1276810079/801
# 【質問テンプレ】
# [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:サンプリング周波数)


347 :デフォルトの名無しさん:2010/07/24(土) 06:06:14
http://pc12.2ch.net/test/read.cgi/tech/1276810079/802
# [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コマンドの投入を繰り返すことによって、動作を継続していることも確認する。



348 :デフォルトの名無しさん:2010/07/24(土) 06:19:23
>>342
% 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,_判定]).


349 :デフォルトの名無しさん:2010/07/24(土) 06:21:10
>>343
% 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の絶対値]).



350 :デフォルトの名無しさん:2010/07/24(土) 06:39:36
http://pc12.2ch.net/test/read.cgi/tech/1260922392/47
# 1個の自然数nを適当決めて、nチームが参加する
# リーグ戦の全試合日程を表示するプログラムを書きなさい



351 :デフォルトの名無しさん:2010/07/24(土) 06:43:35
>>325
% Prolog

'2.71 < (1 + 1/N) ^ N < 2.72 を満たす最小の整数Nを求める'(N) :-
    for(1,N,maxint),((1 + 1/N) ^ N) > 2.71,!.


352 :デフォルトの名無しさん:2010/07/24(土) 06:52:07
>>320
% 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]).


353 :デフォルトの名無しさん:2010/07/24(土) 09:25:50
http://pc12.2ch.net/test/read.cgi/tech/1276810079/811
# [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



354 :デフォルトの名無しさん:2010/07/24(土) 09:29:12
http://pc12.2ch.net/test/read.cgi/tech/1276810079/819
#
# 整数を各要素の値とする、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.
# %



355 :デフォルトの名無しさん:2010/07/24(土) 09:32:09
http://pc12.2ch.net/test/read.cgi/tech/1276810079/815
# [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度に取り込み、最初の空白までを名前とみなし、次の空白までを身長とみなし、
# 次に改行までを血液型をみなせばよい。これらを別々の文字列として、必要に応じて整数や浮動小数点数に変換し、構造体のメンバに設定すること。
#
# ヒント: ひとつの構造体の各メンバの値を表示する関数に構造体を引渡すことを繰り返えせばよい。


356 :デフォルトの名無しさん:2010/07/24(土) 09:34:03
http://pc12.2ch.net/test/read.cgi/tech/1276810079/820
# [1] C言語プログラミング演習
# [2] 問題文(含コード&リンク
# 標準入力から正の整数値を読み込み,0が入力されたらそれらの整数を小さい順に表示するプログラムを作成せよ.
#
# 以下のような処理の流れでプログラムを作成すること。
#
# 数字を読み込むごとに, それまでに入力された数値が格納された配列の最後の要素から, 先頭に向かって順に大小の比較を行う. これにより、読み込んだ数字の方が入るべき位置がわかる.
# 読み込んだ数字が入るべき箇所を空けるために、 既に記憶されている配列の要素のうち、 この数字よりも大きな数字をひとつ後ろにずらす。 空いた箇所に読み込んだ数字を代入する.
# 次に入力される数字の処理へ移る.
#
# % ./ordering
# 正整数: 17
# 正整数: 3
# 正整数: 9
# 正整数: 4
# 正整数: 0
# 入力された整数は小さい順に 0, 3, 4, 9, 17 です.



357 :デフォルトの名無しさん:2010/07/24(土) 09:36:22
http://pc12.2ch.net/test/read.cgi/tech/1276810079/821
# [1] C言語プログラミング演習
# [2] 問題文(含コード&リンク
# 文字列yを文字列xの最後に連結する関数stringcat(char [], char [])を作成せよ.この関数を用いて、入力された2つの文字列を連結するプログラムを作成せよ。
#
# 注意: stringcat()を呼び出すときは,連結後の文字列がxの配列長を超えないように注意すること.
#
#
# % ./catenate
# 文字列x (20字まで)? linux
# 文字列y (20字まで)? kadai
# 連結後のx: linuxkadai ←全部で20字以内なので連結可能
# 20字を超える場合は連結不可能とする


358 :デフォルトの名無しさん:2010/07/24(土) 09:37:46
http://pc12.2ch.net/test/read.cgi/tech/1276810079/822
# [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"は含まれません.


359 :デフォルトの名無しさん:2010/07/24(土) 09:39:12
http://pc12.2ch.net/test/read.cgi/tech/1276810079/837
# [1] 授業単元:プログラミング
# [2] 問題文
# 二つの任意の正の整数の乗算(*)を、シフト演算の組合わせと除算(/)と加算(+)のみで解くプログラムを作成しなさい。
#
# ヒント:例えば、123 x 13は以下のように計算できる。
#
# 123 x 13 = 123 x (2^3 + 2^2 + 1)
# = 123 x 2^3 + 123 x 2^2 + 123
#


360 :デフォルトの名無しさん:2010/07/24(土) 09:40:21
http://pc12.2ch.net/test/read.cgi/tech/1276810079/851
# 実数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関数を使う。
# これお願いします。
#



361 :デフォルトの名無しさん:2010/07/24(土) 09:41:41
http://pc12.2ch.net/test/read.cgi/tech/1267796762/288
# 【 課題 】入力したテキストファイルを行毎にUTF-8の文字コードに変換してファイルに出力するプログラムを作成せよ
# 【 形態 】Javaアプリケーション(main()で開始)
# 【 GUI  】制限なし
# 【 期限 】7/16
# 【 Ver  】 1.6.0_20
# 【 補足 】
# あいうえお
# アイウエオ
#
# という2行のファイルを入力させた場合
#
# E38182E38184E38186E38188E3818A
# E382A2E382A4E382A6E382A8E382AA
#
# というファイルを出力させたいです。よろしくお願いします。


362 :デフォルトの名無しさん:2010/07/24(土) 09:47:26
http://pc12.2ch.net/test/read.cgi/tech/1276810079/833
# 【質問テンプレ】
# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):
# リストへの要素の追加を行うプログラムで、以下のプログラムを完成させよ。
# http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10828.txt
#
# リストの先頭要素
# リストの初期化
# 空のリストにデータを追加
# リストの内容を表示
# リストの先頭にデータを一つ追加
# リストの内容を表示
# リストの途中にデータを一つ追加
# リストの内容を表示
# リストの最後にデータを一つ追加
# リストの内容を表示
# データの削除
# リストの印刷
# リストの各要素を解放



363 :デフォルトの名無しさん:2010/07/24(土) 09:48:49
http://pc12.2ch.net/test/read.cgi/tech/1276810079/840
# [1] 授業単元:プログラミング演習I
# [2] 問題文(含コード&リンク):
# 課題
# (1000以下の完全数)正整数kが等式
#    k=(kの約数の内、k以外のものの総和)
# を満たす時、kは完全数であるという。たとえば、6の約数は 1,2,3,6の4個であり、6=1+2+3であるため、6は完全数である。1000以下の完全数をすべて出力するJavaプログラムを作れ。
#



364 :デフォルトの名無しさん:2010/07/24(土) 09:49:59
http://pc12.2ch.net/test/read.cgi/tech/1276810079/856
# C(英文解析プログラム)
#
# 1.標準入力から単語を読み込み、単語を登録する。("EOR"という単語が入力されるまで繰り返す)
# 2.その後、標準入力から指定された単語に対して、その単語が登録されているか否かを出力する。
#
# /*****要実装******/の部分を実装して上の動作をするプログラムに完成させてください。
#
# http://ime.nu/codepad.org/npgTugA0
#



365 :デフォルトの名無しさん:2010/07/24(土) 10:07:52
>>363
% Prolog (その一)

'1000以下の完全数をすべて出力する' :-
    for(1,N,1000),
    完全数(N),
    write_formatted('%t\n',[N]),
    N = 1000,!.
'1000以下の完全数をすべて出力する'.


366 :デフォルトの名無しさん:2010/07/24(土) 10:10:29
>>363
% 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,!.


367 :デフォルトの名無しさん:2010/07/24(土) 10:12:51
http://pc12.2ch.net/test/read.cgi/tech/1276810079/869
# お手上げなので助けてください。
#
# [1] 授業単元:応用プログラミング
# [2] 問題文(含コード&リンク): http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10833.txt
#
# 問題1
# 入力画像(2値画像)中の、対象領域(ある値を持つピクセルの集合)の境界線を求めるプログラムを作成せよ。
# 求めた境界線は、入力画像をコピーした画像に描き、画像として保存せよ。
# 色をつけて境界線を描くこと。
#



368 :デフォルトの名無しさん:2010/07/24(土) 10:14:11
http://pc12.2ch.net/test/read.cgi/tech/1276810079/869
# お手上げなので助けてください。
#
# [1] 授業単元:応用プログラミング
# [2] 問題文(含コード&リンク): http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10833.txt
#
# 問題2
# 入力画像(2値画像)中の、対象領域(ある値を持つピクセルの集合)に対してラベリング処理(8連結)を行い、
# 各集合(連結成分)に番号を付けるプログラムを作成せよ。
# 連結成分の番号は、入力画像をコピーした画像に描き、画像として保存せよ。
# 色をつけて番号を描くこと。


369 :デフォルトの名無しさん:2010/07/24(土) 10:15:40
http://pc12.2ch.net/test/read.cgi/tech/1276810079/869
# お手上げなので助けてください。
#
# [1] 授業単元:応用プログラミング
# [2] 問題文(含コード&リンク): http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10833.txt
#
# 問題3
# 連結成分ごとに特徴パラメータ(面積、重心、周囲長、円形度、フラクタル次元)の値を調べる機能を付け加え、
# ある特徴パラメータ値をもつ連結成分だけを抜き出す(または消す)プログラムを作成せよ。
# 処理結果は、画像として保存せよ。
# また、特徴パラメータのいずれかをキーとして、連結成分の情報をソート(面積が大きい順、重心が原点に近い順、
# 周囲長が長い順、円形度が大きい順、フラクタル次元が大きい順)し、情報(番号、面積、重心、周囲長、
# 円形度、フラクタル次元)をファイル保存する機能を追加せよ。
#


370 :デフォルトの名無しさん:2010/07/24(土) 10:17:14
http://pc12.2ch.net/test/read.cgi/tech/1276810079/870
# プロギラミング技術は苦手なので教えてください。
# 演習5-1
#
# テキストファイルの各行の最後には,復帰・改行を示すASCIIコードが付加されて
# いる.即ち,ファイルのもつ行数は復帰・改行の数をカウントすることによって
# 計算できる.
#
# 上記性質を利用して,テキストファイルの行数を計算するプログラムを開発せよ.
# 但し,復帰・改行に対応するASCIIコードは10である.
#
# テキストファイルの読み込み方法は講義資料でも解説したように,./a.out < hoge.txtとすればよい.
#



371 :デフォルトの名無しさん:2010/07/24(土) 10:19:13
http://pc12.2ch.net/test/read.cgi/tech/1276810079/872
# 【質問テンプレ】
# [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
# * *
# *** ***
# ***** *****
# ******* *******
#  *********



372 :デフォルトの名無しさん:2010/07/24(土) 10:20:18
http://pc12.2ch.net/test/read.cgi/tech/1276810079/878
# n個の文字列を読み込んだあと,その文字列を反転させるプログラムを作成せよ.ここで"反転"とは,例えば,"IKUNO"という文字列を入力した場合,出力を "ONUKI"と出力するものである.
#
# 【実行例】
#
# nを入力せよ:2
# 1個目の文字列を入力せよ:nagata
# 反転した文字列は:atagan
# 2個目の文字列を入力せよ:ikuno
# 反転した文字列は:onuki
#



373 :デフォルトの名無しさん:2010/07/24(土) 10:21:38
http://pc12.2ch.net/test/read.cgi/tech/1267796762/292
# お願いします…
# 【 課題 】 シフトJISコードが入っている int cをJAVAで使われてるユニコードに変換しなさい
#



374 :デフォルトの名無しさん:2010/07/24(土) 10:23:17
http://pc12.2ch.net/test/read.cgi/tech/1276810079/880
# [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とする(キーボードから入力する値はこの倍数とする)。
#


375 :デフォルトの名無しさん:2010/07/24(土) 10:24:22
http://pc12.2ch.net/test/read.cgi/tech/1276810079/881
# [1] 授業単元:プログラミング演習I
# [2] 問題文(含コード&リンク):
# 課題
# (1000以下の完全数)正整数kが等式
#    k=(kの約数の内、k以外のものの総和)
# を満たす時、kは完全数であるという。たとえば、6の約数は 1,2,3,6の4個であり、6=1+2+3であるため、6は完全数である。1000以下の完全数をすべて出力するJavaプログラムを作れ。
#



376 :デフォルトの名無しさん:2010/07/24(土) 10:25:25
http://pc12.2ch.net/test/read.cgi/tech/1276810079/887
# [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
#



377 :デフォルトの名無しさん:2010/07/24(土) 10:26:59
>>376
% 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 = [].


378 :デフォルトの名無しさん:2010/07/24(土) 10:30:07
http://pc12.2ch.net/test/read.cgi/tech/1276810079/890
# [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"、それ以外はパス)
# ・上記以外の変数については必要に応じて自由な名前で用いること


379 :デフォルトの名無しさん:2010/07/24(土) 10:32:15
http://pc12.2ch.net/test/read.cgi/tech/1276810079/916
# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):県から国、及び国から県に換算する関数を作成し、

# main関数でキーボードから数値とその値が国であるか県であるかを入力し、県ならば国に、
# 国ならば県に換算した値を小数点以下1桁までで出力するプログラムを作成しなさい。
# 値を引数とする関数で計算させ(関数名は nation とする)、出力は main関数で行うこと。
#
# 関係は以下の通り
# 県(A):(B+2)*5 国(B):A/3+25
# <例>
# 数値を入力してください: 75
# 75 が「県」なら "A" を「国」なら "B" を入力してください: B
#
# 県 75.0 = 国 50.0
#


380 :デフォルトの名無しさん:2010/07/24(土) 10:35:42
>>379
% 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]),!.



381 :デフォルトの名無しさん:2010/07/24(土) 10:37:23
http://pc12.2ch.net/test/read.cgi/tech/1276810079/918
# [1] C言語プログラミング演習
# [2] 問題文(含コード&リンク
# char型配列xに格納された文字列を1文字ごとに空白を空けて逆順に出力する関数reverse_array(char [])を作成せよ.変換後の文字列の長さがもとの文字列よりも長くなっているので、長さの検査が必要であることに注意せよ。
# この関数を用いて、入力された文字列を並び替え、その結果を印字するプログラムを作成せよ。
#
#
# % ./reverse
# 処理前の文字列 (64字まで)? kimatutest
# 関数reverse_array()を呼び出しました
# 処理後の文字列 "t s e t u t a m i k"
#


382 :デフォルトの名無しさん:2010/07/24(土) 10:40:04
>>381
% 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).


383 :デフォルトの名無しさん:2010/07/24(土) 10:41:40
http://pc12.2ch.net/test/read.cgi/tech/1276810079/919
# [1] C言語プログラミング演習
# [2] 問題文(含コード&リンク
# char型配列xに格納された英単語からなる文字列が回文(逆から読んでも同じ)であるかをチェックする関数anagram(char [])を作成せよ.ただし,チェック対象の文字列はソースコードのmain()関数内で記述するものとする(キーボードから入力しない).
#
#
# % ./checkAnagaram
# 文字列 "spainyuusyou" は回文ではありません.
#
# % ./checkAnagaram
# 文字列 "Was it a cat I saw?" は回文です.
#
# ヒント: 回文のルールは以下の通り.
#
# (i)
# 前から読んでも後ろから読んでも同じアルファベットの並びとな る,
# (ii)
# 記号「?」,「.」,「,」,「-」,「 」(空白)は無視する,
# (iii)
# 大文字と小文字は区別をしない.


384 :デフォルトの名無しさん:2010/07/24(土) 10:43:00
>>383
% 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),!.


385 :デフォルトの名無しさん:2010/07/24(土) 10:44:48
http://pc12.2ch.net/test/read.cgi/tech/1276810079/920
# [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 円
# %



386 :デフォルトの名無しさん:2010/07/24(土) 10:46:19
>>385
% 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',[_氏名,_口座番号,_預金残高]),!.


387 :デフォルトの名無しさん:2010/07/24(土) 10:48:44
http://pc12.2ch.net/test/read.cgi/tech/1276810079/922
# [2] 問題文(含コード&リンク
# <<920の課題を基に「引出し」の機能を追加せよ.具体的には,
# 口座番号の入力,暗証番号の入力と確認,支払額の入力,預金残高の更新をする
# プログラムを追加すればよい.機能の選択は,起動時できるようにすること.
#
# % ./withdraw
# [0]終了 [1]残高表示 [2]引出し: 2
# 口座番号を入力してください: 5000 ← 存在しない
# 暗証番号を入力してください: 0123
# 口座番号または暗証番号が間違っています.
# 口座番号を入力してください: 9012
# 暗証番号を入力してください: 5555 ← 間違っている
# 口座番号または暗証番号が間違っています.
# 口座番号を入力してください: 9012
# 暗証番号を入力してください: 0123
# 引出し額を入力してください: 1000000 ← 預金額より多い
# 預金額が不足しています.
# 口座番号を入力してください: 9012
# 暗証番号を入力してください: 0123
# 引出し額を入力してください: 20000
# ありがとうございました.残高は 518600 円です.
# [0]終了 [1]残高表示 [2]引出し: 2 ← 始めに戻る



388 :デフォルトの名無しさん:2010/07/24(土) 10:51:18
>>387
% Prolog (その一)

'「引出し」の機能を追加せよ.具体的には,口座番号の入力,暗証番号の入力と確認,支払額の入力,預金残高の更新をするプログラムを追加すればよい.'(_引き出し_または_口座残高表示) :-
    「引出し」または「口座残高表示」(_引き出し_または_口座残高表示).

「引出し」または「預金残高表示」(引き出し) :-
    repeat,
    口座番号の入力(_口座番号),
    暗証番号の入力と確認(_口座番号),
    支払い(_口座番号),!.

「引出し」または「預金残高表示」(預金残高表示) :-
    repeat,
    口座番号の入力(_口座番号),
    暗証番号の入力と確認(_口座番号),
    「預金残高表示」(_口座番号),!.

支払い(_口座番号,_預金残高1,_引出額) :-
    _引出額 > _預金残高1,
    write('口座残高が不足です\n御支払いできません\n'),!.

支払い(_口座番号,_預金残高1,_引出額) :-
    _引出額 =< _預金残高,
    支払いオペレーション,
    預金残高の更新(_口座番号,_引出額,_預金残高),
    預金残高を画面へ出力する(_口座番号),!.


389 :デフォルトの名無しさん:2010/07/24(土) 10:54:14
>>387
% 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.


390 :デフォルトの名無しさん:2010/07/24(土) 10:55:17
>>387
% Prolog (その三)

支払額の入力(_引出額) :-
    write('引出額を入力してください : '),
    get_integer(_引出額),

預金残高の更新(_口座番号,_引出額,_預金残高) :-
    retract(預金口座(_氏名,_口座番号,_預金残高1)),
    _預金残高 is _預金残高1 - _引出額,
    assertz(預金口座(_氏名,_口座番号,_預金残高)),!.

預金残高を画面へ出力する :-
    ひとり分の預金残高を表示する(_口座番号),!.

支払いオペレーション.


391 :デフォルトの名無しさん:2010/07/24(土) 10:56:58
http://pc12.2ch.net/test/read.cgi/tech/1276810079/936
# 問題
#
# 複数の文字列を読み込み,さらに,それらの文字列を繋ぎ合わせる順番を入力し結果を出力するプログラムを作成せよ.
#
# 【実行例】
#
# 何個の文字列を入力しますか?:4
# 入力文字列[1]:Computer
# 入力文字列[2]:Science
# 入力文字列[3]:Tarou
# 入力文字列[4]:Tanaka
#
# 繋ぎ合わせる順番:
# 2
# 4
# 3
# 1
#
# 結果:ScienceTanakaTarouComputer
#



392 :デフォルトの名無しさん:2010/07/24(土) 10:58:25
>>391
% 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]).


393 :デフォルトの名無しさん:2010/07/24(土) 10:59:31
http://pc12.2ch.net/test/read.cgi/tech/1276810079/937
# この問題ができません。誰かお願いします。
#
# 入力したDNA塩基配列中にある塩基 t, c, a, gそれぞれの個数をカウントするプログラムを作成せよ.
# 【実行例】
#
# % ./a.out
# tataatccg ← 入力し,リターンを押して ^D
# Thymine (t) : 3
# Cytosine (c) : 2
# Adenine (a) : 3
# Guanine (g) : 1
# %



394 :デフォルトの名無しさん:2010/07/24(土) 11:00:49
>>393
% 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]).


395 :デフォルトの名無しさん:2010/07/24(土) 11:07:29
http://pc12.2ch.net/test/read.cgi/tech/1276810079/943
# 入力したDNA塩基配列中に,atgという並びがいくつあるか調べるプログラムを作成せよ.但し,入力には t, c, a, g以外の文字も入っている.塩基以外の文字は無視すること.
# 【実行例】
#
# % ./a.out
# 1gattatgtga
# 11tgccgatatc
# 21gatatgattc
# (ここで ^D を押す)
# #ATG is 3
# %



396 :デフォルトの名無しさん:2010/07/24(土) 11:09:07
>>395
% 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という並び(_,[]).


397 :デフォルトの名無しさん:2010/07/24(土) 11:10:36
http://pc12.2ch.net/test/read.cgi/tech/1276810079/959
# [1] 授業単元:C++実習
# [2] 問題文(含コード&リンク): 文字列*bufからIPアドレスを抽出し、int ip[4]にそれぞれ入れよ。(最初に抽出できたものだけで良い)
#



398 :デフォルトの名無しさん:2010/07/24(土) 11:12:40
http://pc12.2ch.net/test/read.cgi/tech/1276873238/295
# # 問題文(含コード&リンク):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]ホームページからデータを追加、検索できるようにする。
# 表示結果には、学籍番号、名前、国語、数学、理科、合計を表示させる
#
#



399 :デフォルトの名無しさん:2010/07/24(土) 11:15:41
>>397
% Prolog (その一)

学籍番号による検索(_学籍番号) :-
    seiseki(_学籍番号,_名前,_国語,_数学,_理科),
    write_formatted('%t,%t,%t,%t,%t\n',[_学籍番号,_名前,_国語,_数学,_理科] .

名前による検索(_名前) :-
    seiseki(_学籍番号,_名前,_国語,_数学,_理科),
    write_formatted('%t,%t,%t,%t,%t\n',[_学籍番号,_名前,_国語,_数学,_理科]).

国語の成績による検索(_国語,_国語成績) :-
    seiseki(_学籍番号,_名前,_国語,_数学,_理科),
    _国語成績.

数学の成績による検索(_数学,_数学成績) :-
    seiseki(_学籍番号,_名前,_数学,_数学,_理科),
    _数学成績.

理科の成績による検索(_理科,_理科成績) :-
    seiseki(_学籍番号,_名前,_理科,_数学,_理科),
    _理科成績.


400 :デフォルトの名無しさん:2010/07/24(土) 11:18:39
>>399 >>397ではなくて >>398でした
% Prolog (その二)

成績の追加(_学籍番号,_名前,_国語,_数学,_理科) :-
    学籍番号(_学籍番号),
    名前(_名前),
    国語(_国語),
    数学(_数学),
    理科(_理科),
    assertz(seiseki(_学籍番号,_名前,_国語,_数学,_理科)).

成績の変更(_学籍番号,_名前,_国語,_数学,_理科) :-
    学籍番号(_学籍番号),
    名前(_名前),
    国語(_国語),
    数学(_数学),
    理科(_理科),
    retract(seiseki(_学籍番号,_,_,_,_)),
    assertz(seiseki(_学籍番号,_名前,_国語,_数学,_理科)).

成績の削除(_学籍番号) :-
    retract(seiseki(_学籍番号,_,_,_,_)).



401 :デフォルトの名無しさん:2010/07/24(土) 11:19:53
>>398
% 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(_理科).


402 :デフォルトの名無しさん:2010/07/24(土) 11:22:21
http://pc12.2ch.net/test/read.cgi/tech/1267796762/302
# 【 課題 】10個の国旗を表示するプログラム(日本、アメリカ、イギリス、フランス、ジャマイカ、ベトナム、セネガル、スウェーデン、アイスランド、南アフリカ)
# 指定された国旗を画面に表示する。少なくても8種類以上。 国旗の指定にはマウスでメニューのボタンとかを指定して、選択させること。
# 国旗は図形として描くこと。画像を貼り付けたりしてはならない。
# 【 形態 】1. Javaアプリケーション(main()で開始)
# 【 GUI  】4. 制限なし
# 【 期限 】7月22日までに
# 【 Ver  】1.6.0
# 【 補足 】国旗はそこまで高い完成度は求められない?と思います。


403 :デフォルトの名無しさん:2010/07/24(土) 11:23:13
http://pc12.2ch.net/test/read.cgi/tech/1267796762/308
# 【 課題 】なんでもいいからjavaでつくれとのことで
#       http://ime.nu/lifescape.seesaa.net/article/104001220.html
#       みたいなみかか変換作りたいです
# 【 形態 】Applet
# 【 期限 】7月19日
# 【 Ver  】1.6.0_20-b02
# 【 補足 】いまさらみかかかと思うかもしれませんがよろしくお願いしやす



404 :デフォルトの名無しさん:2010/07/24(土) 11:25:06
http://pc12.2ch.net/test/read.cgi/tech/1267796762/311
# 【 課題 】1.ビンゴカードをPlayerの人数分作成できる。
# 2.1〜75の数字が書かれた玉をランダムに取り出せる。
#       3.カードにその数字があるかをチェックし、あれば数字の枠にマークすることができる。
#       4.リーチ、ビンゴ時に表示することができる。
#       以上の機能を備えたビンゴゲームシュミレーターを作成しなさい。
# 【 補足 】カードは1列目1〜15、2列目は16〜30……5列目で61〜75、というよう
な形が指定されています。
#       Freeの有無は指定なしです。
#       丸投げ申し訳ないです。長く複雑かもしれませんが、どうぞよろしくお願いします。
# 初心者故、できましたら軽い注釈を付けてくれると幸いです。


405 :デフォルトの名無しさん:2010/07/24(土) 11:27:34
>>403
% 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.


406 :デフォルトの名無しさん:2010/07/24(土) 11:31:57
http://pc12.2ch.net/test/read.cgi/tech/1276810079/956
# [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
#    検索位置 : 検索したい文字はありませんでした


407 :デフォルトの名無しさん:2010/07/24(土) 11:33:52
http://pc12.2ch.net/test/read.cgi/tech/1276810079/956
# 問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


408 :デフォルトの名無しさん:2010/07/24(土) 11:35:25
>>406
% Prolog

検索する文字列を入力し、その位置を返す(_検索対象文字列,_検索文字列,_位置,_検索副文字列) :-
    sub_atom(_検索対象文字列,A,B,C,_検索文字列),
    _位置 is A + 1,
    _残り長さ is B + C,
    sub_atom(_検索対象文字列,A,_残り長さ,_,_検索副文字列),!.
検索する文字列を入力し、その位置を返す(_,_,_,_) :-
    write('検索したい文字はありませんでした\n'),
    !,fail.


409 :デフォルトの名無しさん:2010/07/24(土) 11:36:32
>>407
% Prolog

入力されたデータの平均を求める :-
    findavg(M,(
          for(0,N,maxint),
          write_formatted('整数[%t] ==> ',[N]),
          get_integer(M),
          ( M = -1,!,fail;true)),
        _平均),
    write_formatted('平均 = %t\n',[_平均]).


410 :デフォルトの名無しさん:2010/07/24(土) 13:28:18
http://pc12.2ch.net/test/read.cgi/tech/1279286575/28
# [1] 授業単元:情報処理演習
# [2] 問題文(含コード&リンク):元金a円、利率r円で、何年預けると目標金額b円を超えるか。ただし金利は複利計算によって求めるものとする。


411 :デフォルトの名無しさん:2010/07/24(土) 13:36:37
http://pc12.2ch.net/test/read.cgi/tech/1279286575/55
# [1] 授業単元:プログラミング基礎I
# [2] 問題文(含コード&リンク):
#
# nを読み込み,n個のint型配列を動的に確保,n個の配列はn人の勇者とする.以下仕様に従ったプログラムを作成せよ.
#
# ?それぞれの勇者にヒットポイントを与える.
# ?敵のヒットポイントを与える.
# ?乱数を発生し,誰の攻撃かを決定する.
# ?攻撃をする際に,会心の一撃,普通の攻撃,ミスを乱数で決定する.
# ?相手に与えるダメージを乱数で決定する.
# ?敵の攻撃の場合,何人にどれだけ攻撃をするかを乱数で決定する.
# ?敵のヒットポイントが無くなるか,勇者が全滅したら終了とする.
#



412 :デフォルトの名無しさん:2010/07/24(土) 13:37:50
http://pc12.2ch.net/test/read.cgi/tech/1279286575/56
# n 個のものの中から r 個のものを取り出すときの組合せの数 nCr を求める関数 CCO(int n, int r) を再帰型で作成しなさい.
# ただし, x, y の入力と結果の出力は main関数で行わせること.


413 :デフォルトの名無しさん:2010/07/24(土) 13:38:58
http://pc12.2ch.net/test/read.cgi/tech/1279286575/74
# 【質問テンプレ】
# [1] 授業単元:情報処理課題
# [2] 問題文(含コード&リンク):英語の文章で構成されるテキストファイルに対して、その中に含まれる総文字数と異なる文字ごとの出現回数とを数え上げよ。
# [3.3] 言語:C
# [4] 期限:2010年07月19日00:00まで
# [5] その他の制限:Xcodeを使用しています。読み込むファイルは"/Users/user/Desktop/data.txt"で。
#
# 似たようなプログラムを作った時は「数列を入力し総文字数と数字ごとに出現回数とを数え上げグラフで表示」というような課題で
# 数字だったので0〜9までを表示することが簡単に出来ましたがアルファベットなのでa-zをどう表示したものか
# またstrlenだと半角空白も数えてしまうので総"文字"数とずれてくるのではないかと悩んでいます。
# よろしくお願いします。


414 :デフォルトの名無しさん:2010/07/24(土) 14:18:27
http://pc11.2ch.net/test/read.cgi/db/1274791771/283
# 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で置き換えた値で取り出したいのですが、どう書けばいいでしょうか?


415 :デフォルトの名無しさん:2010/07/24(土) 14:19:39
>>413
% 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).


416 :デフォルトの名無しさん:2010/07/24(土) 14:23:02
>>414 の間違いでした
% 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).


417 :デフォルトの名無しさん:2010/07/24(土) 14:23:53
>>413
% 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).


418 :デフォルトの名無しさん:2010/07/24(土) 14:28:34
http://pc12.2ch.net/test/read.cgi/tech/1274998754/225
# 今迷路を作成しているのですが
# 前、右、左から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;
# }
# ここに進行方向にあるものを表示させたいときってどうしたらいいんでしょうか?


419 :デフォルトの名無しさん:2010/07/24(土) 14:31:44
http://pc12.2ch.net/test/read.cgi/tech/1279286575/98
# [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回まで、入力するチャンスが与えられる。


420 :デフォルトの名無しさん:2010/07/24(土) 14:33:29
http://pc12.2ch.net/test/read.cgi/tech/1279286575/123
# [1] 授業単元:プログラミング基礎I
# [2] 問題文(含コード&リンク):
# 与えられた負でない整数nに対して、
# を求める関数を関数の再帰呼び出しを使って作成せよ。
# 一般的なアルゴリズムは以下のようになる。
#
# % ./factorial
# 負でない整数を入力して下さい: 4
# 24
# % ./factorial
# 負でない整数を入力して下さい: 0
# 1
# %



421 :デフォルトの名無しさん:2010/07/24(土) 14:34:17
http://pc12.2ch.net/test/read.cgi/tech/1279286575/128
# [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"は含まれません.


422 :デフォルトの名無しさん:2010/07/24(土) 14:35:38
http://pc12.2ch.net/test/read.cgi/tech/1279286575/129
# [1] 授業単元:プログラミング基礎I
# [2] 問題文(含コード&リンク):
# 標準入力から正の整数値を読み込み,0が入力されたらそれらの整数を小さい順に表示するプログラムを作成せよ.
#
# 以下のような処理の流れでプログラムを作成すること。
#
# 数字を読み込むごとに, それまでに入力された数値が格納された配列の最後の要素から, 先頭に向かって順に大小の比較を行う. これにより、読み込んだ数字の方が入るべき位置がわかる.
# 読み込んだ数字が入るべき箇所を空けるために、 既に記憶されている配列の要素のうち、 この数字よりも大きな数字をひとつ後ろにずらす。 空いた箇所に読み込んだ数字を代入する.
# 次に入力される数字の処理へ移る.
#
# % ./ordering
# 正整数: 17
# 正整数: 3
# 正整数: 9
# 正整数: 4
# 正整数: 0
# 入力された整数は小さい順に 0, 3, 4, 9, 17 です.


423 :デフォルトの名無しさん:2010/07/24(土) 14:36:37
http://pc12.2ch.net/test/read.cgi/tech/1279286575/130
# [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"は含まれません.


424 :デフォルトの名無しさん:2010/07/24(土) 14:37:48
http://pc12.2ch.net/test/read.cgi/tech/1279286575/131
# 複数の文字列を読み込み,さらに,それらの文字列を繋ぎ合わせる順番を入力し結果を出力するプログラムを作成せよ.
#
# 【実行例】
#
# 何個の文字列を入力しますか?:4
# 入力文字列[1]:AAA
# 入力文字列[2]:BBB
# 入力文字列[3]:CCC
# 入力文字列[4]:DDD
#
# 繋ぎ合わせる順番:
# 2
# 4
# 3
# 1
#
# 結果:BBBDDDCCCAAA



425 :デフォルトの名無しさん:2010/07/24(土) 14:38:47
http://pc12.2ch.net/test/read.cgi/tech/1279286575/132
# [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"


426 :デフォルトの名無しさん:2010/07/24(土) 14:39:46
>>383
使用言語:J

f=:(-:|.)@toupper@(-.&'?.,- ')

f 'spainyuusyou'
0
f 'Was it a cat I saw?'
1

427 :デフォルトの名無しさん:2010/07/24(土) 14:40:59
http://pc12.2ch.net/test/read.cgi/tech/1279286575/133
# [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 禁煙
# --------



428 :デフォルトの名無しさん:2010/07/24(土) 14:42:25
http://pc12.2ch.net/test/read.cgi/tech/1279286575/135
# 入力したDNA塩基配列中にある塩基 t, c, a, gそれぞれの個数をカウントするプログラムを作成せよ.
#
# 【実行例】
# % ./a.out
# tataatccg ← 入力し,リターンを押して ^D
# Thymine (t) : 3
# Cytosine (c) : 2
# Adenine (a) : 3
# Guanine (g) : 1
# %



429 :デフォルトの名無しさん:2010/07/24(土) 14:43:21
http://pc12.2ch.net/test/read.cgi/tech/1279286575/136
#
# それから、禁煙区画(あるいは喫煙区画)が窓側又は通路側ともに満席のときには喫煙区画(禁煙区画)でも良いかどうか乗客に尋ねなければならない。
# 乗客がOKすれば(窓側/通路側の希望はできるだけ尊重した上で)空いている座席を割り当て搭乗券を出力し、しなければ「3時間後に次のフライトがあります。」というメッセージを出力して終了する。


430 :デフォルトの名無しさん:2010/07/24(土) 14:46:30
>>350
使用言語: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|
+---+---+---+

431 :デフォルトの名無しさん:2010/07/24(土) 16:12:49
http://pc12.2ch.net/test/read.cgi/tech/1279286575/408
# [2] 問題文(含コード&リンク):自動座席予約システムの作成せよ。
# その航空会社が持っている小型航空機(座席数:24)のフライトに座席を割り当てるシステムをプログラミングしなければならない。
# この航空機の座席は中央に通路を挟み左右にそれぞれ2座席ずつの列が計6列ある。
# 座席は 1A, 1B, 1C, 1D, ..., 6A, 6B, 6C, 6D で表示され, 1, 2列目が喫煙区画で,A, D が窓側, B, C が通路側を示している。
# このプログラムはまず最初に次の選択メニューを表示する。
#
# 喫煙席を希望する方は ● をタイプしてください.
#
# 禁煙席を希望する方は × をタイプしてください.
#
# 喫煙/禁煙の選択が終わると, 窓側か通路側かの選択を求める。
#
# 窓側を希望する方は ! をタイプしてください.
# 通路側を希望する方は # をタイプしてください.
# もし希望に沿える席がすべて予約済みで割り当てられないときには, 窓側/通路側の希望については無視して割り当てる。
# ただし, 「窓側(あるいは通路側)はすでに満席のため通路側(窓側)で予約します」というメッセージを出力し, 以下の
# ように座席番号と喫煙席/禁煙席の区分が書かれた搭乗券を(この課題では画面上に)出力する。
# --------
# 4A 禁煙
# --------
# また, 禁煙区画(あるいは喫煙区画)が窓側/通路側ともに満席のときには喫煙区画(禁煙区画)でも良いかどうか乗客に尋ねなければならない。
# 乗客がOKすれば(窓側/通路側の希望はできるだけ尊重した上で)空いている座席を割り当て搭乗券を出力し, OKしなければ
# 「3時間後に次のフライトがあります.」というメッセージを出力して終了する。


432 :デフォルトの名無しさん:2010/07/24(土) 16:17:31
http://pc12.2ch.net/test/read.cgi/tech/1279286575/141
# [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 円のはずである。


433 :デフォルトの名無しさん:2010/07/24(土) 16:20:05
http://pc12.2ch.net/test/read.cgi/tech/1279286575/149
# [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() などの入出力関数は用いないようにせよ。



434 :デフォルトの名無しさん:2010/07/24(土) 16:41:09
http://pc12.2ch.net/test/read.cgi/tech/1279286575/153
# [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度に取り込み、最初の空白までを名前とみなし、次の空白までを身長とみなし、次に改行までを血液型をみなせばよい。これらを別々の文字列として、
# 必要に応じて整数や浮動小数点数に変換し、構造体のメンバに設定すること。
#
# ヒント: ひとつの構造体の各メンバの値を表示する関数に構造体を引渡すことを繰り返えせばよい。


435 :デフォルトの名無しさん:2010/07/24(土) 16:42:21
http://pc12.2ch.net/test/read.cgi/tech/1279286575/154
# [1] 授業単元:プログラミング基礎I
# [2] 問題文(含コード&リンク):
# ../test/read.cgi/tech/1279286575/153を基にデータを身長の高い順に出力するよう変更せよ.
# % ./orderByHeight
# … ← 入力は前課題と同じなので省略.
# 名前 身長 血液型
# 衣笠一郎 180.4 O
# 立命太郎 175.5 A
# 野路花子 169.0 B
# %
#




436 :デフォルトの名無しさん:2010/07/24(土) 16:43:55
http://pc12.2ch.net/test/read.cgi/tech/1279286575/156
# [1] 授業単元:プログラミング基礎I
# [2] 問題文(含コード&リンク):
# 入力したDNA塩基配列中に,atgという並びがいくつあるか調べるプログラムを作成せよ.但し,入力には t, c, a, g以外の文字も入っている.塩基以外の文字は無視すること.
#
# 【実行例】
# % ./a.out
# 1gattatgtga
# 11tgccgatatc
# 21gatatgattc
# (ここで ^D を押す)
# #ATG is 3
# %



437 :デフォルトの名無しさん:2010/07/24(土) 16:45:00
http://pc12.2ch.net/test/read.cgi/tech/1279286575/157
# [1] 授業単元:プログラミング基礎I
# [2] 問題文(含コード&リンク):
# 入力したDNA塩基配列中にある塩基 t, c, a, gそれぞれの個数をカウントするプログラムを作成せよ.
#
# 【実行例】
# % ./a.out
# tataatccg ← 入力し,リターンを押して ^D
# Thymine (t) : 3
# Cytosine (c) : 2
# Adenine (a) : 3
# Guanine (g) : 1
# %



438 :デフォルトの名無しさん:2010/07/24(土) 16:46:14
http://pc12.2ch.net/test/read.cgi/tech/1279286575/166
# [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}となるようにせよ.
#



439 :デフォルトの名無しさん:2010/07/24(土) 16:47:30
http://pc12.2ch.net/test/read.cgi/tech/1279286575/174
# [1] 授業単元:C++基礎
# [2] 問題文(含コード&リンク):
# 基底クラスとして Shape、その派生クラスとして Rectangle (正方形)を定義し、
# 正四角形の辺の長さの合計と面積を計算する。
#



440 :デフォルトの名無しさん:2010/07/24(土) 16:49:39
ttp://pc12.2ch.net/test/read.cgi/tech/1279286575/188
# 1] 授業単元:プログラミング基礎I
# [2] 問題文(含コード&リンク):
# n個の実数(double型)を配列に読み込んだ後,配列を指すポインタを用いて,最大値と最小値を探索するプログラムを作成せよ.また,入力した値の平均値もポインタ変数を用いて計算せよ.
#


441 :デフォルトの名無しさん:2010/07/24(土) 16:50:50
http://pc12.2ch.net/test/read.cgi/tech/1279286575/193
# [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,"")は文字列""を返す。
#



442 :デフォルトの名無しさん:2010/07/24(土) 16:52:26
http://pc12.2ch.net/test/read.cgi/tech/1267796762/328
# 【 課題 】受験人数( 1〜9人)をキー入力し、その人数個々にランダムな得点(0〜50点)を付与し、
#       採点一覧表をグラフに表示する。
#       なお、受験者は「受験者A」、「受験者B」・・・「受験者I」とする。
#        一番上のタイトルには採点結果一覧表と表示されていています。
#       点数表示はアスタリスクで、10点ずつのところが*になってます。
# もう訳がわからなくて焦っています。よろしくお願いします。


443 :デフォルトの名無しさん:2010/07/24(土) 16:55:03
http://pc12.2ch.net/test/read.cgi/tech/1267796762/331
# 【 課題 】ババ抜きプログラム
# ・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が引く時の例
#        例)左から?番目を引く:(キーボードからの入力)


444 :デフォルトの名無しさん:2010/07/24(土) 16:58:10
http://pc12.2ch.net/test/read.cgi/tech/1279286575/199
# [1] 授業単元:C++基礎
# [2] 問題文(含コード&リンク):
# n個の実数(double型)を配列に読み込んだ後,配列を指すポインタを用いて,最大値と最小値を探索するプログラムを作成せよ.
# また,入力した値の平均値もポインタ変数を用いて計算せよ



445 :デフォルトの名無しさん:2010/07/24(土) 16:59:02
http://pc12.2ch.net/test/read.cgi/tech/1279286575/200
# [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}となるようにせよ.



446 :デフォルトの名無しさん:2010/07/24(土) 17:00:19
http://pc12.2ch.net/test/read.cgi/tech/1279286575/205
# 1] 授業単元: C言語プログラミング
# [2] 問題文(含コード&リンク):
# 一行ごとにテキストファイル名が無限に書いてあるテキストファイルがある。
# このファイルを読みだして書いてあるファイル名のファイル内容をすべて表示するプログラムを作れ
# 一行ごとに書いてあるファイルの最後は改行で終わっているものとする。
#



447 :デフォルトの名無しさん:2010/07/24(土) 17:45:30
http://pc12.2ch.net/test/read.cgi/tech/1279286575/221
# 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秒である.
#



448 :デフォルトの名無しさん:2010/07/24(土) 17:46:53
http://pc12.2ch.net/test/read.cgi/tech/1279286575/225
# 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関数では同関数を呼び出すようにせよ


449 :デフォルトの名無しさん:2010/07/24(土) 17:47:57
http://pc12.2ch.net/test/read.cgi/tech/1279286575/226
# それから、禁煙区画(あるいは喫煙区画)が窓側又は通路側ともに満席のときには喫煙区画(禁煙区画)でも良いかどうか乗客に尋ねなければならない。
# 乗客がOKすれば(窓側/通路側の希望はできるだけ尊重した上で)空いている座席を割り当て搭乗券を出力し、しなければ「3時間後に次のフライトがあります。」というメッセージを出力して終了する。
#


450 :デフォルトの名無しさん:2010/07/24(土) 17:49:05
http://pc12.2ch.net/test/read.cgi/tech/1279286575/231
# 1] 授業単元: C言語プログラミング
# [2] 問題コード
#
# 人数nを読み込んだ後,n個のfloat型配列を動的に確保し,配列に身長のデータを読み込んでいき,
# 入力された身長を10cmごとにわけたヒストグラムを生成するプログラムを作成せよ.
# 但し,nの読み込みとn個の動的メモリ確保はmain関数内で行い,身長の読み込み及び,印字する部分は関数として作成せよ.
#



451 :デフォルトの名無しさん:2010/07/24(土) 17:50:22
言語プログラミング
# [2] 問題コード
# nを読み込み,n個のint型配列を動的に確保,n個の配列はn人の勇者とする.以下仕様に従ったプログラムを作成せよ.
#
# •それぞれの勇者にヒットポイントを与える.
# •敵のヒットポイントを与える.
# •乱数を発生し,誰の攻撃かを決定する.
# •攻撃をする際に,会心の一撃,普通の攻撃,ミスを乱数で決定する.
# •相手に与えるダメージを乱数で決定する.
# •敵の攻撃の場合,何人にどれだけ攻撃をするかを乱数で決定する.
# •敵のヒットポイントが無くなるか,勇者が全滅したら終了とする
#
#



452 :デフォルトの名無しさん:2010/07/24(土) 17:52:23
http://pc12.2ch.net/test/read.cgi/tech/1279286575/251
# [1] 授業単元: C言語プログラミング
# [2] 問題コード
# nを読み込み,n個のint型配列を動的に確保し, n回サイコロを振った結果をその配列に格納せよ.
# その後,偶数が出た回数と奇数が出た回数,1から6までの出た目の確率を表示せよ.但し,nの読み込みとn個の動的メモリ確保はmain関数内で行い,サイコロの配列読み込み部分と計算の部分,表示の部分はそれぞれ関数として作成せよ.
#


453 :デフォルトの名無しさん:2010/07/24(土) 17:53:32
http://pc12.2ch.net/test/read.cgi/tech/1279286575/258
# [1] 授業単元: 情報処理(C言語)
# [2] 問題文:1+2+3+4+5+6…というように足していき、
# その累計がはじめて一万を超える時の値を求めるプログラムを作成せよ。
#



454 :デフォルトの名無しさん:2010/07/24(土) 17:55:01
http://pc12.2ch.net/test/read.cgi/tech/1267796762/346
# 明日までの宿題なんですがどうしても、できそうにありません
# 丸投げしますのでお願いします
# 【 課題 】
# 電車の券売機シュミレーションプログラム
# Mainクラスで投入金額を入力する
# Machineクラス購入可能切符の中から購入する切符を選択させる
# Ticketクラスで入金額による購入可能切符を出力
# Safeクラスでおつり金種枚数計算(1000円・500円・100円・50円・10円は初期設定で100枚ずつ用意しておく)
# おつりの枚数を初期値より減らす
# Mainで最後にお釣り金額&各枚数
# 購入金額切符を出力して終了
# Main以外のクラスはすべてパッケージ化する
#



455 :デフォルトの名無しさん:2010/07/24(土) 17:57:26
http://pc12.2ch.net/test/read.cgi/tech/1276810079/953
#
# [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
#


456 :デフォルトの名無しさん:2010/07/24(土) 17:58:31
http://pc12.2ch.net/test/read.cgi/tech/1279286575/273
# [1] 授業単元:プログラミング?
# [2] 問題文(含コード&リンク):以下に示す2つのプログラムを作成せよ
#               1)文字配列の文字列の順序を逆にする関数toReverseを作成せよ。
#                 また、関数toReverseを用いて入力した文字列の順序を逆にした
#                 文字列を表示するプログラムを作成せよ。
#                 void toReverse(char[]); とする
#                 実行例:abcde
# edcba
#
# 2)文字配列の文字列に含まれる小文字を大文字にする関数toUpperを作成し、
#                  入力した文字列の小文字を大文字に変換して表示するプログラムを作成せよ。
#                 実行例:This is a pen.
# THIS IS A PEN.
#


457 :デフォルトの名無しさん:2010/07/24(土) 18:00:34
>>448
使用言語:J

calctime=: 24 60 60 & #:

calctime 3725
1 2 5

458 :デフォルトの名無しさん:2010/07/24(土) 18:00:45
http://pc12.2ch.net/test/read.cgi/tech/1279286575/285
# C言語で以下の機能をもつプログラムを作りなさい
# ?12ヶ月分の平均気温が入力できる
# ?入力された月ごとの気温の小数点以下は四捨五入し、その数だけ横に*を並べていくことで気温の推移を視覚化できる
# ?年間平均気温、最高気温、最低気温を計算し、出力できる
#
# C言語自体さっぱりわかりません どなたかよろしくお願いします。
#



459 :デフォルトの名無しさん:2010/07/24(土) 18:02:07
http://pc12.2ch.net/test/read.cgi/tech/1279286575/314
# [1] 授業単元: 情報処理(C言語)
# [2] 問題文:幅wと高さhを入力し、次のような長方形を
# 表示するプログラムを作成せよ。
# w=7
# h=5
# *******
# *_____*
# *_____*
# *_____*
# *******
# _はスペースです。この掲示板だとずれるのでこのように表記しました。
# 条件として、この処理には繰り返し処理を用いてつくること。
#



460 :デフォルトの名無しさん:2010/07/24(土) 18:03:15
http://pc12.2ch.net/test/read.cgi/tech/1279286575/318
# 1] 授業単元: C言語プログラミング
# [2] 問題コード
# キーボードから入力した文字列をファイルに書き出すプログラムを作成せよ.
#
# 【実行例】
#
# % ./a.out
# Ikuno
# Soichiro
# Hello World!
# ^D
#
# % cat hoge.txt
# Ikuno
# Soichiro
# Hello World!
#



461 :デフォルトの名無しさん:2010/07/24(土) 18:04:21
http://pc12.2ch.net/test/read.cgi/tech/1279286575/324
# [1] 授業単元: 情報処理(C言語)
# [2] 問題文:入力した整数を因数分解してその値を全て表示するプログラムを作成せよ。
# ただし、入力した整数が2未満の場合は「2以上の整数を入力してください。」と表示させること。
# 例:整数値42を入力→表示2 3 7
#   整数値340を入力→表示2 2 5 17



462 :デフォルトの名無しさん:2010/07/24(土) 18:05:26
http://pc12.2ch.net/test/read.cgi/tech/1267796762/353
# 【 課題 】
# 1. アルファベット(a〜z)までの出現個数を数える。なお,大文字は小文字に変えて,数える。もし,出現個数が0個の場合は,出力しない。
#
# 2. 1つの単語を入力すると,1文字目の大文字に,それ以外を小文字に変換して,出力する。 例 kyoto→Kyoto 複数行の入力できるようにして,!記号を入れると,入力が終わるようにする。
#
# 3. 各単語の1文字目を大文字に,2文字目以降を小文字に変換する。 例 Once upon a time ・・・ → Once Upon A Time ・・・
#



463 :デフォルトの名無しさん:2010/07/24(土) 18:06:28
http://pc12.2ch.net/test/read.cgi/tech/1279286575/333
# [1] 授業単元: 情報基礎
# [2] 問題文(含コード&リンク): http://ime.nu/codepad.org/FIMXj8NN
#     文字列中の文字の出現数を数えて表示するプログラム(count-char.c)*上のリンク*を完成しなさい
#     ただしすべての文字の出現回数を表示すること。
#



464 :デフォルトの名無しさん:2010/07/24(土) 18:08:20
http://pc12.2ch.net/test/read.cgi/tech/1279286575/334
# [1] 授業単元: 情報(C++)
# [2] 問題文:2つの値 x と y の差を(非負の整数として)返す関数形式マクロ diff(x, y) を定義し, main関数で
# 4つの整数 a, b, c, d をキーボードから読み込み, diff(a, b) * diff(c, d) を出力するようなプログラムを作成せよ。
# また, 出力結果が正しいことを確認するため, 関数として diff2(x, y) も作成し,結果が同じになることを同じソースコード内で確認できるようにしなさい。


465 :デフォルトの名無しさん:2010/07/24(土) 18:09:12
http://pc12.2ch.net/test/read.cgi/tech/1279286575/348
# [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
#


466 :デフォルトの名無しさん:2010/07/24(土) 18:10:16
http://pc12.2ch.net/test/read.cgi/tech/1279286575/358
# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):入力ファイルと出力ファイル名をコマンドラインから入力してコピーするプログラムを作成せよ。
#



467 :デフォルトの名無しさん:2010/07/24(土) 18:11:23
>>466
% 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).


468 :デフォルトの名無しさん:2010/07/24(土) 18:14:23
http://pc12.2ch.net/test/read.cgi/tech/1279286575/400
# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):モンテカルロシミュレータにより円周率の計算をするプログラムを作成せよ
#



469 :デフォルトの名無しさん:2010/07/24(土) 20:17:40
http://pc12.2ch.net/test/read.cgi/tech/1267796762/367
# 組織のある部門にある能力を持つ人間を追加したり削除したりすることで,その組織全体もしくは部分的な部門の能力を計算するシステムを構築せよ.
# このシステムによって,組織内のニーズにあった人員配置を行なう支援をできると期待できる.
# 基本的にこのシステムは以下の機能を最低限有しなければならない.
#
# 1. 登録すべき部門や副部門を指定する.
# 2. 人物の名前(文字列),資格数(整数),勤務経験年数(整数),年齢を入力する.
# 3. もし,既に十分な人数がシステムに登録済の場合,そのデータと,前段階で入力された資格数,勤務経験年数,年齢に基づき,この人物の能力の値(high, middle or low)をシステムが予測し表示する.
# 4. システム(プログラム)を停止した際,現在,保持しているデータを保存できる.
# 5. システム(プログラム)を起動した際,既存のデータがあれば,それを読み込める.
#
# 単純化のため,能力は人物,組織どちらも金額(円)で表現されているとする.
# 人物も単純化のため,その氏名で区別することとし,同一氏名の人物は組織に追加できなくてもよい.
# 組織の中にある部門は階層的な構造となっており,その階層の深さは均一でない.
# 例えば「/秘書課/」という部門は組織の直下に位置するが,「/営業部/関東営業部/」,「/開発部/半導体課/」,「/研究部/先端科学課/タイムマシン開発グループ/」等2もしは3階層の場合もある.
尚,階層の深さ制限は無いものとする.
# ある部門の下に人物と副部門が同時に配置される場合もある.
# 例えば,営業部部長の田中さんは「/営業部/田中」と表現できるが,関東営業部に属
する山田さんは,「/営業部/関東営業部/山田」となる.
# 尚,本システムでは日本語名は扱えなくてもよい.


470 :デフォルトの名無しさん:2010/07/24(土) 20:21:46
http://pc12.2ch.net/test/read.cgi/tech/1267796762/374
# 【 課題 】 コマンドラインからファイル名を受け取り、拡張子が txt の場合は内容を表示し、
# txt でない場合はファイル情報を表示しなさい。また、コマンドラインからファイル名が与えられなかった場合には
# FileChooser を使ってファイル名を自由に取得できるようにしなさい。
# 【 補足 】.txtという拡張子の時でもFileChooserが動いてしまうので、
# それをどうにか直したいのですが、うまくいきません。
# 以下がソースです。
# http://ime.nu/www.geocities.jp/lang_lang_true/ss.txt
#



471 :デフォルトの名無しさん:2010/07/24(土) 20:27:07
http://pc12.2ch.net/test/read.cgi/tech/1279286575/408
# [2] 問題文(含コード&リンク):自動座席予約システムの作成せよ。
# その航空会社が持っている小型航空機(座席数:24)のフライトに座席を割り当てるシステムをプログラミングしなければならない。
# この航空機の座席は中央に通路を挟み左右にそれぞれ2座席ずつの列が計6列ある。
# 座席は 1A, 1B, 1C, 1D, ..., 6A, 6B, 6C, 6D で表示され, 1, 2列目が喫煙区画で,A, D が窓側, B, C が通路側を示している。
# このプログラムはまず最初に次の選択メニューを表示する。
# 喫煙席を希望する方は ● をタイプしてください.
# 禁煙席を希望する方は × をタイプしてください.
# 喫煙/禁煙の選択が終わると, 窓側か通路側かの選択を求める。
# 窓側を希望する方は ! をタイプしてください.
# 通路側を希望する方は # をタイプしてください.
# もし希望に沿える席がすべて予約済みで割り当てられないときには, 窓側/通路側の希望については無視して割り当てる。
# ただし, 「窓側(あるいは通路側)はすでに満席のため通路側(窓側)で予約します」というメッセージを出力し, 以下の
# ように座席番号と喫煙席/禁煙席の区分が書かれた搭乗券を(この課題では画面上に)出力する。
# --------
# 4A 禁煙
# --------
# また, 禁煙区画(あるいは喫煙区画)が窓側/通路側ともに満席のときには喫煙区画(禁煙区画)でも良いかどうか乗客に尋ねなければならない。
# 乗客がOKすれば(窓側/通路側の希望はできるだけ尊重した上で)空いている座席を割り当て搭乗券を出力し, OKしなければ
# 「3時間後に次のフライトがあります.」というメッセージを出力して終了する。


472 :デフォルトの名無しさん:2010/07/25(日) 04:54:49
http://pc12.2ch.net/test/read.cgi/tech/1279286575/433
# [1] 授業単元:ビジュアルプログラミング
# [2] 問題文:
# -0.0001<x<10.0000、0.0<y<10.0000の範囲で
# ランダムに(x,y)の値を1000個発生させ.
# 散布図のグラフで表示するプログラムを作成せよ
# ヒント:WIN32API関数群についてよく調べること
#



473 :デフォルトの名無しさん:2010/07/25(日) 04:58:15
http://pc11.2ch.net/test/read.cgi/db/1274791771/311
#
# テーブルAとテーブルBがあり、
# テーブルAには、1〜1000万までの連番を格納しています。連番はキーです。
# テーブルBの方には、その連番の開始値と連番数が格納されています。
#
# 開始値 | 連番数
# ---------------
#   1001 | 100   ←1001から1100までの意味
#   5001 | 100   ←5001から5100までの意味
#   9001 | 100   ←9001から9100までの意味
#
# テーブルBで指定されている連番に一致するレコードを
# テーブルAから取得するにはどのように書けばよいでしょうか。
# 上記の例だと300件取得する形になりますが、
# テーブルBにも1万件程度のレコードがあります。


474 :デフォルトの名無しさん:2010/07/25(日) 17:34:14
>>459
使用言語:J

f=:dyad define
c=.'*'
c,.(c,(((x, y)-2)$'_'),c),.c
)

4 f 7
*******
*_____*
*_____*
*******

475 :デフォルトの名無しさん:2010/07/29(木) 14:46:30
Drschemeでの課題です。
「フィボナッチ数列を返す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関数を使うんじゃないかなと思ってます。
あともしかしたら(?)の部分は先生の間違いじゃないかなと思ってます。
どなたかお願いします。


320 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)