1 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 09:57:19 ] 第二編も512Kbyte越えで終了しました。 前スレで未解決な課題は順次このスレにコピーします。
384 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 20:13:21 ] pc12.2ch.net/test/read.cgi/tech/1263824755/74 # [1] 授業単元:プロトタイプ宣言 # [2] 問題文(含コード&リンク):『私は○○です』と表示する関数を作成して # main関数でそれを三回呼び出して、画面に三回出力プログラムを作成せよ。 # 表示のための関数の名前は『display_name』とせよ #
385 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 20:19:16 ] >>384 % Prolog programがmainにあたる。 display_name :- write('私は○○です\n'). program :- for(1,N,3),display_name,N=3,halt.
386 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 21:09:18 ] >>384 このプログラムのドコが「説明を論理式で書き表すことができるならば、 その論理式がすなわちプログラムである」のだろうか。
387 名前:386 mailto:sage [2010/01/22(金) 23:43:35 ] アンカミス X:>>384 --> O:>>385
388 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 03:44:26 ] pc12.2ch.net/test/read.cgi/tech/1263824755/77 # [1] 授業単元:プログラミング実習 # [2] 問題文:クラスタリングk-means法 # 1、初期値として、クラスタ数および初期のデータ分割を与える。 # 2、データ分割に基づき各分割の重心を求める。 # さらに、重心と各事例データとの距離を求める # 3、各事例を最も近いクラスタに割り当てる。 # 4、上記の割り当てが前回と同じであれば終了。 # 更新があれば2に戻る
389 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 03:51:44 ] pc12.2ch.net/test/read.cgi/tech/1263824755/79 # [1] 授業単元:応用プログラミング # [2] 問題文(含コード&リンク): # ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10409.txt # # 直方体のデータが格納されたファイルを取り扱うプログラムを実装したい。 # プログラムリスト中に必要な関数を実装し、プログラムを完成させよ。尚、プログラムは以下の前提条件(1)−(4)を満たすよう作成せよ。 # (1)新たに大域変数やクラス、クラス内のメンバ変数を宣言してはならない。 # (2)main関数を含む既存の関数、クラス内のメンバ変数は一切変更してはならない。 # (3)直方体のデータが一行毎に、直方体の名前、幅、奥行き、高さ、の順に、スペース区切りで格納されているファイルを読み込める。 # (4)最大20個分のデータを読み込める。 # (5)初めに読み込むファイル名を入力した後、読み込んだデータ数を表示する。 # (6)(5)の表示後、以下に示す操作が繰り返し実行可能であること。 # 操作方法と出力の詳細については、実行例を参考にすること。 # (ア)データを読み込んだ順に表示する。 # (イ)体積、もしくは表面積の大きい順に表示する。 # (ウ)立方体、もしくは正四角柱のみを表示する。 # (エ)直方体を1個指定し、3辺の長さ(幅、奥行き、高さ)を指定した倍率だけ伸縮する。
390 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 03:59:06 ] >>386 >>387 >>382 の方ではなくて? これは結構苦闘してる。 >>385 は「説明を論理式で書き表すことができるならば、その論理式がすなわちプログラムである」の 意識の全くないプログラムだけど。題意もつかめなかった。
391 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 04:11:07 ] >>386 >>385 は # prolog -e 私は○○です.pro 私の名前は○○です # と表示されるためには、mainではなく、述語名がprogramである必要が あることを示すために書いたコードです。
392 名前:391 mailto:sage [2010/01/23(土) 04:33:07 ] すみません。私の名前は○○ですを3回繰り返すのを忘れました。
393 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 04:53:45 ] >>384 % Prolog この問題は編集を余儀なくされました。もっと素直な表現がありそう。 program :- 『私は○○です』と画面に表示する関数display_nameを三回呼び出して出力する, 終了. 『私は○○です』と画面に表示する関数display_nameを三回呼び出して出力する :- display_name, display_name, display_name. display_name :- write('私は私は○○です\n'). 終了 :- halt.
394 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 05:00:40 ] --lua function display_name() print "私は私は○○です" end function main() display_name() display_name() display_name() end main()
395 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 05:01:31 ] >>379 でそれに関することを書きたかったのですが、 ># [2] 問題文(含コード&リンク):『私は○○です』と表示する関数を作成して ># main関数でそれを三回呼び出して、画面に三回出力プログラムを作成せよ。 ># 表示のための関数の名前は『display_name』とせよ 「関数を作成して」あたりを切り落としたくないのですが、述語名に取り込む 方法が今のところ見つからない。
396 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 05:11:05 ] function display_name(name) print("私は私は"..name.."です") end function main() name=io.read() display_name(name) name=io.read() display_name(name) name=io.read() display_name(name) end main()
397 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 07:44:33 ] >>395 これではだめかいwww program :- 『私は○○です』と表示する関数を作成してmain関数でそれを三回呼び出して、画 面に三回出力プログラムを作成せよ . 『私は○○です』と表示する関数を作成してmain関数でそれを三回呼び出して、画面に 三回出力プログラムを作成せよ :- 『私は○○です』と表示する関数を作成して , main. 『私は○○です』と表示する関数を作成して :- assertz((display_name :- write('私は○○です\n'))). main :- display_name,display_name,display_name.
398 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 09:03:32 ] >>389 の kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10409.txt には大量の実行例とデータが載っています。2レスに分けて掲載します。 # [実行例] # ファイル名を入力して下さい => data.txt # 5個のデータを読み込みました. # 1: 入力順に表示 2: 整列 3: 探索 4: 拡大・縮小 0: 終了 # 何をしますか? => 1 # No. Name Width Depth Height Volume Area # [ 1] A 1 2 3 6 22 # [ 2] B 3 3 3 27 54 # [ 3] C 3 2 1 6 22 # [ 4] D 2 2 2 8 24 # [ 5] E 5 1 5 25 70 # 1: 入力順に表示 2: 整列 3: 探索 4: 拡大・縮小 0: 終了 # 何をしますか? => 1 # 何順に整列しますか?(0:体積 1:表面積) => 0 # No. Name Width Depth Height Volume Area # [ 2] B 3 3 3 27 54 # [ 5] E 5 1 5 25 70 # [ 4] D 2 2 2 8 24 # [ 1] A 1 2 3 6 22 # [ 3] C 3 2 1 6 22
399 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 09:04:22 ] # 1: 入力順に表示 2: 整列 3: 探索 4: 拡大・縮小 0: 終了 # 何をしますか? => 3 # 何を探索しますか?(0:体積 1:表面積) => 1 # No. Name Width Depth Height Volume Area # [ 2] B 3 3 3 27 54 # [ 4] D 2 2 2 8 24 # [ 5] E 5 1 5 25 70 # 1: 入力順に表示 2: 整列 3: 探索 4: 拡大・縮小 0: 終了 # 何をしますか? => 4 # どの直方体ですか?(1〜5) => 1 # 何倍しますか? => 1.5 # 1: 入力順に表示 2: 整列 3: 探索 4: 拡大・縮小 0: 終了 # 何をしますか? => 1 # No. Name Width Depth Height Volume Area # [ 1] A 1.5 3 4.5 20.25 49.5 # [ 2] B 3 3 3 27 54 # [ 3] C 3 2 1 6 22 # [ 4] D 2 2 2 8 24 # [ 5] E 5 1 5 25 70 # 1: 入力順に表示 2: 整列 3: 探索 4: 拡大・縮小 0: 終了 # 何をしますか? => 0 # 終了します.
400 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 09:06:12 ] # データファイル # A 1 2 3 # B 3 3 3 # C 3 2 1 # D 2 2 2 # E 5 1 5
401 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 09:08:27 ] >>384 使用言語:J display_name=:[: smoutput '私は○○です。'"_ main=:display_name^:(3) main '' 私は○○です。 私は○○です。 私は○○です。
402 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 16:25:45 ] pc12.2ch.net/test/read.cgi/tech/1263824755/83 # [1]プログラミング演習(大学専門過程演習授業) # [2] コマンドライン引数で与えられたテキストファイルを読み込み # 空行でなければ、その行に含まれているスペース、タブを # 除去したものを標準出力するプログラム。但し英数字と"_"で # 構成される文字列同士の間には一つのスペースは残す。 # ",'で囲まれた部分に関してはスペース、タブはそのまま残す # "で囲まれた部分について最後の文字が¥であってはならない。 # 'で囲まれた部分について最後の文字が¥であってはならない。 # (テキストファイルの空行と余計な空白/タブを除去する # プログラムでクオテーションに配慮したもの)
403 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 23:22:54 ] pc12.2ch.net/test/read.cgi/tech/1263824755/91 # [1] 授業単元:情報処理 # [2] 問題文: # # 問1 キーボードから3個の実数(整数でない)値を1行に1組として計5組入力し、 # ファイル(ファイル名data1.txt)に保存する。 # # 問2 # 問1で作ったファイルから実数値を読み込み、総合計と各組の実数の平均を求める # ただし、ファイルに書かれている組の数は不明とする。
404 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 06:23:46 ] pc12.2ch.net/test/read.cgi/tech/1263824755/93 # [1] 授業単元:プロトタイプ宣言 # [2] 問題文(含コード&リンク): # 次の式を以下の条件(値)に基づいて計算.表示するプログラムを作成せよ。ただし式は簡単化せずそのままプログラムすることとして、更に表示するときは計算の答えと合� 錣擦鴇魴�値)も表示して分かりやすくせよ。 # # 計算する式 # {(a+b)c-a(b-c)}/{(c/b)a+abc-ca} # # 条件1 # a=3 b=4 c=2 # a=3 b=4.3 c=2.5 # a=32.6 b=57.82 c=2.543 # # この問題を、 # 式の分だけを関数化した場合 # 式と出力部分を関数化した場合 # の2つの場合でプログラムを作成せよ
405 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 06:24:41 ] pc12.2ch.net/test/read.cgi/tech/1263824755/94 # [1] C # [2] # 反復列 x_n+1=a*x_n(1-x_n),0<=a<=4,0<=x<=1 # に対して、x_nが1周期(不動点)、2周期、4周期、8周期、16周期 # をもつaの範囲について、プログラムを作成して確かめよ。 # ※ # ○周期というのはaがある値のとき、○個の解で振動するという意味です※
406 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 06:28:27 ] pc12.2ch.net/test/read.cgi/tech/1263824755/95 # [1] 授業単元: プログラミング演習 # [2] 問題文(含コード&リンク):ime.nu/www.acm-japan.org/past-icpc/domestic2008/problems/all_ja.html # # 等しい合計点 # # 太郎と花子はそれぞれカードを何枚か持っている.各カードには点数が書かれている. # 太郎のカードと花子のカードを 1 枚ずつ交換して,それぞれの持つカードの合計点数が等しくなるようにしたい. # どのカードとどのカードを交換したらよいか. # # ただし,カードを交換しなくても合計点数が等しい場合でも,必ずカードの交換を行うものとする.
407 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 07:02:19 ] pc12.2ch.net/test/read.cgi/tech/1248012902/778 # 【 課題 】1.任意のWEBページからime.nu/ で始まるハイパーリンクを抽出するプログラムの作成 # ime.nu/rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/901.java # 2.任意のWEBページ10ページに含まれる単語のうち,上位10位の単語リストとその出現頻度 # ime.nu/rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/903.java # 【 形態 】1. Javaアプリケーション(main()で開始) # 【 GUI 】制限なし # 【 期限 】1/25 # 【 Ver 】1.6.0_14 # 【 補足 】1.に関してはプログラムはあっていると思うのですがなぜか実行 # できないので、実行できたら結果をコピペで教えてもらえたら嬉しいです # 2.に関しては実行結果があるのですが、上から多い順に並んでいます # プログラムのどの部分でその並べ替えを行っているのか、またどんな # アルゴリズムを用いて並べ替えているのかを教えてもらえたら嬉しいです
408 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 12:47:28 ] pc12.2ch.net/test/read.cgi/tech/1263824755/102 # [1] 授業単元:プログラミング演習 # [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10419.zip # # ●問2.リストの一部を取り除く関数 # # 与えられた文字リストの先頭から見ていき、要素が'<'なら自身と(あれば)直前の要素を、'>'なら自身 # と(あれば)直後の要素を取り除く関数editを作成せよ。 # editは与えられたリスト自体を変形し、変形後のリストを返す。 # # ●問3.いずれか一方のリストに含まれる要素からなるリストを返す関数 # # 引数として二種の文字リストが与えられると、いずれか一方のリストにのみ含まれる 要素を持つリストを新たに作成し返す関数exclusiveを作成せよ。 #
409 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 16:43:52 ] >>408 問2 使用言語:J edit=:monad define r=.y#~-.(+._1&|.)(<'>')=y r#~-.(+.1&|.)(<'<')=r ) ]C=:;/'a<bcd>ef>ghi' +-+-+-+-+-+-+-+-+-+-+-+-+ |a|<|b|c|d|>|e|f|>|g|h|i| +-+-+-+-+-+-+-+-+-+-+-+-+ edit C +-+-+-+-+-+-+ |b|c|d|f|h|i| +-+-+-+-+-+-+
410 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 16:50:03 ] >>408 問3 使用言語:J exclusive=:dyad def '(x -. y) , y -. x' ]A=:;/'abcdef' +-+-+-+-+-+-+ |a|b|c|d|e|f| +-+-+-+-+-+-+ ]B=:;/'defghi' +-+-+-+-+-+-+ |d|e|f|g|h|i| +-+-+-+-+-+-+ A exclusive B +-+-+-+-+-+-+ |a|b|c|g|h|i| +-+-+-+-+-+-+
411 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 20:46:43 ] pc12.2ch.net/test/read.cgi/tech/1263824755/103 # [1] 授業単元:Cプログラミング演習2 # [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10420.txt # (1) 指定した10 個の整数のうち,指定した数で割り切れる整数の個数を求めるプログラムを作成せよ. # 以下の関数を利用すること. # int div_enable(int *in, int num, int divisor) # in 複数の整数値が格納された配列の(先頭)ポインタ # num 入力値の数 # divisor 割り切れるかどうかの判定に使う除数 # 戻り値 入力値のうち, divisor で割り切れる整数の数 # 入力に関して # キーボードから整数(被除数用)をスペース1つずつ空けて10 個入力して改行する.次に除数用 # の自然数を1 つ入力し,改行する.この一連の入力時,例題や解答例のような入力を促す文字 # 等は決して表示しないこと. # 出力に関して # 割り切れる整数の個数を数値のみ (+改行)を出力する.指定した数値・改行以外の文字等の出 # 力は一切行わないこと.
412 名前:デフォルトの名無しさん mailto:sage [2010/01/24(日) 21:21:01 ] >>411 使用言語:J div_enable=: dyad def '+/0=x|y' ]in=:>:i.10 1 2 3 4 5 6 7 8 9 10 3 div_enable in 3
413 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 05:35:28 ] pc12.2ch.net/test/read.cgi/tech/1263824755/103 # [1] 授業単元:Cプログラミング演習2 # [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10420.txt # (2) 2 つの4×4 行列を2 次元配列に格納し,それらの積を求めるプログラムを作成せよ.以下の関数を # 利用すること. # void mult_array(int a0[4][4], int a1[4][4], int result[4][4]) # a0,a1 入力された行列の値が格納された2 次元配列のポインタ # result 演算結果の行列の値が格納された2 次元配列のポインタ # 戻り値 なし # 入力に関して # キーボードからまず,1 つめの行列の1 行目の4 つの整数をスペース1 つ開けて1 行で入力し, # 改行する.以下同様に1 つめの行列の2 行目,3 行目,4 行目,2 つめの行列の1・・・4 行目 # を入力する.この一連の入力時,入力を促す文字等は決して表示しないこと. # 出力に関して # 1行目に結果の行列の1 行目をスペース1 つあけて特に整形せず数値のみ出力(+改行),以下同 # 様に2 行目,3 行目,4 行目を特に整形せず数値のみ出力する.指定した数値・改行以外の文 # 字等の出力は一切行わないこと.
414 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 05:37:43 ] pc12.2ch.net/test/read.cgi/tech/1263824755/103 # [1] 授業単元:Cプログラミング演習2 # [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10420.txt # # (3) 平均値と中央値を求める関数を作成し,その関数を使用して平均値と中央値を出力するプログラム # を作成せよ.関数は下記の通りとする. # int median(int *in, int num) # in 複数の整数値が格納された配列の(先頭)ポインタ # num 入力値の数 # 戻り値 中央値 # int avg (int *in, int num) # in 複数の整数値が格納された配列の(先頭)ポインタ # num 入力値の数 # 戻り値 平均値(四捨五入した整数値, 負の場合丸め方は任意) # 入力に関して # キーボードから入力する整数の個数を入力し(最大で128 に対応すること)改行する.次に指 # 定した数の整数をスペース1つずつ開けて1行で入力し,改行する.この一連の入力時,例題 # や解答例のような入力を促す文字等は決して表示しないこと. # 出力に関して # 中央値 平均値(+改行)のみ出力.中央値と平均値の間はスペースを1 つ入れること.指定した # 数値・改行以外の文字等の出力は一切行わないこと.
415 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 06:03:31 ] pc12.2ch.net/test/read.cgi/tech/1263824755/104 # # 課題1 20 桁までの自然数の足し算と掛け算を浮動小数点演算を用いないで実施するプログラムlongcomp.c を # 作成し、C のソースコードを提出しなさい。足し算は必須課題、掛け算はオプション課題です。 # 実行形式をlongcomp とした動作仕様は以下である1 # >./longcomp 12345678901234567890 + 12345678901234567890 # >12345678901234567890 + 12345678901234567890 = 24691357802469135780 # >./longcomp 1234567890 * 1234567890 # >1234567890 * 1234567890 = 1524157875019052100
416 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 06:05:44 ] pc12.2ch.net/test/read.cgi/tech/1263824755/105 # # 課題2 b01, b001 のように二進数をb で始まるように表記する。二進数の集合を、できるだけ少ないノード数 # の二分木に分類するためには、二分木のノードに蓄積する二進数の桁数を可変にすることが有効である。 # こうすることで二進数表記した値(たとえばキーワードとか、位置とか、日付とか)に紐づけられたデータを少ない検索で見つけることができる。 # 扱う二進数の集合を、たとえば # b00, b001, b0011, b00111, b1000, b11100, b0 # として、これらを図1に示すようにニ分木に分類して、帰りがけ(ポストオーダ)で次のように出力するプログラム(tree) を作成し、C のソースコードを提出しなさい。 # >./tree # >1 1 1 0 0 000 1100 1 b #
417 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 06:14:47 ] pc12.2ch.net/test/read.cgi/tech/1263824755/124 # [1] 授業単元: Cプログラミング入門 # [2] 問題文(含コード&リンク): 入力された2つの文字列(日本語その他バイト文字は不可) # を比較するプログラムを作成せよ。ただし、大文字小文字の違いは無視。単語間に連続して # スペース・タブが複数入っていても単独のスペースとしない。 # # [5] その他の制限: 文字列とポインタまでやってます。 # 入力に関して、キーボードから1つ目の文字列を1行で入力し、改行する。 # この時、入力を促す文字は一切表示しない。入力文字数は128文字まで。 # 出力に関して、一致すれば何も表示しない。不一致の場合は最初に不一致となる # 入力1の文字と入力2の文字(1文字+スペース+1文字+改行)を表示する。 # どちらかが末端の場合は代わりにスペースで埋める。
418 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 06:22:12 ] pc12.2ch.net/test/read.cgi/tech/1263824755/135 # [1] 授業単元:C言語 # [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10408.txt # # (1)複数の整数を平均値に近い順にソートするプログラムを作成せよ。 # 平均値は切り捨てして整数値で求めるものとし、平均値との距離が等しい # 場合は値の小さな整数が優先されるものとする。 # # 入力に関して # キーボードからまず、入力する整数の個数を入力(最大で100とする)し、改行。 # 次に指定した数の整数をスペース1つ開けて1行で入力し、改行する。 # この時、入力を促す文字は一切表示しないこと。 # 出力に関して # ソートした整数をスペース1つのみあけて1行で出力する(+改行)。指定した数改行 # 以外の出力は一切行わないこと。
419 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 07:12:24 ] pc12.2ch.net/test/read.cgi/tech/1263824755/137 # [1] 授業単元: プログラミング概論 # [2] 問題文:"in_file"という名前のファイルの中に18個の整数データが空白や改行コードで区切られて並んでいると仮定した上で、 # この入力ファイルの中のデータを1行に5個ずつきれいに並べて"out_file"という名前のファイルに # 出力するCプログラムを作成せよ。 # 入力ファイルの内容が # -1111111111 2222222 333333 4444 55 6 7 8 9 0 1 2 3 4 # 5 6 7890123 # -5666 # の時には、例えば次のような内容を"out_file"に書き出す # _-1111111111_____2222222______333333________4444__________55 # _________________6_______________7______________8_____________9___________0 # ________________ 1_______________2______________3_____________4___________5 # _________________6_____7890123________-5666 #
420 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 07:23:27 ] >>418 ;; Common Lisp (defun sort-ave (lst) (let ((abs-ave (floor (abs (/ (reduce #'+ lst) (length lst)))))) (sort lst #'(lambda (a b) (let ((ax (abs (- (abs a) abs-ave))) (bx (abs (- (abs b) abs-ave)))) (if (= ax bx) (< a b) (< ax bx))))))) (defun main () (let ((num (read)) lst) (cond ((<= num 100) (dotimes (i num) (push (read) lst)) (format t "~{~A ~}~%" (sort-ave lst))))))
421 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 12:56:07 ] >>418 使用言語:J f=:monad def '}.|:/:~|:y,:~|y-<.(+/%#)y' f 0 7 8 9 2 2 5 5 5 3 3 5 5 5 2 2 7 0 8 9
422 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 15:28:46 ] pc12.2ch.net/test/read.cgi/tech/1263824755/143 # [1] データ構造とプログラミング # [2] # 演習問題4.5 逆ポーランド記法による入力文字列(空白で区切られている)に対して 、 # 16進数と10進数で答えを返すプログラムrpnを作りなさい。 # (入力例)rpn 5 2 + 7 * # (出力例)0x31, 49(decimal) #
423 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 17:57:56 ] pc12.2ch.net/test/read.cgi/tech/1263824755/147 # [1] 授業単元: C++ # [2] 問題文(含コード&リンク): # 2. # ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10439.txt # ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10436.txt # ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10437.txt # ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10438.txt # kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10436.txt ↑pm1.txt # kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10437.txt # ↑pm2.txt # kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10438.txt # ↑pm3.txt # というファイルがある。 # plus で始まる行の数値を足し,minus で始まる行の数値を引く。 # ファイルの最後まで計算した結果を表示するプログラムを作成せよ。 # データの数は実行前にはわからないものとする。
424 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 18:07:11 ] pc12.2ch.net/test/read.cgi/tech/1263824755/154 # [1] 授業単元: プログラミング演習 # [2] 問題文(含コード&リンク):ime.nu/www.acm-japan.org/past-icpc/domestic2008/problems/all_ja.html # 等しい合計点 # # 太郎と花子はそれぞれカードを何枚か持っている. # 各カードには点数が書かれている.太郎のカードと花子のカードを 1 枚ずつ交換して, # それぞれの持つカードの合計点数が等しくなるようにしたい. # どのカードとどのカードを交換したらよいか. # # ただし,カードを交換しなくても合計点数が等しい場合でも,必ずカードの交換を行うものとする. # Input # 入力は,いくつかのデータセットからなる.各データセットは次の形式で与えられ # n m # s1 # s2 # ... # 各データセットの最初の行は空白ひとつで区切られたふたつの数 n と m を含み, # n は太郎のカードの枚数,m は花子のカードの枚数を表す.続く n+m 行には, # 各カードの点数が 1 行にひとつずつ並ぶ. # 最初の n 個の点数 (s1 から sn まで) は太郎のカードの点数, # 残りの m 個の点数 (sn+1 から sn+m まで) は花子のカードの点数を表す. # n および m は 100 以下の正の整数とし,カードの点数は 0 以上 100 以下の整数値とする. # 入力の終わりは,空白ひとつで区切られたふたつの 0 を含む 1 行で示される.
425 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 19:04:37 ] >>423 使用言語:J plus =:+ minus=:- f=:monad def '+/".;._2(1!:1)y' f <'pm3.txt' _316
426 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 20:18:00 ] pc12.2ch.net/test/read.cgi/tech/1263824755/161 # [1] 授業単元: プログラミング演習(木構造と数式処理) # [2] 問題文(含コード&リンク): # # 累乗の計算の逆を行うプログラムを作ってください。 # # 例 # x*x*xと入力されればx^3と画面に出力する。 # # x*x*x*aなどの場合はx^3*aと出力されればよい。 #
427 名前:デフォルトの名無しさん mailto:sage [2010/01/25(月) 20:42:02 ] >>413 使用言語:J mult_array=: +/ .* ]A=:i.4 4 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A mult_array A 56 62 68 74 152 174 196 218 248 286 324 362 344 398 452 506
428 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 00:00:16 ] >>419 使用言語:J read=: 1!:1 wrire=: 1!:2 format=: 8!:2 a=: read <'in_file' b=: '13.0'format ".each _5,\cutopen,,;._2 a (,b,.LF)write<'out_file'
429 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 01:18:57 ] pc12.2ch.net/test/read.cgi/tech/1263824755/167 # 上の105ですが、もう一度質問させて頂きます。 # なぜなら、課題2対しての回答がないからです。 # 皆様よろしくお願いします。 # # [1] データ構造とプログラミング # [2]b01, b001 のように二進数をb で始まるように表記する。二進数の集合を、できるだけ少ないノード数 # の二分木に分類するためには、二分木のノードに蓄積する二進数の桁数を可変にすることが有効である。こう # することで二進数表記した値(たとえばキーワードとか、位置とか、日付とか)に紐づけられたデータを少な # い検索で見つけることができる。 # 扱う二進数の集合を、たとえば # b00, b001, b0011, b00111, b1000, b11100, b0 # として、これらを図1に示すようにニ分木に分類して、帰りがけ(ポストオーダ)で次のように出力するプロ # グラム(tree) を作成し、C のソースコードを提出しなさい。 # >./tree # >1 1 1 0 0 000 1100 0 1 b #
430 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 01:21:28 ] >>429 ごめんなさい。>>416 に既出でした。
431 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 01:39:43 ] pc12.2ch.net/test/read.cgi/tech/1263824755/174 # [1] データ構造とプログラミング # [2] # リングバッファを使って、9個のキューを作り、データを追加したり、 # データを取り出すプログラムを完成させなさい。 # 以下の添付にあるプログラムを完成させろという課題です。 # ime.nu/www.geocities.jp/pegasus_violet/en5-2.pdf # 演習問題5.2 リングバッファを使って、9 個のキュー(配列は10 元)を作り、 # データを追加したり(EnQue), データを取り出す(DeQue) プログラムを # 完成させなさい29。プログラムの動作仕様は以下のようである。 # 1. 数字を入力するとキューが伸びる # 2. d(deque) を入力するとfront を標準出力に出力 # 3. s(show) を入力するとキューを表示 # 4. キューがいっぱいだったらエラーメッセージを出す # 5. q で終了
432 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 06:00:35 ] >>419 % Prolog ここまでするか、とお思いでしょうが・・ '入力ファイルの中のデータを1行に5個ずつきれいに並べて"out_file"という名前のファイルに出力する'(_整数ならび) :- 入力ファイルの中のデータ(_整数ならび), 最大桁数(_整数ならび,_最大桁数), _整数表示桁 is _最大桁数 + 2, concat_atom(['%',_整数表示桁,d],_表示フォーマット), '1行に5個ずつきれいに並べて'(_整数ならび,_5個組整数ならび), tell('out_file), 出力する(_5個組整数ならび,_表示フォーマット), told. 入力ファイルの中のデータ(_整数ならび) :- '"in_file"という名前のファイルの中に18個の整数データが空白や改行コードで区切られて並んでいる'(_整数ならび),!. '"in_file"という名前のファイルの中に18個の整数データが空白や改行コードで区切られて並んでいる'(_整数ならび) :- get_lines('infile',Lines), concat_atom(Lines,' ',S), split(S,[' '],_整数ならび), length(_整数ならび,18),!. '1行に5個ずつきれいに並べて'(_整数ならび,_5個組整数ならび) :- 'N個組'(5,_整数ならび,_5個組整数ならび),!. 出力する([],_) :- !. 出力する([L|R],_表示フォーマット) :- '1行出力する'(L,_表示フォーマット),出力する(R,_整数表示桁). 出力する([L|R],_表示フォーマット) :- '1行出力する'(L,_表示フォーマット), 出力する(R,_整数表示桁). '1行出力する'([],_) :- write('\n'),!. '1行出力する'([N|R],_表示フォーマット) :- write_formatted(_表示フォーマット,[N]),'1行出力する'(R,_表示フォーマット).
433 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 06:04:00 ] >>433 (>>432 ) 訂正 % Prolog 訂正するのを忘れていた。 出力する([],_) :- !. 出力する([L|R],_表示フォーマット) :- '1行出力する'(L,_表示フォーマット),出力する(R,_表示フォーマット).
434 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 07:16:12 ] >>374 使用言語:J rev_string=: ,~/ rev_string 'SEC' CES |. 'SEC' CES
435 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 07:28:11 ] >>418 % Prolog (その一) >>421 の短さに唖然! 複数の整数を平均値に近い順にソートする(_整数ならび,_平均値に近い順に整列された 整数ならび) :- 'キーボードからまず、入力する整数の個数を入力(最大で100とする)し、改行'(_ 入力する整数の個数), 指定した数の整数をスペース1つ開けて1行で入力する(_入力する整数の個数,_整数 ならび), 相加平均(_整数ならび,_平均値の一), _平均値 is truncate(_平均値の一), 平均値からの隔たりによる整列(_平均値からの隔たりのならび,_平均値からの隔た りを鍵として付加して整列された整数ならび), 整列した整数をスペース1つのみあけて1行で出力する(_平均値からの隔たりを鍵と して付加して整列された整数ならび). 'キーボードからまず、入力する整数の個数を入力(最大で100とする)し、改行'(_入力 する整数の個数) :- repeat, get_integer(_入力する整数の個数), _入力する整数の個数 =< 100,!. 指定した数の整数をスペース1つ開けて1行で入力する(_入力する整数の個数,_整数なら び) :- length(_整数ならび,_入力する整数の個数), get_split_line([' '],_整数ならび).
436 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 07:31:28 ] >>418 % Prolog (その二) >>435 は改行位置を間違えた行が数行あります。 平均値からの隔たりによる整列([X|Xs],_平均値,Ys) :- U is X - _平均値, 平均値からの隔たりにより分割する(Xs,U,_平均値,Littles,Bigs), 平均値からの隔たりによる整列(Littles,_平均値,Ls), 平均値からの隔たりによる整列(Bigs,_平均値,Bs), append(Ls,[X|Bs],Ys) . 平均値からの隔たりによる整列([],_,[]). 平均値からの隔たりにより分割する([X|Xs],Y,_平均値,[[U,X]|Ls],Bs) :- U is X - _平均値, U =< Y, 平均値からの隔たりにより分割する(Xs,Y,_平均値,Ls,Bs),!. 平均値からの隔たりにより分割する([X|Xs],Y,_平均値,Ls,[[U,X]|Bs]) :- U is X - _平均値, U > Y, 平均値からの隔たりにより分割する(Xs,Y,_平均値,Ls,Bs) . 平均値からの隔たりにより分割する([],Y,_,[],[]). 整列した整数をスペース1つのみあけて1行で出力する([]) :- !. 整列した整数をスペース1つのみあけて1行で出力する([[A,B]]) :- write_formatted('%t\n',[A]) :- !. 整列した整数をスペース1つのみあけて1行で出力する([[B,A]|R]) :- write_formatted('%t ',[A]), 整列した整数をスペース1つのみあけて1行で出力する(R)
437 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 08:14:42 ] >>436 # 平均値との距離が等しい場合は値の小さな整数が優先されるものとする。 この判断が漏れている。
438 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 10:34:26 ] >>418 間違いが多いようなので書き直し(申し訳ない) % Prolog (その一) 複数の整数を平均値に近い順にソートする(_整数ならび,_平均値に近い順に整列された 整数ならび) :- 'キーボードからまず、入力する整数の個数を入力(最大で100とする)し、改行'(_ 入力する整数の個数), 指定した数の整数をスペース1つ開けて1行で入力する(_入力する整数の個数,_整数 ならび), 相加平均(_整数ならび,_平均値の一), _平均値 is truncate(_平均値の一), 平均値からの隔たりによる整列(_平均値からの隔たりのならび,_平均値,_平均値か らの隔たりを鍵として付加して整列された整数ならび), 整列した整数をスペース1つのみあけて1行で出力する(_平均値からの隔たりを鍵と して付加して整列された整数ならび). 'キーボードからまず、入力する整数の個数を入力(最大で100とする)し、改行'(_入力 する整数の個数) :- repeat, get_integer(_入力する整数の個数), _入力する整数の個数 =< 100,!. 指定した数の整数をスペース1つ開けて1行で入力する(_入力する整数の個数,_整数なら び) :- length(_整数ならび,_入力する整数の個数), get_split_line([' '],_整数ならび).
439 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 10:39:03 ] >>418 % Prolog (その二) >>438 はやはり改行がうまくいかなかった。 平均値からの隔たりによる整列([X|Xs],_平均値,Ys) :- U is X - _平均値, 平均値からの隔たりにより分割する(Xs,U,Y,_平均値,Littles,Bigs), 平均値からの隔たりによる整列(Littles,_平均値,Ls), 平均値からの隔たりによる整列(Bigs,_平均値,Bs), append(Ls,[X|Bs],Ys) . 平均値からの隔たりによる整列([],_,[]). 平均値からの隔たりにより分割する([X|Xs],U,Y,_平均値,[[U,X]|Ls],Bs) :- V is X - _平均値, V < U, 平均値からの隔たりにより分割する(Xs,U,Y,_平均値,Ls,Bs),!. 平均値からの隔たりにより分割する([X|Xs],U,Y,_平均値,[[U,X]|Ls],Bs) :- U is X - _平均値, X < Y, 平均値からの隔たりにより分割する(Xs,U,Y,_平均値,Ls,Bs),!. 平均値からの隔たりにより分割する([X|Xs],U,Y,_平均値,Ls,[[U,X]|Bs]) :- 平均値からの隔たりにより分割する(Xs,U,Y,_平均値,Ls,Bs) . 平均値からの隔たりにより分割する([],Y,_,[],[]). 整列した整数をスペース1つのみあけて1行で出力する([]) :- !. 整列した整数をスペース1つのみあけて1行で出力する([[A,B]]) :- write_formatted('% t\n',[A]),!. 整列した整数をスペース1つのみあけて1行で出力する([[B,A]|R]) :- write_formatted('%t ',[A]), 整列した整数をスペース1つのみあけて1行で出力する(R).
440 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 10:43:20 ] すみません。行末あたりに一文字何かが入ってしまったようで改行の制御が 正しくできませんでした。 nojiriko.asia/prolog/c134_135.html に仕上げて書いておきます。
441 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 11:06:53 ] pc12.2ch.net/test/read.cgi/tech/1263824755/189 # [1] データ構造とプログラミング # [2] # ツリーにノードを追加するプログラムを完成させなさい。またプログラム中 に使われている要素 mitsugi, emura, satou, yonemura, murai, nakamura, kwkt がツリー上でどのように配置され ているか書きなさい。 # 以下の添付にあるプログラムを完成させろという課題です。 # ime.nu/www.geocities.jp/pegasus_violet/en9-5.pdf
442 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 16:43:14 ] pc12.2ch.net/test/read.cgi/tech/1263824755/193 # [1] 授業単元:プロトタイプ宣言とか引数 # [2] 問題文(含コード&リンク):[3〜6]∫x^2 dx(これだと正解は63)を計算するプログラムを作成せよ。 # 尚、積分本体(始点と終点)と関数本体f(x)に分けること。dx=1/N N=(10,1000…10000)誤差評価を行う事。積分範囲を変更すること。x^2の関数を変更すること。 #
443 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 16:44:31 ] pc12.2ch.net/test/read.cgi/tech/1263824755/197 # [1] 計算機概論 # [2] 8bit整数が8つ与えられている。これをunsigned char配列と # みなしa[]と名付ける。 # unsigned char 整数のor,not演算だけを用いて1<=n<=8からa[n]を # 計算するC計算式を出力するプログラム # 例:a[]={1,2,3,4,5,6,7,8}; 出力 return n; # a[]={1,0,1,0,1,0,1,0}; 出力 return !(!n or 11111110b);
444 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 17:33:48 ] pc12.2ch.net/test/read.cgi/tech/1263824755/200 # [1] 授業単元: プログラミング # [2] 問題文(含コード&リンク): # A組、B組、C組にそれぞれn人の生徒がいて、 # A組の生徒が一列に並んでいる。 # このとき、B組の生徒をA組の生徒の隣に並ばせたいが # なるべく隣同士で身長に差がないようにしたい。 # どうやって計算すればいいでしょう? # 加えて、C組の生徒もB組の隣に並ばせたい場合はどうすれば? # (身長の配列) double height_a[n], height_b[n], height_c[n];
445 名前:デフォルトの名無しさん mailto:sage [2010/01/26(火) 18:07:57 ] >>444 % Prolog なるべく隣同士で身長に差のない並び方(La,Lb,N,LbX) :- findmin([S,L],ならび候補(La,Lb,N,L,S),Min), Min = [_,LbX],!. ならび候補(La,Lb,N,L,S) :- 順列(Lb,N,L), findsum(U,(for(1,M,N),list_nth(M,La,A),list_nth(M,L,B),U is (B-A) ^ 2),S).
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とする。