1 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 09:57:19 ] 第二編も512Kbyte越えで終了しました。 前スレで未解決な課題は順次このスレにコピーします。
446 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 19:24:07 ] pc12.2ch.net/test/read.cgi/tech/1262163854/406 # 下のような2つのファイルから # 平均を出したいんですがどのようにすればいいのでしょうか? # ---file A--- # 1 87 # 2 89 # 3 40 # 4 90 # 5 33 # # ---file B--- # 1 45 # 2 22 # 3 78 # 4 60 # 5 19 # # ほしい結果は # ---file C--- # 1 (87+45)/2 # 2 (89+22)/2 # 3 (49+78)/2 # 4 (90+60)/2 # 5 (33+19)/2 # です。
447 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 19:50:16 ] >>444 使用言語:J よくわかりませんが、こんなふうではだめでしょうか? A組のならびから身長の順位表をつくる。 B組をこの「A組順」でソートする。 ]a=:145+?10#40 178 155 176 179 169 146 161 179 177 153 ]b=:140+?10#50 178 167 186 142 165 166 172 173 181 181 a,:(/:~b)/:/:a 178 155 176 179 169 146 161 179 177 153 181 166 173 181 172 142 167 186 178 165
448 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 20:23:36 ] >>446 % Prolog '2つのファイルから平均を出す'('fileA','fileB','fileC') :- '2つのファイルから2つのならびを取り出す'('fileA','fileB',L1,L2), fileAのデータを基礎に平均を計算してfileCに出力する('fileC',L1,L2),!. '2つのファイルから2つのならびを取り出す'('fileA','fileB',L1,L2) :- get_split_lines('fileA',[' '],L1), get_split_lines('fileB',[' '],L2),!. fileAのデータを基礎に平均を計算してfileCに出力する('fileC',L1,L2) :- tell('fileC'), fileAのデータを基礎に平均を計算して出力する(L1,L2), told. fileAのデータを基礎に平均を計算して出力する([],_) :- !. fileAのデータを基礎に平均を計算して出力する([[N,A]|R1],L2) :- member([N,B],L2), C is (A + B) / 2, write_formatted('%t (%t+%t)/2=%t',[M,A,B,C]), fileAのデータを基礎に平均を計算して出力する(R1,L2).
449 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 02:28:09 ] pc12.2ch.net/test/read.cgi/tech/1263824755/233 # [1] 授業単元:プロトタイプ宣言とか引数 # [2] 問題文(含コード&リンク): 入力された数字が偶数なら、trueを返す関数。それ以外ならfalse
450 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 02:30:31 ] pc12.2ch.net/test/read.cgi/tech/1263824755/232 # [1] 授業単元:プロトタイプ宣言とか引数 # [2] 問題文(含コード&リンク): 得点を入力して以下のルールに従った成績を返す関数を実装せよ。 # 90点以上 S # 80点以上 A # 60点以上 B # それ未満 C
451 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 02:41:54 ] >>449 % Prolog 入力された数字が偶数なら、trueを返す :- get_integer(N), 入力された数字が偶数なら、trueを返す(N). 入力された数字が偶数なら、trueを返す(N) :- 0 is N mod 2.
452 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 02:46:26 ] >>449 % Prolog '入力された数字が偶数なら、trueを返す。それ以外ならfalse'(_診断) :- get_integer(N), '入力された数字が偶数なら、trueを返す。それ以外ならfalse'(N,_診断). '入力された数字が偶数なら、trueを返す。それ以外ならfalse'(N,true) :- 0 is N mod 2. '入力された数字が偶数なら、trueを返す。それ以外ならfalse'(N,false).
453 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 02:48:11 ] >>452 (>>449 ) 訂正 % Prolog '入力された数字が偶数なら、trueを返す。それ以外ならfalse'(_診断) :- get_integer(N), '入力された数字が偶数なら、trueを返す。それ以外ならfalse'(N,_診断). '入力された数字が偶数なら、trueを返す。それ以外ならfalse'(N,true) :- 0 is N mod 2,!. '入力された数字が偶数なら、trueを返す。それ以外ならfalse'(N,false).
454 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 02:58:21 ] >>450 % Prolog 得点を入力して以下のルールに従った成績を返す(_成績) :- get_integer(_得点), 得点を入力して以下のルールに従った成績を返す(_得点,_成績). 得点を入力して以下のルールに従った成績を返す(_得点,_成績) :- 以下のルール(_得点,_,_成績). 以下のルール(_得点,'90点以上','S') :- _得点 >= 90,!. 以下のルール(_得点,'80点以上','A') :- _得点 >= 80,!. 以下のルール(_得点,'60点以上','B') :- _得点 >= 60,!. 以下のルール(_得点,'それ未満','C') :- _得点 < 60,!.
455 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 03:10:28 ] >>450 % Prolog 少し模索 得点を入力して以下のルールに従った成績を返す(_成績) :- get_integer(_得点), 得点を入力して以下のルールに従った成績を返す(_得点,_成績). 得点を入力して以下のルールに従った成績を返す(_得点,_成績) :- '得点が90点以上'(_得点,_成績). 得点を入力して以下のルールに従った成績を返す(_得点,_成績) :- '得点が80点以上'(_得点,_成績). 得点を入力して以下のルールに従った成績を返す(_得点,_成績) :- '得点が60点以上'(_得点,_成績). 得点を入力して以下のルールに従った成績を返す(_得点,_成績) :- '得点が60点未満'(_得点,_成績). '得点が90点以上'(_得点,'S') :- _得点 >= 90,!. '得点が80点以上'(_得点,'A') :- _得点 >= 80,_得点<90,!. '得点が60点以上'(_得点,'B') :- _得点 >= 60,_得点<80,!. '得点がそれ未満'(_得点,'C') :- _得点 < 60,!.
456 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 06:26:04 ] >>450 % Prolog 得点を入力して以下のルールに従った成績を返す(_成績) :- get_integer(_得点), 得点を入力して以下のルールに従った成績を返す(_得点,_成績). 得点を入力して以下のルールに従った成績を返す(_得点,_成績) :- '得点が90点以上の成績はS'(_得点,_成績). 得点を入力して以下のルールに従った成績を返す(_得点,_成績) :- '得点が80点以上の成績はA'(_得点,_成績). 得点を入力して以下のルールに従った成績を返す(_得点,_成績) :- '得点が60点以上の成績はB'(_得点,_成績). 得点を入力して以下のルールに従った成績を返す(_得点,_成績) :- '得点がそれ未満のはC'(_得点,_成績). '得点が90点以上の成績はS'(_得点,'S') :- _得点 >= 90,!. '得点が80点以上の成績はA'(_得点,'A') :- _得点 >= 80,_得点<90,!. '得点が60点以上の成績はB'(_得点,'B') :- _得点 >= 60,_得点<80,!. '得点がそれ未満の成績はC'(_得点,'C') :- _得点 < 60,!.
457 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 06:29:40 ] >>456 訂正 成績がひとつ落ちた '得点がそれ未満のはC' -> '得点がそれ未満の成績はC'
458 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 13:39:12 ] >>449 使用言語:Io Number even:=method(self % 2 == 0) Io> 23 even ==> false Io> 24 even ==> true
459 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 17:24:57 ] >>450 使用言語:J f=: monad def 'y{''CBAS''#~2-~/\0 60 80 90 101' f 0 C f 59 C f 60 B f 79 B f 80 A f 89 A f 90 S f 100 S
460 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 17:34:13 ] >>449 使用言語:J even=: 0=2&| even 23 0 even 24 1
461 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 17:37:51 ] >>449 使用言語:Scilab -->deff('r = even(n)', 'r = modulo(n, 2) == 0') -->even(23) ans = F -->even(24) ans = T
462 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 17:56:26 ] pc12.2ch.net/test/read.cgi/tech/1263824755/245 # [1] 授業単元: プログラミング # [2] 問題文(含コード&リンク): # キーボードから正の整数nを入力し、n!を計算して画面表示するプログラムを # 作成せよ。ただし、階乗を計算する関数のプロトタイプを「void kaiyo(int , int *)」 # とし、第1引数にnを、第2引数に計算結果を格納する変数のポインタを指定すること。 #
463 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 19:42:34 ] >>449 使用言語:Arc arc> (even 5) nil arc> (even 4) t arc> (def even? (n) (is (mod n 2) 0)) #<procedure: even?> arc> (even? 23) nil arc> (even? 24) t
464 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 20:12:02 ] >>449 使用言語: (%i26) even(n):=is(mod(n,2)=0); (%i27) even(23); (%o27) false (%i28) even(24); (%o28) true (%i29) f(n):=mod(n,2)=0; (%i30) f(23); (%o30) 1 = 0 (%i31) f(24); (%o31) 0 = 0 (%i32) if f(4) then "even" else "odd"; (%o32) even isがないとtrue,falseの表示にならないようだ。
465 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 20:16:34 ] >>464 書き忘れましたが、使用言語は maxima です。
466 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 21:03:29 ] >>449 使用言語:scheme(Gauche) gosh> (even? 23) #f gosh> (even? 24) #t gosh> (define (even n) (= (modulo n 2) 0)) even gosh> (even 23) #f gosh> (even 24) #t
467 名前:デフォルトの名無しさん mailto:sage [2010/01/27(水) 21:12:54 ] >>449 使用言語:Common Lisp(xyzzy) (evenp 23) nil (evenp 24) t (defun even (n) (= (mod n 2) 0)) even (even 23) nil (even 24) t
468 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 00:53:54 ] >>449 使用言語:十進BASIC 論理式は制御構文でしか使えないので真偽値を受け渡しすることはできないようだ。 なので、真偽値を返す関数は、真のときの値、偽のときの値を適当にきめてやりとりするしかないみたい。 ここでは、真のとき1を偽のとき0を返すようにした。 FUNCTION even(n) IF MOD(n,2)=0 THEN LET even=1 ELSE LET even=0 END IF END FUNCTION PRINT even(23) PRINT even(24) END 実行結果 0 1
469 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 05:13:18 ] >>431 % Prolog Prologでリングバッファは表現できるが無意味。究竟Prologのキューはスタック操作。 'New'(X-X). 'Enque'(_要素,X-[_要素|Y],X-Y). 'Deque'(_要素,[_要素|X]-Y,X-Y). 'Empty'(X-Y) :- X == Y. キュー操作 :- 'New'(Q1),キュー操作機能選択(Q1). キュー操作. キュー操作機能選択(Q1) :- get_line(_機能選択), キュー操作機能選択(_機能選択,Q1,Q2), キュー操作機能選択(Q2),!. キュー操作機能選択(q,_,_) :- !,fail. キュー操作機能選択(d,Q1,Q2) :- 'Deque'(_要素,Q1,Q2), write_formatted('%t\n',[_要素]),!. キュー操作機能選択(s,Q1,Q1) :- キュー表示(Q1),!. キュー操作機能選択(A,Q1,Q2) :- atom_to_term(A,N,_),'Enque'(N,Q1,Q2),!. キュー表示(X-X) :- !. キュー表示(X-Y) :- \+(var(X),var(Y),キュー表示(X-[Y]),!. キュー表示(X-Y) :- \+(var(Y)), append(U,Y,X), concat_atom(U,' ',S), write_formatted('%t\n',[S]),!.
470 名前:469 mailto:sage [2010/01/28(木) 05:16:26 ] ついでに言うとこれは説明不能ww ということは、 重リストを使ったキュー操作はあまり推奨できるプログラムではないのかも。
471 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 05:40:10 ] >>462 % Prolog 関数名kaiyoはたぶんミスパンチと思うので kaijo(0,1) :- !. kaijo(N,X) :- N1 is N - 1,kaijo(N1,Y),X is N * Y.
472 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 06:00:53 ] >>462 % Prolog 'キーボードから正の整数nを入力し、n!を計算して画面表示する' :- repeat, 催促付き整数入力('正の整数を入れてください :',N), N >= 0, kaijo(N,X), write_formatted('%tの階乗は%tです。\n',[N,X]),!. kaijo(0,1) :- !. kaijo(N,X) :- N1 is N - 1,kaijo(N1,Y),X is N * Y.
473 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 06:27:18 ] >>426 % Prolog もっと複雑な問題らしい。一応基礎部分ということで。 累乗の計算の逆を行うプログラムの基礎部分(A,A ^ 1) :- atomic(A),!. 累乗の計算の逆を行うプログラムの基礎部分((A * A),A ^ 2) :- atomic(A),!. 累乗の計算の逆を行うプログラムの基礎部分((B * A) * A,A ^ N) :- 累乗の計算の逆を行うプログラムの基礎部分((B * A),A ^ N1), N is N1 + 1,!.
474 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 07:38:10 ] >>426 % Prolog >>473 は利用しないことになってしまった。 累乗の計算の逆を行うプログラム(_乗算項,X) :- 乗算項をならびに変換(_乗算項,L1), quicksort(L1,L2), 累乗の計算の逆を行うプログラム項構成(L2,X). 乗算項をならびに変換(A,[A]) :- atomic(A),!. 乗算項をならびに変換((B*A),[A|R]) :- atomic(A), 乗算項をならびに変換(B,R). 累乗の計算の逆を行うプログラム項構成([A],A) :- !. 累乗の計算の逆を行うプログラム項構成([A,A|R1],A ^ N) :- 累乗の計算の逆を行うプログラム項部分構成([A,A|R1],[],A ^ N),!. 累乗の計算の逆を行うプログラム項構成([A,A|R1],A ^ N * Y) :- 累乗の計算の逆を行うプログラム項部分構成([A,A|R1],R,A ^ N),!. 累乗の計算の逆を行うプログラム項構成(R,Y),!. 累乗の計算の逆を行うプログラム項構成([A,B|R1],A * Y) :- 累乗の計算の逆を行うプログラム項構成([B|R1],Y),!. 累乗の計算の逆を行うプログラム項部分構成([A],[],A ^ 1) :- !. 累乗の計算の逆を行うプログラム項部分構成([A,A|R1],R,A ^ N) :- 累乗の計算の逆を行うプログラム項部分構成([A|R1],R,A ^ N1), N is N1 + 1,!. 累乗の計算の逆を行うプログラム項部分構成([A,B|R],[B|R],A ^ 1) :- !.
475 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 15:26:00 ] >>449 使用言語:tcl % proc even {n} {expr $n%2==0} % even 23 0 % even 24 1
476 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 15:28:48 ] >>449 使用言語:Xtal ix:004>even:fun(n) n%2==0; ix:005>even(23).p; false ix:006>even(24).p; true
477 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 15:59:40 ] >>449 使用言語:Scala scala> def even(n:Int):Boolean={n%2==0} even: (Int)Boolean scala> even(23) res3: Boolean = false scala> even(24) res4: Boolean = true
478 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 16:17:01 ] >>449 使用言語:Clojure user=> (even? 23) false user=> (even? 24) true user=> (defn even [n] (= (mod n 2) 0)) #'user/even user=> (even 23) false user=> (even 24) true
479 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 18:09:44 ] >>449 使用言語:R > even <- function(n){n%%2==0} > even(23) [1] FALSE > even(24) [1] TRUE
480 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 18:29:39 ] >>453 問題がfalseとなっているから仕方ないのかも知れないが、 failにしておいた方が無難。call(fail)で真偽値に戻せるから。falseだと、 K-Prolog Compiler version 6.0.4 (C) KLS Research, Inc. 15: ?- fail. no 16: ?- false. existence_error: "procedure" found at "false" Culprit: "false/0" 17: ?- のようなことになる。
481 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 22:51:35 ] pc12.2ch.net/test/read.cgi/tech/1263824755/296 # [1] 授業単元:プログラミング演習 # [2] 問題文(含コード&リンク): # 10個の要素を持つ動的な整数配列を作るプログラムを作成しなさい。 # 動的な配列へのポインタを整数ポインタに代入しなさい。 # 次に、ポインタ算術または配列の添字を使って、1から10までの値を配列を構成する整数に代入しなさい。 # 最後に、代入した値を表示し、メモリを解放しなさい。 #
482 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 22:53:22 ] pc12.2ch.net/test/read.cgi/tech/1263824755/299 # [1] 授業単元:コンピュータリテラシー # [2] 問題文(含コード&リンク): # あるファイルの名簿を呼びだし、名前もしくは名字で検索しその結果を新しいファイルに保存する。あるファイルの名簿は特に決められていない。 # ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10456.txt
483 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 22:57:40 ] pc12.2ch.net/test/read.cgi/tech/1263824755/307 # [1] Cプログラミング入門: # [2] ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10460.txt # 次のプログラムを作成し二つのファイルを提出せよ。 # 1:0〜99 の 100 個の数字から異なる 30 個を選び,配列 COM[30] に # 格納せよ.(乱数使用:学籍番号で初期化)学籍番号:200 # 2:次に異なる 6 個の数字を入力し,順番に配列 MAN[6] に格納せよ. # 3:ソート方法 A を用いて配列 COM,MAN の要素をそれぞれ小さい # 順に並べよ. # 4:配列 COM に含まれる配列 MAN の数字の個数 count を求めよ. # 5:最後に,配列 COM,MAN の全要素,変数 count を # result.out に書き込め. # 6:出力形式は自由とするが,main 関数内は 10 行以内にすること. # ソート方法A # 1 :作業用の配列として、要素が 100 個の int 型の配列 Work を用意 # する. # 2 :配列 Work の各要素は、0 に初期化する. # 3 :ソートしたい配列 x の要素を順番に読んで、Work[ その値 ] を +1 # する. # 4 :作業3を全ての x の要素について行った後、Work の要素を小さい # ほうから順番に読んで、Work の値が 0 でなければ、x に書き戻し # ます。
484 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 22:59:38 ] pc12.2ch.net/test/read.cgi/tech/1263824755/309 # [1] C言語プログラミング演習(大学任意科目) # [2] コマンドラインで指定された各テキストファイルに対して個別に以下の処理を行うCプログラムを作成 # ☆テキストファイルを通読し、各行のインデント深度の最大値を求める(それをNとおく) # ☆テキストファイルの先頭から再度読み出し、それぞれの行についてインデント深度がnなら # ば、インデント深度をN-nに変更したものを標準出力する。 # ☆新しいテキストファイルのNが判明した時点で、その改行とファイル名、改行を標準出力する。 # ここでインデント深度とは、行頭からタブ、空白以外の文字が現れるまでがn回(n>=0)現れた場合 # 深度=nとする。
485 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 23:04:35 ] pc12.2ch.net/test/read.cgi/tech/1263824755/315 # [1] 授業単元:プログラミング応用 # [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10461.txt # # ■問題1 # pnm(pbm, pgm, ppm)フォーマット画像ファイルを読み込み、 # 左右を反転させた画像をpnmフォーマット画像ファイルとして # 保存するプログラムを作成せよ. # # ■問題2 # 256(横)×256(縦)の画素数をもつpgmフォーマット画像の階調度を # 7段階(128階調,64階調,32階調,16階調,8階調,4階調,2階調)で変換し, # 各階調に変換したときの画像(7枚)をpgmフォーマット画像として # 保存するプログラムを作成せよ. # # ※問題1,2共に、アスキー形式とバイナリー形式のpnmフォーマット画像を # 処理できるプログラムとすること
486 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 23:38:02 ] >>481 % Prolog 例によって配列はリスト(ならび)とします。 '10個の要素を持つ動的な整数配列(ならび)を作り、1から10までの整数を代入し、値を表示し、メモリを解放する' :- length(L,10), ならびに値を設定する(L), write_formatted('%t\n',[L]), fail. '10個の要素を持つ動的な整数配列(ならび)を作り、1から10までの整数を代入し、値を表示し、メモリを解放する'. ならびに値を設定する(L) :- ならびに値を設定する(1,L). ならびに値を設定する(10,[10]) :- !. ならびに値を設定する(N,[N|R]) :- N2 is N + 1,ならびに値を設定する(N2,R).
487 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 04:46:44 ] >>482 % Prolog 名簿を呼びだし、名前で検索しその結果を新しいファイルに保存する(_名簿ファイル,_出力ファイル,_検索する名前) :- 名簿を呼び出し(_名簿ファイル,L), 名前で検索しその結果を新しいファイルに保存する(_出力ファイル,L,_名前),!. 名簿を呼び出し(_名簿ファイル,L) :- get_split_lines(_名簿ファイル,[' ',','],L),!. 名前で検索しその結果を新しいファイルに保存する(_出力ファイル,L,_名前) :- tell(_出力ファイル), 名前で検索しその結果を新しいファイルに保存する(L,_名前), told. 名前で検索しその結果を新しいファイルに保存する([],_) :- !. 名前で検索しその結果を新しいファイルに保存する([[_名字,_名前,_住所,_電話番号]|R],_名前) :- write_formatted('%t,%t,%t,%t\n',[_名字,_名前,_住所,_電話番号]), 名前で検索しその結果を新しいファイルに保存する(R,_名前),!. 名前で検索しその結果を新しいファイルに保存する([_|R],_名前) :- 名前で検索しその結果を新しいファイルに保存する(R,_名前),!.
488 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 05:29:08 ] >>483 % Prolog 1: '1:0〜99 の 100 個の数字から異なる 30 個を選び,配列 COM[30] に格納する'(COM) :- 'COMを確保する'(COM), '0〜99 の 100 個の数字から異なる 30 個を選び,配列 COM[30] に格納する'([],COM). '0〜99 の 100 個の数字から異なる 30 個を選び,配列 COM[30] に格納する'(COM,COM) :- !. '0〜99 の 100 個の数字から異なる 30 個を選び,配列 COM[30] に格納する'(L1,COM) :- '0〜99の数字'(N), \+(member(N,L1)), '0〜99 の 100 個の数字から異なる 30 個を選び,配列 COM[30] に格納する'([N|L1],COM),!. '0〜99 の 100 個の数字から異なる 30 個を選び,配列 COM[30] に格納する'(L1,COM) :- '0〜99 の 100 個の数字から異なる 30 個を選び,配列 COM[30] に格納する'(L1,COM),!. 'COMを確保する'(COM) :- length(COM,30). '0〜99の数字'(N) :- N is random mod 100.
489 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 06:03:17 ] >>483 % Prolog 2: '2:次に異なる 6 個の数字を入力し,順番に配列 MAN[6] に格納せよ'(MAN) :- '異なる 6 個の数字を入力し,順番に配列 MAN[6] に格納する'(MAN). '異なる 6 個の数字を入力し,順番に配列 MAN[6] に格納する'(MAN) :- 'MANを確保'(MAN,6), '異なる 6 個の数字を入力し,順番に配列 MAN[6] に格納する'([],MAN). '異なる 6 個の数字を入力し,順番に配列 MAN[6] に格納する'(MAN,MAN) :- !. '異なる 6 個の数字を入力し,順番に配列 MAN[6] に格納する'(L1,MAN) :- get_integer(N), \+(member(N,L1)), '異なる 6 個の数字を入力し,順番に配列 MAN[6] に格納する'([N|L1],MAN) :- !. '異なる 6 個の数字を入力し,順番に配列 MAN[6] に格納する'(L1,MAN). '異なる 6 個の数字を入力し,順番に配列 MAN[6] に格納する'(L1,MAN).
490 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 06:08:59 ] >>483 訂正 % Prolog 2: 順番にという以上入力と逆順になってはマズイ。 '2:次に異なる 6 個の数字を入力し,順番に配列 MAN[6] に格納せよ'(MAN) :- '異なる 6 個の数字を入力し,順番に配列 MAN[6] に格納する'(MAN). '異なる 6 個の数字を入力し,順番に配列 MAN[6] に格納する'(MAN) :- 'MANを確保'(MAN,6), '異なる 6 個の数字を入力し,順番に配列 MAN[6] に格納する'([],MAN). '異なる 6 個の数字を入力し,順番に配列 MAN[6] に格納する'(MAN,MAN) :- !. '異なる 6 個の数字を入力し,順番に配列 MAN[6] に格納する'(L1,MAN) :- get_integer(N), \+(member(N,L1)), append(L1,[N],L2), '異なる 6 個の数字を入力し,順番に配列 MAN[6] に格納する'(L2,MAN) :- !. '異なる 6 個の数字を入力し,順番に配列 MAN[6] に格納する'(L1,MAN). '異なる 6 個の数字を入力し,順番に配列 MAN[6] に格納する'(L1,MAN).
491 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 07:58:33 ] >>483 % Prolog 3: ソート方法AはPrologのリスト(ならび)仕様に書き換えました。効率は大変悪い。 'ソート方法 A を用いて配列 COM,MAN の要素をそれぞれ小さい順に並べる'(L1,L2) :- ソート方法A(L1,L2). ソート方法A(L1,L2) :- '作業用のならびとして、要素が100 個の変数であるならびWorkを用意する'(Work), 'ソートしたいならびLの要素を順番に読んで、Work[ その値 ] を1に単一化する'(L1,Work), '全てのLの要素について行った後、変数でないWorkの要素を先頭からならびL2にコピー'(L1,L2). '作業用のならびとして、要素が100 個の変数であるならびWorkを用意する'(Work) :- length(Work,100). 'ソートしたいならびLの要素を順番に読んで、Work[ その値 ] を1に単一化する'([],Work) :- !. 'ソートしたいならびLの要素を順番に読んで、Work[ その値 ] を1に単一化する'([N|R1],Work) :- list_nth(N,Work,1), 'ソートしたいならびLの要素を順番に読んで、Work[ その値 ] を1に単一化する'(R1,Work),!. '全てのLの要素について行った後、変数でないWorkの要素を先頭からならびL2にコピー'([],[]) :- !. '全てのLの要素について行った後、変数でないWorkの要素を先頭からならびL2にコピー'([A|R1],[A|R2]) :- \+(var(A)), '全てのLの要素について行った後、変数でないWorkの要素を先頭からならびL2にコピー'(R1,R2),!. '全てのLの要素について行った後、変数でないWorkの要素を先頭からならびL2にコピー'([V|R1],L2) :- var(V), '全てのLの要素について行った後、変数でないWorkの要素を先頭からならびL2にコピー'(R1,L2).
492 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 09:40:48 ] >>488->>491 全部に間違いがありました。 今夕までに nojiriko.asia/prolog/c134_370_1.html から nojiriko.asia/prolog/c134_370_4.html までに 訂正分を書き込んで置きます。
493 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 10:43:20 ] >>483 % Prolog 4: '配列 COM に含まれる配列 MAN の数字の個数 count を求めよ'(COM,[],[]) :- !. '配列 COM に含まれる配列 MAN の数字の個数 count を求めよ'(COM,[N|R1],[[N,Count]|R2]) :- count(member(N,COM),Count), '配列 COM に含まれる配列 MAN の数字の個数 count を求めよ'(COM,R1,R2). count([],0) :- !. count([_|R],Count) :- count(R,Count1),Count is Count1 + 1,!. count(P,Count) :- findsum(1,P,Count).
494 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 10:49:26 ] >>483 % Prolog 4: どうやら、Countとは含まれる総数のことらしい。それで・・ '4:配列 COM に含まれる配列 MAN の数字の個数 count を求めよ'(COM,MAN,Count) :- '配列 COM に含まれる配列 MAN の数字の個数 count を求めよ'(COM,MAN,L), findsum(M,member([_,M],L),Count),!.
495 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 12:14:39 ] pc12.2ch.net/test/read.cgi/tech/1197620454/580 # 下記のプログラムを関数を用いて実行したいのですが、どのようにすれば良いでしょうか? # 回答(できたら簡単な解説)の明記をお願いします。 # # 問題1:入力したプログラムから以下のように出力するプログラムを作成する。 # (実行結果例) # 文字列を入力: 今日は、晴れです。 # # 今日は、晴れです。 # 日 す # は で # 、 れ # 晴 晴 # れ 、 # で は # す 日 # 。すでれ晴、は日今 #
496 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 12:16:06 ] pc12.2ch.net/test/read.cgi/tech/1197620454/580 # 問題2:ファイル入力した漢字データ(全角)を読み込み、行数を数えながら逆から表示するプログラム。 # (実行結果例) # (例として次のような C:\test2.txtを入力する) # 今日は、晴れです。昨日は、雨で # した。明日は、曇でしょう。明後 # 日は、快晴でしょうか。 ←の文章を以下のようなプログラムにする。 # # ファイル名を入力してください:C:\test2.txt # # 1:で雨、は日昨。すでれ晴、は日今 # 2:後明。うょしで曇、は日明。した # 3:。かうょしで晴快、は日 #
497 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 12:17:44 ] pc12.2ch.net/test/read.cgi/tech/1197620454/581 # 問題3:ファイルのデータ(英文)を読み込み、一行毎の文字数(スペースも含む) とワード数を数えるプログラム。 # (実行結果例) # (例として次のような C:\test3.txtを入力する) # And friends just can't be found # Like a bridge over troubled water # I will lay me down ←の文章を以下のようなプログラムにする。 # # ファイル名を入力してください:C:\test3.txt # 1:And friends just can't be found # ⇒31文字、6ワード # 2:Like a bridge over troubled water # ⇒33文字、6ワード # 3:I will lay me down # ⇒18文字、5ワード #
498 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 12:19:00 ] pc12.2ch.net/test/read.cgi/tech/1197620454/581 # 問題4:1月1日が金曜日の平年(たとえば2010年)について、月日の入力データから、曜日を求めるプログラム。 # (実行結果例) # 月を入力してください:9 # 日を入力してください:15 # 9月15日は、水曜日です。 # # 以上4問です。どうか回答よろしくお願い致します
499 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 12:32:53 ] pc11.2ch.net/test/read.cgi/db/1252492296/471 # 【質問テンプレ】 # ・DBMS名とバージョン: SQLite 3 # ・テーブルデータ:長いため下記に記載 # ・欲しい結果:RSSリーダ(brief)のデータ(*.sqlite)から特定の記事データを削除したいです。 # ・説明:長いため下記に記載 # # ●テーブルデータ # ======================================================================================================================= # ■entries # | id | feedID | primaryHash | secondaryHash | providerID | entryURL | date | read | updated | starred | deleted | bookmarkID | # ----------------------------------------------------------------------------------------------------------------------- # ■entries_text # | title | content | authors | tags | # ----------------------------------------------------------------------------------------------------------------------- # ■entries_text_content # | docid | c0title | c1content | c2authors | c3tags | # ----------------------------------------------------------------------------------------------------------------------- # ■sqlite_sequence # | name | seq | # =======================================================================================================================
500 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 12:34:45 ] pc11.2ch.net/test/read.cgi/db/1252492296/472 # 1.【entries】テーブルの[deleted]フィールドが「 2 」の場合に、そのレコードを削除。 # # 2.同時に、【entries_text_content】テーブルの[docid]フィールドが、1.で削除した # [id]フィールドと同じ値のレコードも削除。 # # 3.更に同時に、【entries_textテーブル】から、1.で削除した[idフィールド]の値(数字)と # 同じレコード番号のレコードを削除。 ※idフィールドがない為 # # 4.その後、下記のフィールドの値を、1・2・3〜とリナンバリングしたい。 # 【entries】テーブルの[id]フィールド # 【entries_text_content】テーブルの[docid]フィールド # # 5.そして、1.2.3.の三つのテーブルのレコード数がどれも同じ数だけあるか確認。 # # 6.最後に、【sqlite_sequence】テーブルの[seq]フィールドに5.で確認したレコード数を # 設定したい。
501 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 13:11:44 ] >>483 % Prolog 5: '配列 COM,MAN の全要素,変数 count をresult.out に書き込め'(COM,MAN,Count) :- tell('result.out'), write_formatted('%q.\n',['COM'=COM]), write_formatted('%q.\n',['MAN'=MAN]), write_formatted('%q.\n',['Count'=Count]), told.
502 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 15:40:12 ] >>12 % Prolog nojiriko.asia/prolog/ml6_12.html ゲームとして成立していない。「実例で学ぶゲームAIプログラミング」を これから買って研究してみます。
503 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 15:56:43 ] >>502 ゲームはロジックの間に挿入される副作用に値打ちがあるのだから、 述語構成は r(Z) :- 停止条件(Z),!. r(X). r(X) :- filter(X,Y),r(Y). のステッパ型パターンが望ましいのかな。実際には、 u(X) :- r(X),_副作用,fail. といった副作用述語が並ぶことになる。
504 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 18:04:23 ] >>495 % Prolog 問題1 :- 文字ならびの取得(Chars), 取得したならびの反転(Chars,Chars2), 第一文字と最終文字を除外(Chars,L2), 第一文字と最終文字を除外したならびの反転(L2,L3), 第一行目の印字(Chars), 第二行目以降の印字(L2,L3), 最終行の印字(Chars2),!. 文字ならびの取得(Chars) :- get_chars(Chars). 取得したならびの反転(Chars,Chars2) :- reverse(Chars,Chars2),!. 第一文字と最終文字を除外(Chars,L2) :- append([_],L2,[_],Chars),!. 第一文字と最終文字を除外したならびの反転(L2,L3) :- reverse(L2,L3),!. 第一行目の表示(L) :- ならびの文字表示(L),nl,!. 第二行目以降の表示(L2,L3) :- 転置([L1,L3],L4),ならびの行表示(L4),!. 最終行の印字(L3) :- ならびの文字表示(L),nl,!. ならびの行表示([]) :- write('\n'),!. ならびの行表示([A|R]) :- write_formatted('%t\n',[A]),ならびの行表示(R).
505 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 18:06:47 ] >>504 (>>495 ) 書き直し % Prolog インデントしてないところがあって読みにくいから書き直し。 問題1 :- 文字ならびの取得(Chars), 取得したならびの反転(Chars,Chars2), 第一文字と最終文字を除外(Chars,L2), 第一文字と最終文字を除外したならびの反転(L2,L3), 第一行目の印字(Chars), 第二行目以降の印字(L2,L3), 最終行の印字(Chars2),!. 文字ならびの取得(Chars) :- get_chars(Chars). 取得したならびの反転(Chars,Chars2) :- reverse(Chars,Chars2),!. 第一文字と最終文字を除外(Chars,L2) :- append([_],L2,[_],Chars),!. 第一文字と最終文字を除外したならびの反転(L2,L3) :- reverse(L2,L3),!. 第一行目の表示(L) :- ならびの文字表示(L),nl,!. 第二行目以降の表示(L2,L3) :- 転置([L1,L3],L4),ならびの行表示(L4),!. 最終行の印字(L3) :- ならびの文字表示(L),nl,!. ならびの行表示([]) :- write('\n'),!. ならびの行表示([A|R]) :- write_formatted('%t\n',[A]),ならびの行表示(R).
506 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 18:14:50 ] >>505 (>>495 ) もう一度すみません。 % Prolog 問題1 :- 文字ならびの取得(Chars), 取得したならびの反転(Chars,Chars2), 第一文字と最終文字を除外(Chars,L2), 第一文字と最終文字を除外したならびの反転(L2,L3), 第一行目の表示(Chars), 第二行目以降の表示(L2,L3), 最終行の表示(Chars2),!. 文字ならびの取得(Chars) :- get_chars(Chars). 取得したならびの反転(Chars,Chars2) :- reverse(Chars,Chars2),!. 第一文字と最終文字を除外(Chars,L2) :- append([_],L2,[_],Chars),!. 第一文字と最終文字を除外したならびの反転(L2,L3) :- reverse(L2,L3),!. 第一行目の表示(L) :- ならびの文字表示(L),nl,!. 第二行目以降の表示(L2,L3) :- 転置([L1,L3],L4),ならびの行表示(L4),!. 最終行の表示(L3) :- ならびの文字表示(L),nl,!. ならびの行表示([]) :- write('\n'),!. ならびの行表示([A|R]) :- write_formatted('%t\n',[A]),ならびの行表示(R).
507 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 18:42:01 ] >>496 % Prolog ファイル入力した漢字データ(全角)を読み込み、行数を数えながら逆から表示する(_ファイル名) :- ファイル入力した漢字データ(全角)を読み込み(_ファイル名,Lines), 行数を数えながら逆から表示する(Lines),!. ファイル入力した漢字データ(全角)を読み込み(_ファイル名,Lines) :- get_lines(_ファイル名,Lines). 行数を数えながら逆から表示する(Lines) :- 行数を数えながら逆から表示する(1,Lines). 行数を数えながら逆から表示する(_,[]) :- !. 行数を数えながら逆から表示する(N,[_行|R]) :- 文字列の反転(_行,_反転した行), write_formatted('%t:%t\n',[N,_反転した行]), N2 is N + 1, 行数を数えながら逆から表示する(N2,R). 文字列の反転(_文字列,_反転した文字列) :- atom_chars(_文字列,_文字ならび), reverse(_文字ならび,_反転した文字ならび), atom_chars(_反転した文字列,_反転した文字ならび).
508 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 18:56:47 ] >>497 % Prolog 'ファイルのデータ(英文)を読み込み、一行毎の文字数(スペースも含む)とワード数を数える'(_ファイル名) :- 'ファイルのデータ(英文)を読み込み'(_ファイル名,Lines), '一行毎の文字数(スペースも含む)とワード数を数えて表示する'(Lines). 'ファイルのデータ(英文)を読み込み'(_ファイル名,Lines) :- get_lines(_ファイル名,lines). '一行毎の文字数(スペースも含む)とワード数を数えて表示する'(Lines) :- '一行毎の文字数(スペースも含む)とワード数を数えて表示する'(1,Lines). '一行毎の文字数(スペースも含む)とワード数を数えて表示する'(_,[]) :- !. '一行毎の文字数(スペースも含む)とワード数を数えて表示する'(N,[Line|R]) :- 文字数を数える(Line,_文字数), ワード数を数える(Line,_ワード数), write_formatted('=>%t:%t文字、%tワード\n',[N,_文字数,_ワード数]), N2 is N + 1, '一行毎の文字数(スペースも含む)とワード数を数えて表示する'(N2,R). 文字数を数える(Line,_文字数) :- sub_atom(Line,0,_文字数,0,Line),!. ワード数を数える(Line,_ワード数) :- split(Line,[' ','.'],語彙ならび), length(語彙ならび,_ワード数),!.
509 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 19:14:34 ] >>498 % Prolog '1月1日が金曜日の平年(たとえば2010年)について、月日の入力データから、曜日を求める' :- 催促付き整数入力('月を入力してください:',_月), 催促付き整数入力('日を入力してください:',_日), 曜日を求める(_月,_日,_曜日), write_formatted('%t月%t日は%t日です\n',[_月,_日,_曜日]),!. 曜日を求める(_月,_日,_曜日) :- 曜日を求める(1,1,_月,_日,金曜,_曜日). 曜日を求める(_月,_日,_月,_日,_曜日,_曜日) :- !. 曜日を求める(_月1,_日1,_月,_日,_曜日1,_曜日) :- 翌日(_月1,_日1,_翌日の月,_翌日の日), 曜日連鎖(_曜日1,_曜日2), 曜日を求める(_翌日の月,_翌日の日,_月,_日,_曜日2,_曜日). 翌日(2,28,3,1) :- !. 翌日(_月,30,_翌日の月,1) :- member(_月,[4,6,9,11]),_翌日の月 is _月 + 1,!. 翌日(_月,31,_翌日の月,1) :- member(_月,[1,3,5,7,8,10,12]),_翌月の月 is _月 + 1,!. 翌日(_月,_日,_月,_翌日の日) :- _翌日の日 is _日 + 1. 曜日連鎖(月曜,火曜). 曜日連鎖(火曜,水曜). 曜日連鎖(水曜,木曜). 曜日連鎖(木曜,金曜). 曜日連鎖(金曜,土曜). 曜日連鎖(土曜,日曜). 曜日連鎖(日曜,月曜).
510 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 20:13:17 ] code.nanigac.com/forum/view/453 # Prologでリスト操作をする関数をいくつか書いているんですが、 # どうもうまく動いてくれません。 # うまく動いてくれないのがいくつかあるのですが、全部あげたら # 切りがないですし、図々しすぎるので、とりあえず # test1関数とtest2関数の2つ(2つでも図々しいきがするけれど)の相談に乗ってください。 # # test1関数 # 2つのリストを受け取って2つを(交互に)合わせたリストを作る # 例1、test([a,b,c],[1,2,3],X). --> X = [a,1,b,2,c,3] # 例2、test([a,b,c],X,[a,1,b,2,c,3]). --> X = [1,2,3] # 例3、test([a,b,c],[1,2,3],[a,1,b,2,c,3]). --> true # 例4、test([a,b,c],[1,2,3],[a,b,c,1,2,3]). --> false
511 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 20:14:34 ] >>510 % Prolog test1([],[],[]). test1([A|R1],[B|R2],[A,B|R3]) :- test1(R1,R2,R3).
512 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 20:28:58 ] ime.nu/code.nanigac.com/forum/view/453 # test2関数 # 2つのリストを受け取り、まず一つ目のリストからダブリを取り除く。 # そして、それが二つ目のリストと(順番も含めて)同じかチェックする。 # 例1、test2([a,b,c,c,b,a],[a,b,c]). --> true # 例2、test2([a,b,c,b,c,],[c,b,a]). --> false (順番が違うので) # 例3、test2([a,a,b,b,c,c],X). --> X = [a,b,c]
513 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 20:34:53 ] >>512 % Prolog test2([],[]). test2([A|R1],[A|R2]) :- ならびの削除(A,R1,R3), test2(R3,R2). ならびから削除(_,[],[]). ならびから削除(A,[A|R1],R2) :- ならびから削除(A,R1,R2). ならびから削除(A,[B|R1],[B|R2]) :- \+(A=B),ならびから削除(A,R1,R2).
514 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 21:03:05 ] pc12.2ch.net/test/read.cgi/tech/1263824755/336 # [1] 授業単元: 情報処理B # [2] 問題文(含コード&リンク): ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10463.txt # # ★課題2★ # キーボードから(標準入力から)スペースで区切られた3つの実数 a b c を # 受け取って(最後は改行)、二次方程式 ax2+bx+c=0 の解を画面に(標準出力に)出力せよ。 # 二次方程式の解は複素数の範囲で考えること。二次方程式を解く部分はmain関数とは # 別にしてmain関数から呼ぶこと。グローバル変数の使用は禁止。
515 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 21:07:29 ] pc12.2ch.net/test/read.cgi/tech/1263824755/336 # [1] 授業単元: 情報処理B # [2] 問題文(含コード&リンク): ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10463.txt # # ★課題1★ # キーボードから(標準入力から)1つの十進数表現の正の整数を受け取って、 # その数が3の倍数かまたは各桁の数字のいづれかに3が入っている数ならば # 画面に(標準入力に)YES、そうでなければ、NOと出力せよ。与えられた条件を # 判定する部分はmain関数とは別の関数にしてmain関数から呼ぶこと。 # グローバル変数の使用は禁止。
516 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 21:10:17 ] pc12.2ch.net/test/read.cgi/tech/1263824755/336 # [1] 授業単元: 情報処理B # [2] 問題文(含コード&リンク): ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10463.txt # # ★課題3★ # キーボードから(標準入力から)スペースで区切られて最後が改行の3つの実数を # 3回を受け取って、それらの合計9この実数からなる3行3列の行列の逆行列を # 求めて画面に(標準出力)出力せよ。 # 逆行列を求める部分はmain関数とは別の関数にしてmain関数から呼ぶこと。 # グローバル変数の使用は禁止。
517 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 21:18:16 ] pc12.2ch.net/test/read.cgi/tech/1263824755/336 # [1] 授業単元: 情報処理B # [2] 問題文(含コード&リンク): ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10463.txt # # ★課題4★ # 複素数の行列を扱うことを考える。実部と虚部をdouble型のメンバーとしてもつ # 構造体struct complex型の二次元配列を使って、2行2列の成分からなる複素数の # 行列を扱う。Struct complex型の変数の足し算やかけ算、および上述のような # 2行2列の複素行列の足し算やかけ算を行う関数を準備し、それらの関数を # 利用して、2行2列の複素数の行列のexpを、Maclaurin展開の10項目までを # 計算することによって求めなさい。グローバル変数の使用は禁止。 # 実行時に入力する行列の内容については、実数だけからなる対角行列、 # 純虚数の対角行列、一般の複素数の対角行列、その他の一般の行列などの # 多くの場合についてテストすること。
518 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 21:22:17 ] pc12.2ch.net/test/read.cgi/tech/1263824755/336 # [1] 授業単元: 情報処理B # [2] 問題文(含コード&リンク): ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10463.txt # # ★課題5★ # 1行にスペースで区切られた2つの実数が書かれているデータファイルをエディタで # 作成して適当な名前で保存しておけ。標準入力からのリダイレクトを使って # そのファイルからデータを読み込み、データのグラフを画面に(標準入力に)出力せよ 。 # ここで、各行の左側のデータをxデータ、右側のデータをyデータとする。 # また、グラフはテキスト画面にマイナス(‐)やプラス(+)や縦棒(|)や # アスタリスク(*)などの文字を出力することによって実現せよ。さらに、 # yデータの平均と標準偏差も求めて画面に(標準出力に)出力せよ。様々なデータ数や # データ範囲をもつ入力データを与えられても適切に動くようにつくることが # 望ましいが、難しければ入力データ範囲は0以上10以下に限定するなど、 # 自分でプログラムの仕様を簡素化してもよい。
519 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 21:28:15 ] pc11.2ch.net/test/read.cgi/db/1252492296/474 # SQL Server Compact 3.5 で、a_tbl と b_tbl のコードが一致した場合に # a_tbl に、b_tblの名前をセットするみたいなことしたいのですが無理ですか? # # UPDATE a_tbl # SET name = b_tbl.name # FROM b_tbl # WHERE a_tbl.no = b_tbl.no # # 実行すると、「FROM 句はこのクエリの種類では使用できません」ってエラーになります。 # SQL Server 2008 だと問題ないのですが・・・
520 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 22:06:58 ] >>519 % Prolog 'a_tbl と b_tbl のコードが一致した場合に a_tbl に、b_tblの名前をセットする' :- a_tbl(_no,_name1), b_tbl(_no,_name2), update_a_tbl(_no,_name2), fail. 'a_tbl と b_tbl のコードが一致した場合に a_tbl に、b_tblの名前をセットする'. update_a_tbl(_no,_name2) :- retract(a_tbl(_no,_)), assertz(a_tbl(_no,_name2)), fail. update_a_tbl(_,_).
521 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 22:25:00 ] >>515 % Prolog 'キーボードから(標準入力から)1つの十進数表現の正の整数を受け取って、その数が3の倍数かまたは各桁の数字のいづれかに3が入っている数ならば画面に(標準入力に)YES、そうでなければ、NOと出力せよ' :- 'キーボードから(標準入力から)1つの十進数表現の正の整数を受け取って(_正の整数), その数が3の倍数かまたは各桁の数字のいづれかに3が入っている(_正の整数,_診断), write_formatted('%t\n',[_診断]),!. 'キーボードから(標準入力から)1つの十進数表現の正の整数を受け取って(_正の整数):- repeat, get_integer(_正の整数), integer(_正の整数), _正の整数 >= 0,!. その数が3の倍数かまたは各桁の数字のいづれかに3が入っている(_数,'YES') :- 0 is _数 mod 3,!. その数が3の倍数かまたは各桁の数字のいづれかに3が入っている(_数,'YES') :- 各桁の数字のいづれか(_数,L), member(3,L),!. その数が3の倍数かまたは各桁の数字のいづれかに3が入っている(_,'NO'). 各桁の数字のいづれか(N,[N]) :- N < 10,!. 各桁の数字のいづれか(N,[M|R]) :- M is N mod 10, M2 is N // 10, 各桁の数字のいづれか(M2,R).
522 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 22:28:41 ] >>521 (>>515 ) 一部表示し直し % Prolog 'キーボードから(標準入力から)1つの十進数表現の正の整数を受け取って、その数が3の倍数かまたは各桁の数字のいづれかに3が入っている数ならば画面に(標準入力に)YES、そうでなければ、NOと出力せよ' :- 'キーボードから(標準入力から)1つの十進数表現の正の整数を受け取って(_正の整数), その数が3の倍数かまたは各桁の数字のいづれかに3が入っている(_正の整数,_診断), write_formatted('%t\n',[_診断]),!.
523 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 05:59:00 ] >>484 % Prolog (その一) インデント深度とは(_行,_インデント深度) :- '行頭からタブ、空白以外の文字が現れるまでがn回(n>=0)現れた場合深度=nとする'(_行,_n), _n = _インデント深度,!. '行頭からタブ、空白以外の文字が現れるまでがn回(n>=0)現れた場合深度=nとする'(_行,_n) :- sub_atom(_行,_n,1,_,C), \+(C=' '), \+(C='\t'),!.
524 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 06:13:04 ] >>523 (>>484 ) % Prolog (その一) 「インデント深度とは」の「とは」は説明的ではあるが実用上好ましいとはいえない。 % 備考的な部分の定義ではしばしば迷うところ。普通は以下だが、 インデント深度(_行,_インデント深度) :- '行頭からタブ、空白以外の文字が現れるまでがn回(n>=0)現れた場合深度=nとする'(_行,_n), _n = _インデント深度,!. % 辞書引きの際は実務的な定義を参照する感じの定義。 インデント深度とは(_行,_インデント深度) :- インデント深度(_行,_インデント深度). % ひっくり返して、実用時に辞書を引く感じ。 インデント深度(_行,_インデント深度) :- インデント深度とは(_行,_インデント深度).
525 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 06:26:39 ] >>523 (>>484 ) % Prolog 出題が不完全でtab処理ができていない。普通は、 tab(空白,6). '行頭からタブ、空白以外の文字が現れるまでがn回(n>=0)現れた場合深度=nとする'(_行,_n) :- atom_chars(_行,Chars), 行頭からタブ、空白以外の文字が現れるまでの文字数(0,Chars,_n). 行頭からタブ、空白以外の文字が現れるまでの文字数(_n,[],_n) :- !. 行頭からタブ、空白以外の文字が現れるまでの文字数(_n,[A|_],_n) :- \+(A='\t'),\+(A=' '),!. 行頭からタブ、空白以外の文字が現れるまでの文字数(N,['\t'|R],_n) :- tab(空白,M), N2 is N + M, 行頭からタブ、空白以外の文字が現れるまでの文字数(N2,R,_n),!. 行頭からタブ、空白以外の文字が現れるまでの文字数(N,[' '|R],_n) :- N2 is N + 1, 行頭からタブ、空白以外の文字が現れるまでの文字数(N2,R,_n),!.
526 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 06:28:44 ] >>525 (>>484 ) 書き直し。すみません。 % Prolog 出題が不完全でtab処理ができていない。普通は、 tab(空白,6). '行頭からタブ、空白以外の文字が現れるまでがn回(n>=0)現れた場合深度=nとする'(_行,_n) :- atom_chars(_行,Chars), 行頭からタブ、空白以外の文字が現れるまでの文字数(0,Chars,_n). 行頭からタブ、空白以外の文字が現れるまでの文字数(_n,[],_n) :- !. 行頭からタブ、空白以外の文字が現れるまでの文字数(_n,[A|_],_n) :- \+(A='\t'),\+(A=' '),!. 行頭からタブ、空白以外の文字が現れるまでの文字数(N,['\t'|R],_n) :- tab(空白,M), N2 is N + M, 行頭からタブ、空白以外の文字が現れるまでの文字数(N2,R,_n),!. 行頭からタブ、空白以外の文字が現れるまでの文字数(N,[' '|R],_n) :- N2 is N + 1, 行頭からタブ、空白以外の文字が現れるまでの文字数(N2,R,_n),!.
527 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 07:35:48 ] >>514 % Prolog 'キーボードから(標準入力から)スペースで区切られた3つの実数 a b c を 受け取って(最後は改行)、二次方程式 ax2+bx+c=0 の解を画面に(標準出力に)出力せよ。二次方程式の解は複素数の範囲で考えること。' :- 'キーボードから(標準入力から)スペースで区切られた3つの実数 a b c を 受け取り(A,B,C), 二次方程式の解(A,B,C,X). 'キーボードから(標準入力から)スペースで区切られた3つの実数 a b c を 受け取り(A,B,C) :- get_line(Line), split(Line,[' '],L), findall(V,(member(A,L),atom_to_term(A,V,_)),[A,B,C]),!. 二次方程式の解(A,B,C,X) :- _判別式 is B ^ 2 - 4 * A * C, 判別式により解を求める(_判別式,A,B,C,X). 判別式により解を求める(_判別式,A,B,C,X) :- ( _判別式 > 0; _判別式 > 0.0),!, ( X is ((-1) * B + sqrt(_判別式)) / ( 2 * A); X is ((-1) * B + sqrt(_判別式)) / ( 2 * A)). 判別式により解を求める(_判別式,A,B,C,X) :- (_判別式 = 0;_判別式 = 0.0),!, X is ((-1) * B) / ( 2 * A). 判別式により解を求める(_判別式,A,B,C,X) :- ( _判別式 < 0; _判別式 < 0.0),!, U is (-1) / (2 * A), V is sqrt((-1) * _判別式)), ( X = (U + iV); X = (U - iV)).
528 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 12:11:35 ] pc12.2ch.net/test/read.cgi/tech/1248012902/815 # 【 課題 】ime.nu/rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/915.txt # 【 形態 】1. Javaアプリケーション(main()で開始) # # しりとりゲームをするプログラム # 第一段階ーShiritori.javaを次に掲載する。 # これをEclipseに入力する # ー与えられた単語の可否を判定するためのクラスReferee.javaを作成する # # 第二段階ーReferee.javaをしりとりのルールにのっとった判定をさせるように改善 # # 第一段階のRefereeの使用 # ・直前に入力された単語の末尾の文字を記憶するchar型のフィールド # lastChar # ・次の単語がどの文字で始まらなければならないかをchar型で返すメソッド # mustBeginWith() # ・引数として与えられた単語の可否を判定し、可ならtrueを返すとともにlastCharを更新し、否ならfalseを返すメソッド # isOK(String newWord) # とりあえずは何でもかんでも「可」とするように作る
529 名前:デフォルトの名無しさん [2010/01/30(土) 13:33:48 ] Microsoft社 Visual Studio C++のソフトウェアを用いて チャットアプリケーションを作れと言われたのですが、 当方C言語系がとても苦手で困っています;; システムの仕様は ・1対1の環境でのみ動作。 ・サーバ側はポート番号を指定して、クライアントからの接続を待つ。 ・クライアント側はサーバのIPアドレスとポート番号を指定して、サーバに接続する。 ・この時の通信はTCPで行う。 ・クライアントが通信をやめたい場合は"endc" ・サーバ側がやめたい場合は"ends"と入力。 ・WinSockを使用してWindowsのコンソールプログラムとして基本的な簡易なチャット 以上の条件でプログラミングしていただけると幸いです。 よろしくお願いします m__)m
530 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 16:46:35 ] pc12.2ch.net/test/read.cgi/tech/1263824755/351 # [1] 授業単元:プログラミング演習� # [2] 問題文(含コード&リンク): # □1□2□3□4□5□6□7□8□9 # の□に四則の演算子(+,−)や空白を入れて100なるような # 小町算の全ての解を求めるプログラムを作成すること # # 例えば # 12 + 3 - 4 + 5 + 67 + 8 + 9 = 100 # 123 - 45 - 67 + 89 = 100 #
531 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 16:47:53 ] pc12.2ch.net/test/read.cgi/tech/1263824755/353 # [1] 授業単元:コンピュータグラフィック # [2] 問題文(含コード&リンク):10468.txt # モノクロ画像を読み込み,(319,239) の画素値を 0 とする # 画像を関数を使用して読み込み,それを 2 次元配列に格納する関数を作成する. # 指定した画素の画素値をセットする. # 2 次元配列に格納していた画像を 1 次元配列に再度格納し,関数を使用して画像ファイルとして書き戻す. #
532 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 17:17:04 ] >>528 % Prolog 全然ルールが違うのですが「馬名しりとり」というのを作ってみました。 nojiriko.asia/prolog/j68_815.html
533 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 17:22:56 ] >>532 全然違うというのは日本語として変かな。 javaの宿題とルールが違っている上に、馬名である特徴も今のところほとんどありません。 今後、血統や競争成績の検索やコメントを付与する機能を付け加えたいと思います。
534 名前:デフォルトの名無しさん mailto:sage [2010/01/30(土) 23:25:03 ] pc12.2ch.net/test/read.cgi/tech/1263824755/369 # [1] 授業単元: プログラム演習? # [2] 問題文(含コード&リンク): # 3次元空間において線分が平面を通過しているか判定するプログラムを作りなさい # (線分の座標(x1,y1,z1) (x2,y2,z2)と平面の四隅の座標は入力する) # 平面を通過していても平面の四隅の中に交点がない場合は通過していないものとする
535 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 13:44:22 ] pc12.2ch.net/test/read.cgi/tech/1263824755/381 # [1] 授業単元:プログラミング演習? # [2] 問題文(含コード&リンク): 入出力とデータファイルへの保存とその間の処理あるプログラムを作成する # ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10475.txt # 入出力とデータファイルへの保存とその間の処理のあるプログラムの作成 # # 作成条件 # 1.入力→処理→出力のシステムが構築されていること # 2.データをファイルに保存しておけるようにしておく # 3.データに構造体が用いられること # 4.main以外を1つ以上関数化すること # 5.datファイルも各自で作成する
536 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 19:32:39 ] >>530 % Prolog (その一) 空白を含む文字列の空白を取り除いて解析する(_文字列,_項) :- 文字列から空白を取り除く(_文字列,_空白を取り除かれた文字列), 文字列を解析して項を生成する(_空白を取り除いた文字列,_項). 文字列から空白を取り除く(_文字列,_空白を取り除かれた文字列) :- atom_chars(_文字列,Chars), ならびから空白要素を取り除く(Chars,_空白を取り除かれたならび), atom_chars(_空白を取り除かれた文字列,_空白を取り除かれたならび). ならびから空白要素を取り除く([],[]) :- !. ならびから空白要素を取り除く([' '|R1],R2) :- ならびから空白要素を取り除く(R1,R2),!. ならびから空白要素を取り除く([A|R1],[A|R2]) :- ならびから空白要素を取り除く(R1,R2),!. 文字列を解析して項を生成する(_文字列,_項) :- atom_to_term(_文字列,_項,_).
537 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 05:59:17 ] pc12.2ch.net/test/read.cgi/tech/1263824755/394 # [1] 授業単元: プログラミング演習 # [2] 問題文(含コード&リンク): 住所録の機能を実現するプログラムを作成せよ。
538 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 06:03:19 ] pc12.2ch.net/test/read.cgi/tech/1263824755/391 # すいませんが規制されてるので携帯から簡単に # 問題文:ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10482.txt # キーボードから名前と年齢をレコードとするデータを入力し、 # ファイルに書き出すプログラムを作成しなさい。ただしデータの終わりは^z(CTRL+Z)とする。 # また、書き出す先のファイル名はコマンドライン引数を使用して指定すること。 # # 「実行結果」 # # C:\Kadai01>Kadai01 a.txt # # 名前 年齢 # 上戸彩 20 # 長澤まさみ 29 # 新垣結衣 20 # ^z
539 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 06:06:12 ] pc12.2ch.net/test/read.cgi/tech/1252382593/516 # 2つの同じ要素数のリスト (Num a) => [a] を、 # 片方を1要素分横にずらして和を取りたいです。 # たとえば [1, 2, 3] と [7, 8, 9] であれば # [1, 2, 3, 0] と [0, 7, 8, 9] の和です。 # # 今は定義を素直に実装して次のようにやってます。 # shearAdd :: (Num a) => [a] -> [a] -> [a] # shearAdd as bs = zipWith (+) (as ++ [0]) (0 : bs) # # もっと洗練された方法はあるでしょうか。 # たとえば (++) 演算子は左辺のリストの要素数が大きいと不利なので、 # これを改善できるとか。
540 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 06:18:46 ] pc12.2ch.net/test/read.cgi/tech/1263824755/358 # [1] 授業単元:プログラミング演習? # [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10471.txt # # ≪問題と条件≫ # 第1引数に指定したファイルからバイナリーモードで1バイトずつファイルを読み込み、 # ファイルの内容を16進数で示したものを第2引数に指定したファイルに書き込むプログラムを作成せよ。ただし、16バイトごとに改行を入れること。
541 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 06:34:03 ] pc12.2ch.net/test/read.cgi/tech/1248012902/821 # 【 課題 】線分描画,点描画のメソッドをつかって,放物線を描画して下さい.
542 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 06:37:34 ] pc12.2ch.net/test/read.cgi/tech/1263824755/387 # # 息抜きにって下さい。 # 自分は分からないっす # # お客様に「今後の夏のセールには、必ず連絡してほしい」といわれた時 # # お客様に「もらいもので気に入らないので他の商品と取り替えて欲しい」といわれた時 # # 販売員の正しい行動を。
543 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 07:05:19 ] >>539 使用言語:J f=:dyad def '(x,0)+0,y' 1 2 3 f 7 8 9 1 9 11 9
544 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 07:14:10 ] >>481 使用言語:J >:i.10 1 2 3 4 5 6 7 8 9 10
545 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 07:18:18 ] >>483 問1 使用言語:J ]COM=: 30?100 95 18 11 58 67 85 60 21 30 10 81 27 47 0 35 75 24 69 23 26 29 98 54 92 40 34 45 52 33 79
546 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 13:29:23 ] pc12.2ch.net/test/read.cgi/tech/1263824755/369 # [1] 授業単元: プログラム演習� # [2] 問題文(含コード&リンク): # 3次元空間において線分が平面を通過しているか判定するプログラムを作りなさい # (線分の座標(x1,y1,z1) (x2,y2,z2)と平面の四隅の座標は入力する) # 平面を通過していても平面の四隅の中に交点がない場合は通過していないものとする