1 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 09:57:19 ] 第二編も512Kbyte越えで終了しました。 前スレで未解決な課題は順次このスレにコピーします。
197 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 23:10:58 ] >>192 使用言語:J a=:10000 50000 20000 1000 500 200 100 50 25 10 5 1 b=:<;._1' 100$ 50$ 20$ 10$ 5$ 2$ 1$ 50C 25C 10C 5C 1C' f=:}:@;@(((}:@>@{.,(0,{.@>@}.)#:{:@>@{.);}.@>@{:)^:(#@>@}.)) g=:3 :'((b#~*),.;/@-.&0)f a;~<.y%0.9269' g 1980 +---+-+ |10$|2| +---+-+ |1$ |1| +---+-+ |25C|1| +---+-+ |10C|1| +---+-+ |1C |1| +---+-+
198 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 23:18:24 ] >>197 テーブルのデータ間違えました。訂正します。 > a=:10000 50000 20000 1000 500 200 100 50 25 10 5 1 a=:10000 5000 2000 1000 500 200 100 50 25 10 5 1
199 名前:デフォルトの名無しさん mailto:sage [2010/01/08(金) 23:36:00 ] >>171 foldl' 使えば Prelude> :m +Data.List Prelude Data.List> sqrt $ 6*(foldl' (+) 0 [1/(x*x)|x<-[1..1000000]]) 3.14159169866051
200 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 08:09:47 ] >>199 foldl' というは知らなかったので、調べてみたら、 第9回 Haskellはなぜ遅いと思われているのか - 本物のプログラマはHaskellを使う:ITpro itpro.nikkeibp.co.jp/article/COLUMN/20070403/267180/?ST=develop&P=1 に sum でスタックオーバーフローする例がのっていました。 正直、まだよくわかっていません。 どうして sum の定義にこの foldl' の方を使わないのかな。 なんか他に問題がでてくるのかな。
201 名前:デフォルトの名無しさん [2010/01/09(土) 21:09:52 ] pc12.2ch.net/test/read.cgi/tech/1260532772/633 # [1]授業単元:プログラミング2 # [2]問題文:2つの最大50桁の実数を入力し、その和・差・積を求めるプログラム
202 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 04:48:39 ] pc12.2ch.net/test/read.cgi/tech/1260532772/636 # [1] 授業単元:数値計算 # [2] 問題文(含コード&リンク): ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10342.txt # # 3元連立非線形方程式 # # x_1^2 + x_2^2 + x_3^2 - 4 = 0 # x_1^2 - 2x_1 + x_2^2 + x_3 - 2 = 0 # x_1^2 + sin^2x_2 + x_3^2 - 3 = 0 # # を解くNewton法のC++のプログラムをつくり、領域 0 < x_1,x_2,x_3 < 2 にある解を求めよ # ただし、Jacobianの計算に必要となる偏導関数は数値微分により計算し、連立1次方程式の解法には # Gaussの消去法あるいはLU分解法を用いること
203 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 04:54:14 ] pc12.2ch.net/test/read.cgi/tech/1260532772/637 # [1] 授業単元:コンピュターグラフィック # [2] 問題文(含コード&リンク): # 1次元配列を2次元配列に・2次元配列を1次元配列に変換する二つのモジュール # ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10343.txt # # int Conv_1Dto2D(unsigned char *src, unsigned char dest[][X_SIZE]) # /*機能 : src を dest に格納する。戻り値は格納した要素数 # src: ソースとなる 1 次元配列 # dest: 格納先となる 2 次元配列 # */ # # int Conv_2Dto1D(unsigned char src[][X_SIZE], unsigned char *dest) # /*機能 : src を dest に格納する。戻り値は格納した要素数 # src: ソースとなる 2 次元配列 # dest: 格納先となる 1 次元配列 # */
204 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 04:55:40 ] pc12.2ch.net/test/read.cgi/tech/1260532772/639 # [1] アルゴリズム # # [2] 自然数の数列を入力し # 数列内にあるnよりも大きい数と小さい数が # nの前後にそれぞれ一つ以上ある場合、そのnを出力する。 # # フローチャートは以下です。 # # 順数列の入力 # ↓ ↓ # 数列数が5以上 4以下→終了(4以下のときどれも除外できないので) # ↓ # 数列の中で最大最小の値と # 最初と最後に入力した値は除外できる。 # ↓ # 残りの数値に前後に大小の値が一つ以上あれば除外 # ↓ # 残った値を表示して終了
205 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 04:59:12 ] pc12.2ch.net/test/read.cgi/tech/1260532772/644 # [1]授業単元:プログラミング2 # [2]問題文:次のような10×10の半角文字+を碁盤の目として、一対コンピュータで五目並べ # をするプログラムを作成せよ。碁石を表す文字は、半角の@,0を用いよ。 # # abcdefghij # a++++++++++ # b++++++++++ # c+++++@++++ # d++++++0+++ # e++++++++++ # f++++++++++ # g++++++++++ # h++++++++++ # i++++++++++ # j++++++++++ # @の場所は、cf , 0の場所は、dg とあらわす # # ・人とコンピュータのどちらかが先手になるか選択できる # ・先手の33を禁止する # ・勝敗の判定ができる。(置く場所がなくなったら引き分けとする) # ・コンピュータは人が3と4を作った場合、それを止める場所におく # ・すでに石がおいてある場所に人が石を置こうとした場合、再入力を促す。
206 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 05:04:02 ] pc12.2ch.net/test/read.cgi/tech/1260532772/645 # [1] 授業単元:プログラミング実習a # [2] 問題文(含コード&リンク): ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10346.txt # # 実行例のとおりに,自分で五つの問題文を入力して練習するタイピング練習ソフトを # 作成せよ.ただし,問題文は入力した五つの中から10題がランダムに出題されるものと # し,最後に正解数を表示すること. # # 実行例 (下線部はユーザーの入力) # # 20文字までの問題文を五つ入れてください # # 1つ目の問題文:abcdefghijkl # # 2つ目の問題文:January # # 3つ目の問題文:xxyyzz0368GST # # 4つ目の問題文:MondayFriday # # 5つ目の問題文:qwerty.uiop,RTYU
207 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 05:08:37 ] pc12.2ch.net/test/read.cgi/tech/1260532772/640 # [1] 授業単元:Cプログラミング # [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10344.txt # 2つの名前を入力してステータス(ランダム)を決定し 途中経過を表示し # 攻撃が当たった時は文字色を変える # # 24行程度に纏められないため、問題文のリンクを直接参照してください
208 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 05:11:10 ] pc12.2ch.net/test/read.cgi/tech/1260532772/642 # [1] 初級C言語実習 # [2] 次の関数copyStringを同じ動作をするように書き換えよ。ただし変数の追加、削除(未使用を含む) # if文(三項演算子を含む)while,do while,for文 goto文を使用してはならない。 # char *copyString(char *s){ # char *p=s,*t=s,tmp; # if(s==NULL)return NULL; # while(*p++); p--;while(!*p)p--; # while(p>s){tmp=*p;*p--=*s;*s++=tmp;} # return t; # }
209 名前:デフォルトの名無しさん mailto:sage [2010/01/10(日) 12:25:56 ] pc12.2ch.net/test/read.cgi/tech/1260532772/659 # [1] 授業単元: オペレーティングシステム # [2] 問題文(含コード&リンク): # fork,exec*システムコールを用いて簡単なコマンドインタープリタ # (mysh)を作成せよ。但し、作成するコマンドインタープリタは以下の # 機能をサポートすること。 # ・設定ファイル(.path)にコマンドサーチパスを指定することが出来る。 # なお、ファイル内のパスの指定方法は、各自が考え定義すること。 # (パスにないコマンドを入力した場合には、見つからない旨のエラー # メッセージを出力すること。) # ・パイプを利用して複数(可変個)のコマンドの入出力を結合する # ことができる。 # ・リダイレクションを使用してコマンドへの入力をファイルから得たり、 # ファイルへ出力したりすることができる # ・コマンド実行中にCtrl-Cを入力すると、現在のコマンドの実行を # 中断する # ・exitを入力すると、myshを終了する。 #
210 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 05:10:41 ] pc12.2ch.net/test/read.cgi/tech/1260532772/676 # [1] 授業単元:データ構造とアルゴリズム # [2] 問題文(含コード&リンク):prolog.asia/img/shinryoshitsu.pdf #
211 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 05:15:57 ] pc12.2ch.net/test/read.cgi/tech/1260532772/678 # [1] 授業単元: 基礎プログラミングおよび演習 # [2] 問題文(含コード&リンク): ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10352.txt # # あるWebページに対する24時間分の閲覧者の名前、閲覧開始時刻および閲覧継続時間を表す「閲覧データ」があるとしよう。 # 1名以上の閲覧データから、閲覧している人数がもっとも多い30分刻みでの時間帯を求め、そのときの閲覧者名を印字する # プログラムを作成せよ。状況によっては日をまたぐこともあるが、ここではどの時間帯に閲覧が多いのかを知りたいので # 日の違いは考えなくてよい。各閲覧データは標準入力から、 # # 閲覧者名 # 閲覧開始時刻 閲覧継続時間 # # の2行で与えられる。ここで閲覧者名は英小文字2文字の後に4桁の数字が続く。閲覧開始時刻は24時間制での時を100倍し、 # 分を加えた数を表す4桁の数字、閲覧継続時間は分を表す高々3桁の数字である。時刻および時間は30分刻み(つまり0分か30分) # である。たとえば、 # # ku7535 # 0130 60 # # は、名前がku7535、開始時刻が1時30分、継続時間が60分、つまり1時30分から2時30分直前まで閲覧していたことを表す。 # まず閲覧データに対する構造体 user を定義し、それを要素とする大きさNの大域的な配列 users を用意せよ(Nはマクロ # である)。次に、N人分のデータを読み込むか、閲覧者名としてアスタリスク(*)が与えられるまで、標準入力から閲覧データを # 読み込み、配列 users にセットするとともに閲覧データを返す関数 int read_users(void) を作成せよ。最後に配列 users の # 先頭からn個の閲覧データを対象に、24時間中で最大人数が閲覧している30分刻みでの時間帯と、そのときの閲覧者名を印字 # する関数 void print_prime_time(int n) を定義せよ。ただし最大閲覧者数となる時間帯は一般に複数あることに注意すること。 # さらに以下のmain関数と組み合わせてプログラムを作成せよ。
212 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 05:24:23 ] pc12.2ch.net/test/read.cgi/tech/1260532772/685 # [1] 授業単元:プログラミング # [2] 問題文(含コード&リンク):2つの名前を入力しステータス(ランダム)を決定し 勝敗表示する。 #
213 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 19:56:43 ] pc12.2ch.net/test/read.cgi/tech/1260532772/703 # [1] 授業単元: C # [2] 問題文(含コード&リンク): # 100以下の素数をすべて出力するプログラムを作りたい。 # 自然数xに対して2以上で√x以下の素数で割り切れない数が素数である。ただし1は素数でも合成数でもない。
214 名前:デフォルトの名無しさん mailto:sage [2010/01/11(月) 19:58:48 ] pc12.2ch.net/test/read.cgi/tech/1260532772/710 # [1] 授業単元: プログラミング演習 # [2] 問題文(含コード&リンク): 数値には初期値が与えられている。 # この配列を昇順に並べ替えるプログラムを作成しなさい。 # # 表示結果: 数値[00]=80 # 数値[01]=40 # 数値[02]=23 # 数値[03]=69 # 数値[04]=10 # # ソート後 # 数値[01]=10 # 数値[02]=23 # 数値[03]=40 # 数値[04]=69 # 数値[03]=80
215 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 08:12:02 ] pc12.2ch.net/test/read.cgi/tech/1260532772/714 # 1] 授業単元: プログラミング演習 # [2] 問題文(含コード&リンク): ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10353.txt # # 連立1次方程式の一般的な数値解法にはGaussの単純消去法がある。 # この方法についてアルゴリズムを調べ下記の連立1次方程式を例に解法手順をC言語で表示せよ。 # # 方程式 # x1 + 5x2 + x3 =2 # 3x1 + 4x2 = 2 # 9x1 + 10x2 +4x3 = 8
216 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 08:13:26 ] pc12.2ch.net/test/read.cgi/tech/1260532772/715 # [1] 授業単元:プログラミング実習 # [2] 問題文(含コード&リンク): # 文字列text[]と文字列pat[]が与えられたとき、文字列text中に文字列patが含まれるときは最初に現れるその文字列の先頭の位置(0〜)を返し、含まれないときは-1を返す関数searchを作成せよ。 # また、その関数を用いて、2つの文字列text[]とpat[](空白は含まない)を入力すると関数searchの値を返すプログラムを作成せよ。ここでtextとpatには長さ1以上の文字列が入っているものとする。 # (例:text[]="thisisatesttextdata"の中に、pat[]="this"は0の位置に、pat[]="test"は7の位置に現れる。) #
217 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 08:14:57 ] pc12.2ch.net/test/read.cgi/tech/1260532772/718 # [1] 授業単元: C言語演習 # [2] 問題文(含コード&リンク): 再帰を使って自然対数の底eを求めるプログラムを作成しなさい # 下記のようにnを0から30まで増加させながら # n=0のときe=1/0! n=30のときe=1/0!+1/1!+1/2!+1/3!+……1/30! の計算を行い下 のように表示しなさい # # n=0:e=1.000000000000000 # n=1:e=2.000000000000000 # ・ # ・ # n=30:e=2.718281828459046 #
218 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 08:17:00 ] pc12.2ch.net/test/read.cgi/tech/1260532772/722 # [1]授業単元:プログラミング2 # [2]問題文:以下の機能を備えた対コンピュータの五目並べを作成せよ # ・置く場所を縦と横の数字で指定する # ・人とコンピュータのどちらかが先手になるか選択できる # ・先手の33を禁じる # ・勝敗の判定ができる(置く場所がなくなったら引き分け) # ・コンピュータは人が3と4を作った場合、それを止める場所に石を置く # ・すでに石がおいてある場所に人が石を置こうとした場合、再入力を促す
219 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 08:21:25 ] pc12.2ch.net/test/read.cgi/tech/1248012902/705 # 【 課題 】自然言語処理、構文解析のCYK法のプログラム # 【 形態 】1. Javaアプリケーション(main()で開始) # 【 期限 】2010/01/18 # 【 Ver 】java version "1.6.0_17" # 【 用語 】CYK法 ime.nu/ja.wikipedia.org/wiki/CKY%E6%B3%95
220 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 08:48:39 ] pc12.2ch.net/test/read.cgi/tech/1024024666/548 # このスレにあった10行囲碁ソースを元に作ってみようかな。 # 展開して調べたら、あれに入ってる評価関数は # # 石数に比例するもの # ・石が取れる # ・アタリにいける # ・囲いにいける # ・隣接させる
221 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 20:38:24 ] pc12.2ch.net/test/read.cgi/tech/1260532772/739 # [1] 授業単元: プログラミング # [2]問題文:ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyf0355.txt # ★演習問題1* # 次の仕様に従って,生徒の科目得点から平均点と評価を求め,出力フォームのように両面表示するプログラムを作成せよ # (仕様) # (a)プログラムに組み込むデータについては,構造体の初期値として与え, # メンバは,生徒番号,各科目点数,平均点,評価で,次のとおりとすること。 # (b)処理手順は,次のとおりとすること, # 生徒番号 国語 数学 理科 社会 # 1001 85 74 63 90 # 1002 78 65 70 62 # 1003 89 92 88 76 # 1004 32 48 66 25 # 1005 92 76 81 98 # 各人の4科目の平均点を求め,構造体に格納すること # 各人の評価を求め,構造体に格納すること,尚,4段階の評価基準は,次のとおとすること # 平均点 評価 # 80点以上 A # 70点以上80点未満 B # 60点以上70点未満 C # 60点未満 D
222 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 22:05:13 ] pc12.2ch.net/test/read.cgi/tech/1260532772/739 # [1] 授業単元: プログラミング # [2]問題文:ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyf0355.txt # ★演習問題2* # 構造体を用いて,2個の複素数(x=1.0十2.0i,x=2.0十1.0i)の和と積 # を求めるプログラムを構造体を用いて作成せよ. # (出力結果例) # # X=1.0+2.0i # y=2.0+1.0i # x+y=3.0+3.0i # x+y=0.0+5.0i
223 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 22:08:32 ] pc12.2ch.net/test/read.cgi/tech/1260532772/739 # [1] 授業単元: プログラミング # [2]問題文:ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyfmg/10355.txt # ★演習問題3 # 次の手順に従ってプログラムを作成せよ. # (a)mainO関数の処理 # (a.l)以下の11個の点数を配列として持つ.ただし,最後の-1はストッ # パーとする.(a.2)この配列を「成績データ取得関数」にアドレス渡しする。 # 78 86 56 77 47 63 94 37 50 74 -1 # (a,3)成績データ取得関数」より,次の構造体を返却値にして,最高点,最低点均点を得る。 # (a.4)最高点、最低点、平均点を表示する。 # (a)成績データ取得関数の処理 # (b.1)引数で渡された点数が-1になるまでループし,最高点,最低点,合 # 計点,点数総数を求める. # (b.2)合計点と点数総数から平均点を求める. # (b.3)最高点、最低点、平均点を上記(a.3)と同じ型の構造体にセットし # て返却する. # (出力結果例) # 最高点=94 # 最低点=37 # 平均点=66.2
224 名前:デフォルトの名無しさん mailto:sage [2010/01/12(火) 22:11:53 ] pc12.2ch.net/test/read.cgi/tech/1260532772/741 # [1] 授業単元: プログラミング2 # [2]問題文:ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyfmg/10356.txt # 下図(A)のテキストファイルは、ある実験を行ったときのメモであり、 # 実験の年月日と使用した材料及びその使用量が記載されている(スペースは全て半角スペース)。 # そこでこのファイルを読み込んで、最も多くの量を使用した材料の記号とその合計量、及び1回当たりの平均使用量を、 # 図(B)に示すような別のテキストファイルに書き出すプログラムを作成せよ。なおこの実験で使用する材料はA、B、Cの3種類のみである。 # # プログラム作成に際しては、次の条件を満たすものとする。 # ・入力用のファイル名はJikkenMemo.txtで固定とし、一々キーボードからは指定しない。 # ・出力用のファイル名はキーボードから任意の名前で指定する。 # ・JikkenMemo.txtでは今回は13回分の実験が書き込まれているが、今後の実験の追加にも対応できるようにすること(即ち13行に限定しないこと)。 # ・出力ファイルにおける使用量の単位gは数値の後につける。 # ・出力ファイルにおける数値の表示はいずれも小数点以下1桁までとする。 # # (補足) # キーボードから入力した1文字がAという文字であるとき「Aです」と表示させるには、 # char cc; # scanf("%c",&cc); # if(cc=='A') printf("Aです\n"); # とすればよい。
225 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 05:20:50 ] pc12.2ch.net/test/read.cgi/tech/1260532772/744 # [1] プログラミング # [2] 0から10の中からランダムに整数の2組を決める。それを平面上の座標と、座標を10個つくる。 # ユーザに座標を入力させ、その点から最も遠い点と近い点を求める。 # 最も近い点がユーザが入力した点と重なったら◎を出力する。 # 結果は下記のように出力。 # △ # △ # △ # × ○ # # # # ● # # ×:ユーザが入力した点 # ○:最も近い点 # ●:最も遠い点 # △:それ以外の点 #
226 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 06:30:13 ] >>224 (補足) # キーボードから入力した1文字がAという文字であるとき「Aです」と表示させるには、 # char cc; # scanf("%c",&cc); # if(cc=='A') printf("Aです\n"); # とすればよい。 # 図(A) 読み込み用ファイルの内容 # 実験メモ # 年 月 日 材料 使用量[g] # 2007 9 28 C 289.1 # 2007 10 4 A 254.3 # 2007 10 8 B 187.4 # 2007 10 15 A 211.3 # 2007 10 16 C 400.8 # 2007 10 18 B 34.2 # 2007 10 25 C 343.6 # 2007 10 31 A 102.6 # 2007 11 6 A 155.2 # 2007 11 12 B 87.5 # 2007 11 20 C 98.7 # 2007 11 27 A 177.8 # 2007 11 28 C 44.7 # 図(B) 出力ファイルの内容例 # (仮に、最も多く使用した材用がAで、合計使用量が100.0g、1回の平均使用量が10.0gであった場合) # 最多使用材料A # 合計使用量 100.0g # 平均使用量 100.g
227 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 18:17:53 ] pc12.2ch.net/test/read.cgi/tech/1260532772/750 # [1] 授業単元: 情報科学(C言語) # [2]問題文:ime.nu/www.f.csce.kyushu-u.ac.jp/~ogi/kougi/10.pdf # 課題10 # 関数sasho は第1引数と第2引数の数値(実数)の差と商を計算し,差を # 第3引数で与えられる場所に,商を第4引数で与える場所に格納し,第2 # 引数が0 の場合は0,その他の場合は1 を返す関数である(第2引数が # 0 の場合は,商の計算はしない).関数sasho を定義し,main 関数で # は,2つの実数を入力して,sasho を利用して,2数の差と商を表示する # (sasho の帰り値が0 の場合は差のみを表示)プログラムを作成せよ.
228 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 18:20:47 ] pc12.2ch.net/test/read.cgi/tech/1260532772/752 # 1] 授業単元: プログラミング # [2]問題文:ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyfmg/10358.txt # # ★演習問題1 # 構造体を用いて,2個の複素数(x=1.0十2.0i,x=2.0十1.0i)の和と積 # を求めるプログラムを構造体を用いて作成せよ. # (出力結果例) # # X=1.0+2.0i # y=2.0+1.0i # x+y=3.0+3.0i # x+y=0.0+5.0i
229 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 18:22:30 ] pc12.2ch.net/test/read.cgi/tech/1260532772/752 # 1] 授業単元: プログラミング # [2]問題文:ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyfmg/10358.txt # # ★演習問題2 # fgetc関数とfputc関数を使って,テキストファイルの内容を,別のテキ # ストファイルにコピーするプログラムを作成しなさい.確認のため,元の # ファイルとコピーされたテキストファイルの中身の内容を画面にそれぞれ # 出力せよ.
230 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 18:24:44 ] pc12.2ch.net/test/read.cgi/tech/1260532772/752 # 1] 授業単元: プログラミング # [2]問題文:ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyfmg/10358.txt # ★演習問題3 # 氏名,年齢,性別が5人分書かれた次のようなテキストファイルを読み # 込んで、両面に表示するプログラムを作成せよ.このとき,構造体を利用 # せよ. # (入力ファイル:test.txtの中身) # # Tanaka 31 Man # Kawai 24 Man # Suzuki 22 Woman # ltoh 40 Woman # Sugita 37 Man
231 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 18:26:54 ] pc12.2ch.net/test/read.cgi/tech/1260532772/752 # [1] 授業単元: プログラミング # [2]問題文:ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyfmg/10358.txt # ★演習問題4 # 九九表を作り,テキストファイルに書き出すプログラムを作成せよ # (出力ファイル:test.txtの中身) # # 1 2 3 4 5 6 7 8 9 # 2 4 6 8 10 12 14 16 18 # 3・・・・・・・・・・・ # 4・・・・・・・・・・・ # 5・・・・・・・・・・・ # 6・・・・・・・・・・・ # 7・・・・・・・・・・・ # 8・・・・・・・・・・・ # 9・・・・・・・・・・・ # #
232 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 18:27:52 ] pc12.2ch.net/test/read.cgi/tech/1260532772/753 # [1] 授業単元: プログラミング # [2]問題文: # モンテカルロ法による円周率の近似値の計算を行うプログラムを書け。 # 生成する点の個数はキーボードから受け取るようにせよ。 # 乱数の生成にはMersenne twisterを用いよ。 #
233 名前:デフォルトの名無しさん mailto:sage [2010/01/13(水) 21:56:15 ] rubyで >>231 f=File.open("out.txt","w") for i in 1..9 do for j in 1..9 do f.printf("%3d"%[i*j]) end f.puts() end f.close >>232 N=10000 num=0 for i in 1..N if rand()**2+rand()**2<=1 then num+=1 end end puts(4.0*num/N) #print("PI=",4.0*num/N)
234 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 03:21:43 ] pc12.2ch.net/test/read.cgi/tech/1248012902/709 # 【 課題 】 prolog.asia/html/prolog/872.html (仮にコピーさせていきました) # 【 形態 】1. Javaアプリケーション(main()で開始) # 【 期限 】1月22日 # 【 補足 】Eclipseを使用しています。 # 内容は前向き推論のプログラムです。 # このプログラムを実行したら、「gyouzaは作ることができる。」と表示させたい# 「nikuudouは作ることができる。」は表示させない。 # またRecipe.txtの中身を修正してもよい。
235 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 03:23:46 ] pc12.2ch.net/test/read.cgi/tech/1260532772/760 # [1] 授業単元:C言語 # [2] 問題文(含コード&リンク): # # 非線形方程式の解を求めるアルゴリズムのひとつに、ニュートン法と呼ばれる方ある。 # この方法ではf(x)=0の解の近似値を次の漸化式から求める。 # x_(i+1) =x_i - f(x_i)/f'(x_i) # # x_i の初期値を x_0 としたとき i=1から i=5すなわちx_1からx_5までをC言語で計算して示せ。
236 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 03:25:53 ] pc12.2ch.net/test/read.cgi/tech/1260532772/770 # # [1] 授業単元:C言語 # [2]問題文: # 下記の機能を備えた極めて単純なデータベースシステムであるカード型データベシステムの構築を考える。 # 新しい科目を登録する機能 # すでに登録されている科目を修正(更新)する機能 # 登録科目のソート(並び替え)を行う機能 # 登録科目の一部分のみを検索して取り出し、表示する機能 # 登録科目から、卒業までに必要な単位を計算し、表示する機能 # 卒業要件を簡略化しても良い.
237 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 03:28:42 ] >>760 の訂正 pc12.2ch.net/test/read.cgi/tech/1260532772/771 # 問題分が足りてなかったので再投稿させてもらいます。 # # [1] 授業単元:C言語 # [2] 問題文(含コード&リンク): # # 非線形方程式の解を求めるアルゴリズムのひとつに、ニュートン法と呼ばれる方ある。 # この方法ではf(x)=0の解の近似値を次の漸化式から求める。 # ただしf'(x)はxによる微分を表す。 # x_(i+1) =x_i - f(x_i)/f'(x_i) # # f(x)=2^2-e^x-2=0 # # x_i の初期値を x_0 としたとき i=1から i=5すなわちx_1からx_5までをC言語で計算して示せ。
238 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 03:29:53 ] pc12.2ch.net/test/read.cgi/tech/1260532772/772 # [1] 授業単元: プログラミング # [2]問題文:氏名,年齢,性別が5人分書かれた次のようなテキストファイルを # 込んで、両面に表示するプログラムを作成せよ.このとき,構造体を利用 # せよ. # (入力ファイル:test.txtの中身) # # Tanaka 31 Man # Kawai 24 Man # Suzuki 22 Woman # ltoh 40 Woman # Sugita 37 Man
239 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 03:37:48 ] pc12.2ch.net/test/read.cgi/tech/1260532772/773 # [1] 授業単元: # 画像処理 # [2] 問題文(含コード&リンク): # ime.nu/ux.getuploader.com/pyonpyon2009/download/6/%E8%AA%B2%E9%A1zip # 以下のプログラムを参考にして、画像を指定倍率で拡大・縮小するプログラムを してください。 # ・最低限、pgm形式のモノクロ画像を入出力可能とすること # ・コマンドラインインタフェースの仕様は各自で定めること # ・拡大・縮小の倍率をプログラム中に埋め込んで、再コンパイルしなければ倍率 更できないような仕様は不可 # ・補間の手法、縮小時のローパスフィルタリングの手法、順方向変換を用いるか 向変換を用いるか等、 # 変換の手法は各自で工夫すること。 # # 変換の手法、工夫した点、苦労した点などをテキストに記述し、ソースプログラ 2倍拡大画像、1/2倍縮小画像を添付すること。
240 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 03:51:17 ] >>238 Luaで f=io.open("test.txt","r") t={} line = f:read() while line do tmp={} for s in string.gmatch(line,"[%w]+") do table.insert(tmp,s); end table.insert(t,{["氏名"]=tmp[1],["年齢"]=tmp[2],["性別"]=tmp[3]}); line = f:read() end f:close() for i=1,#t do print(t[i]["氏名"].." "..t[i]["年齢"].." "..t[i]["性別"]) end
241 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 06:04:25 ] pc12.2ch.net/test/read.cgi/tech/1260532772/775 # [1] 授業単元:C言語 # [2]問題文: # 二次関数 f(x) = x2 について、x=0から3までの定積分を求めたい。 # 区分求積法により、この積分の近似値を求めよ。 # x軸方向の刻み幅Δxを0.1とする。
242 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 07:42:54 ] >>234 はプログラムを解読して書き直さないと出題にならないですね。 面白そうな問題なのでやってみます。 あっという間に問題ばかり溜まってしまいました。中に骨のある問題も多いようです。 私は、1月を過ぎると余裕ができるので一気に解決していきたいなと思っています。
243 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 10:34:15 ] pc11.2ch.net/test/read.cgi/db/1252492296/425 # SELECT * FROM tableA WHERE code = 7 # というSQLで以下のように表示されるのですが、 # # id , code , name , date , 売上 # 1 , 7 , りんご , 2010-01-12 , 350 # 1 , 7 , りんご , 2010-01-07 , 250 # 2 , 7 , みかん , 2010-01-12 , 450 # 2 , 7 , みかん , 2009-05-05 , 550 # # それを、売上があった日の1営業日後と3営業日後のそれぞれのidの価格も取得 いと考えております。 # # id , code , name , date , 売上 , 1営業日後売上 , 3営業日後売上 # 1 , 7 , りんご , 2010-01-12 , 350 , 400 , 500 # 1 , 7 , りんご , 2010-01-07 , 250 , 200 , 250 # 2 , 7 , みかん , 2010-01-10 , 450 , 500 , 300 # 2 , 7 , みかん , 2009-05-05 , 550 , 220 , 350 # (ちなみに実際のdateはUNIXTIMEで格納しています。) # 1営業日後にしているのは、休日の関係で1日後とできないからです。 # ここまでやるのは厳しいでしょうか?
244 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 11:36:31 ] >>243 % Prolog (1/2) 祝日がわからないと1営業日後がわからないので、 % 足掛かりとして、以下の定義をしておきましょう。今後祝日に関しては第二引数を解読しましょう。 国民の祝日に関する法律('第1条','自由と平和を求めてやまない日本国民は、美しい風習を育てつつ、よりよき社会、より豊かな生活を築きあげるために、ここに国民こぞって祝い、感謝し、又は記念する日を定め、これを「国民の祝日」と名づける。'). 国民の祝日に関する法律('第2条','自由と平和を求めてやまない日本国民は、美しい風習を育てつつ、よりよき社会、より豊かな生活を築きあげるために、ここに国民こぞって祝い、感謝し、又は記念する日を定め、これを「国民の祝日」と名づける。'). 国民の祝日に関する法律(第2条,'「国民の祝日」を次のように定める。'). 国民の祝日に関する法律(第2条,元日,1月1日,'年のはじめを祝う。'). 国民の祝日に関する法律(第2条,成人の日,1月の第2月曜日,'おとなになったことを自覚し、みずから生き抜こうとする青年を祝いはげます。'). 国民の祝日に関する法律(第2条,建国記念の日,政令で定める日,'建国をしのび、国を愛する心を養う。'). 国民の祝日に関する法律(第2条,春分の日 春分日 自然をたたえ、生物をいつくしむ。 国民の祝日に関する法律(第2条,昭和の日,4月29日,'激動の日々を経て、復興を遂げた昭和の時代を顧み、国の将来に思いをいたす。'). 国民の祝日に関する法律(第2条,憲法記念日,5月3日,'日本国憲法の施行を記念し、国の成長を期する。'). 国民の祝日に関する法律(第2条,みどりの日,5月4日,'自然に親しむとともにその恩恵に感謝し、豊かな心をはぐくむ。'). 国民の祝日に関する法律(第2条,こどもの日,5月5日,'こどもの人格を重んじ、こどもの幸福をはかるとともに、母に感謝する。).
245 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 11:37:21 ] >>243 % Prolog (2/2) つづき 国民の祝日に関する法律(第2条,海の日,7月の第3月曜日,海の恩恵に感謝するとともに、海洋国日本の繁栄を願う。). 国民の祝日に関する法律(第2条,敬老の日,9月の第3月曜日,多年にわたり社会につくしてきた老人を敬愛し、長寿を祝う。). 国民の祝日に関する法律(第2条,秋分の日,秋分日,'祖先をうやまい、なくなった人々をしのぶ。'). 国民の祝日に関する法律(第2条,体育の日,'10月の第2月曜日,スポーツにしたしみ、健康な心身をつちかう。'). 国民の祝日に関する法律(第2条,文化の日,11月3日,'自由と平和を愛し、文化をすすめる。'). 国民の祝日に関する法律(第2条,勤労感謝の日,11月23日,'勤労をたっとび、生産を祝い、国民たがいに感謝しあう。'). 国民の祝日に関する法律(第2条,天皇誕生日,12月23日,'天皇の誕生日を祝う。'). 国民の祝日に関する法律(第3条,'「国民の祝日」は、休日とする。'). 国民の祝日に関する法律(第3条,'2 「国民の祝日」が日曜日に当たるときは、その日後においてその日に最も近い「国民の祝日」でない日を休日とする。'). 国民の祝日に関する法律(第3条,'3 その前日及び翌日が「国民の祝日」である日(「国民の祝日」でない日に限る。)は、休日とする。').
246 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 12:01:20 ] pc12.2ch.net/test/read.cgi/tech/1260532772/776 # [1]オペレーティングシステム # [2]問題文(含コード&リンク): # ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1036t # fork とexec 族のシステムコールを用いて,簡単なコマンドインタープリタ(mysを作成せよ. # ただし,作成するコマンドインタープリタは以下の機能をサポートすること. # ・設定ファイル(.path)にコマンドサーチパスを指定することが出来る.なお,イル内のパスの指定方法は,各自が考えて定義すること.(パスにないコマンドを した場合には, # 見つからない旨のエラーメッセージを出力すること.) # ・パイプを利用して複数(可変個)のコマンドの入出力を結合することができる # ・コマンド実行中にCtrl-C を入力すると,現在のコマンドの実行を中断して, 次マンドを # 入力するためにプロンプトを出力する. # ・リダイレクション(“<” と “>”)を使用してコマンドへの入力をファイルから得たり,ファイルへ出力したりすることが出来る. # ・exit を入力すると,mysh を終了する.
247 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 16:10:07 ] >>243 % Prolog 一営業日後の定義に祝日と曜日の定義が必要になる。 一営業日後(_今日,_一営業日後) :- 曜日(_今日,_曜日), \+(member(_曜日,[土曜,日曜])), \+(祝日(_今日)), 翌日(_今日,_翌日), 次の営業日(_翌日,_一営業日後),!. 一営業日後(_今日,_一営業日後) :- 翌日(_今日,_翌日), 一営業日後(_翌日,_一営業日後),!. 三営業日後(_今日,_三営業日後) :- 一営業日後(_今日,_一営業日後), 一営業日後(_一営業日後,_二営業日後), 一営業日後(_二営業日後,_三営業日後),!. 次の営業日(_基準日,_次の営業日) :- 曜日(_基準日,_曜日), member(_曜日,[土曜,日曜]), 翌日(_基準日,_翌日), 次の営業日(_翌日,_次の営業日),!. 次の営業日(_基準日,_次の営業日) :- 祝日(_基準日), 翌日(_基準日,_翌日), 次の営業日(_翌日,_次の営業日),!. 次の営業日(_次の営業日,_次の営業日).
248 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 17:22:10 ] >>243 % Prolog '商品売上、1営業日後、3営業日後、比較表示' :- setof([_id,_name,_date],tableA( _id , 7 , _name , _date , _売上),L1), write('id, code, name, date, 売上,1営業日後売上,3営業日後売上\n'), member([_id_1,_name_1,_date_1],L1), split(_date_1,['-'],L2), concat_atom(L2,_日付), 一営業日後(_日付,_1営業日後), 三営業日後(_日付,_3営業日後), データベース日付表現(_1営業日後,_日付1), データベース日付表現(_3営業日後,_日付3), findsum(_売上,tableA( _id , 7 , Name , _日付 , _売上),Sum), findsum(_売上,tableA( _id , 7 , Name , _日付1 , _売上),Sum1), findsum(_売上,tableA( _id , 7 , Name , _日付3 , _売上),Sum3), wr('%t,%t,%t,%t,%t,%t\n',[_id_1,7,_name_1,Sum,Sum1,Sum3]), fail. '商品売上、1営業日後、3営業日後、比較表示'. データベース日付表現(_日付,_データベース日付表現) :- sub_atom(_日付,0,4,_,_年), sub_atom(_日付,4,2,_,_月), sub_atom(_日付,6,2,_,_日), concat_atom([_年,'-',_月,'-',_日],_データベース日付表現).
249 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 21:17:44 ] pc12.2ch.net/test/read.cgi/tech/1260532772/780 # [1] 授業単元: プログラミング演習 # [2] 問題文(含コード&リンク): 0,1のみを成分にもつn次正方行列Aは各行を2進数とみなして整数のリストとして表現できる。 # たとえば 3次正方行列は 1,0,0/0,1,0/0,0,1は{4,2,1} # # これに掃き出し法を適用し、{5,6,3}と入力したとき{5,3,0}と出力されるプログラムを作れ。 # ヒントとして、行の入れ替えは数字の入れ替えになる。 # n桁2進数xの下位から、上位からの数字はそれぞれどう書けるか考える。 # # まず正方行列の次数をきめ、入力できる10進数の最大値を表示、その後 # その範囲で数値をn回キーボードから入力した後、掃き出し法を行い、 # その正方行列の行の値を10進数に変換するプログラムです。
250 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:23:16 ] pc11.2ch.net/test/read.cgi/db/1252492296/434 # ■テーブルデータ # ○荷物テーブル # id 中身id 荷受け # 1 1 2009/12/11 # 2 1 2009/12/21 # 3 2 2010/12/25 # ○中身テーブル # id 品物 重さ # 1 本 500 # 2 テレビ 1000 # ○作業テーブル # 荷物id 作業項目id 作業者名 作業状況 # 1 1 佐藤 完了 # 1 3 志村 作業中 # 2 1 鈴木 完了 # 2 2 鈴木 未 # 2 3 田中 未 # 3 1 佐藤 完了 # 3 3 田中 未 # ○作業項目テーブル # id 作業内容 # 1 品物を入れる # 2 領収書を入れる # 3 封をして発送する
251 名前:デフォルトの名無しさん mailto:sage [2010/01/14(木) 23:24:21 ] >>250 問題つづき # # ■欲しい結果 # 荷物id 品物 重さ 作業者名※1 作業内容※1 作業状況 対応班※2 # 2 本 500 鈴木 領収書を入れる 未 2 # 3 テレビ 1000 田中 領収書を入れる 未 1 # ※1 作業状況が完了以外かつ作業項目idが一番小さいもの # ※2 重さが1000以上→作業班1、作業者名が鈴木かつ作業状況が未→作業班2、 作業状況にかかわらず、作業者名に田中がある荷物→作業班3 # (班1 > 班2 > 班3の順で優先し、荷物idを重複させない) # # ■説明 # 荷受けが2009/12/31以前の荷物かつ対応班が存在するものを抽出したいです。 # 荷物は沢山ありますのでパフォーマンスもできれば考慮したいです。 # 「パッとわからないけどちょっと考えればわかるだろJK」→「2時間考えてもできないorz」(今ここ)
252 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 05:19:11 ] pc12.2ch.net/test/read.cgi/tech/1248012902/711 # 【 課題 】課題は3題です。 # ime.nu/rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/873.zip # 課題1 # 乱数を使って掛け算九九の練習ソフトを作れ。ただし以下の条件に従うものとする 。 # # 10題練習したところで正解率が8割以下だったら、もう1セット10題の練習を繰り返 す。 # 10問中の正解率が8割以上になるまで繰り返し練習をさせる。
253 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 05:23:59 ] pc12.2ch.net/test/read.cgi/tech/1248012902/711 # 【 課題 】課題は3題です。 # ime.nu/rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/873.zip # 課題2 # 西暦を入力させ、うるう年かどうかを判定するプログラムを作れ。なお、うるう年 は以下で認定される。 # # 西暦の年号が400で割り切れる年はうるう年 # 西暦の年号が400で割り切れないが、100で割り切れる年はうるう年でない # 西暦の年号が100で割り切れないが、4で割り切れる年はうるう年
254 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 05:58:31 ] >>217 使用言語:J ('n',.'=',.":,.a),.':',.'e',.'=',.0j15":,.+/\%!a=.i.31x n= 0:e=1.000000000000000 n= 1:e=2.000000000000000 n= 2:e=2.500000000000000 n= 3:e=2.666666666666667 n= 4:e=2.708333333333333 n= 5:e=2.716666666666667 n= 6:e=2.718055555555556 n= 7:e=2.718253968253968 n= 8:e=2.718278769841270 n= 9:e=2.718281525573192 n=10:e=2.718281801146384 : n=29:e=2.718281828459045 n=30:e=2.718281828459045
255 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 06:20:01 ] >>253 使用言語:J f=:monad def '-.=/*400 4 100|y' f 1800 0 f 2000 1 f 2008 1 f 2010 0
256 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 06:24:52 ] pc12.2ch.net/test/read.cgi/tech/1260532772/796 # [1] プログラミング演習 # [2] 標準入力から読み込んだテキストファイルを辞書順に整列して標準出力する。 # 辞書順:文字列比較の順番はASCIIコード文字順をベースとした辞書順であるが、文字順が一部 # が変更される A<a<B<c<C<c..... # [5] 作業用ファイルwork.dat(内容は自由、サイズ無制限とする。プログラム終了時点で削除する必要は無い # ものとする。) # を使用出来る。stdio.hで定義されている標準ライブラリ関数、定数を利用出来る。 # 整列アルゴリズムは自由とする。
257 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 06:26:49 ] pc12.2ch.net/test/read.cgi/tech/1260532772/797 # [1] 授業単元:プログラミング演習 # [2] 問題文(含コード&リンク):問題1 戻値を持たず、一つの double 型の引数を持ち、過去に関数が # 呼ばれた時、全ての引数の値の総和を表示する関数、d_total # を定義し、動作の確認ができるプログラムとして作成せよ。例えば、 # d_total(0.1); # d_total(0.2); # d_total(0.3); # と呼べば、d_total の内部の処理にて # 0.1 # 0.3 # 0.6 # # と表示するということである。 # ただし, プログラム中の変数として、外部変数は使ってはな # らない。「内部変数か」自動変数のみを使って実現せよ。 # 問題2 戻値を持たず、二つの float 型のポインタの引数を持ち、二つ # の引数の値を交換する関数、f_swap を定義し、動作の確認がで # きるプログラムとして作成せよ。 # 問題3 4行4列のint型の行列を、転置するプログラムを作成せよ。動作の確認のため、転置前と転置後 # の行列の内容を表示するようにせよ
258 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 06:28:19 ] pc12.2ch.net/test/read.cgi/tech/1260532772/798 # [1] やさしいC # [2] 次の関数workをコンパイル出来るように,正しく動作するように修正し、 # 正しく実行出来るかどうかを確かめられるプログラムを作りなさい。 # double *work(double[] a,int N){ # double result[N]; # result[0] = a[N-2] ,a[N-1],a[0],a[1] a[2]を1:3:4:3:1の重みで平均した値 # result[1] = a[N-1],a[0],a[1],a[2] を1:3:4:3:1の重みで平均した値 # result[2] = a[0],a[1],a[2],a[3]を1:3:4::3:1の重みで平均した値 # result[3] = a[1],a[2],a[3],a[4] を1:3:4:3:1の重みで平均した値 # .... # result[N-2] = a[N-4],a[N-3],a[N-2],a[N-1],a[0] を1:3:4:3:1の重みで平均した値 # result[N-1] = a[N-3],a[N-2],a[N-1],a[0],a[1] を1:3:4:3:1の重みで平均した値 # return (double)&result[0]; # }
259 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 07:25:06 ] pc12.2ch.net/test/read.cgi/tech/1260532772/800 # [1]Cプログラミング演習 # [2] # 関数 op(int a,int b,int c)は次の結果を返す。 # 結果: a op1 b op2 c op3 a op4 b op5 c (op1,op2,op3,op4,op5は # + - * %(剰余) xor and orの何れか一つ) # +:演算0 -:演算1 *:演算2 /:演算3 xor:演算4 and:演算5 or:演算6 # op1=(3*a+5*b)の7による剰余がkの場合、演算kを選択 # op2=(5*b+4*c)の7による剰余がkの場合、演算kを選択 # op3=(a+3*c)の7による剰余がkの場合、演算kを選択 # op4=(a+2*b)の7による剰余がkの場合、演算kを選択 # op5=(3*c+2*b)の7による剰余がkの場合、演算kを選択 # ここで演算子の優先順位は高い順に + > - > * > % >xor > and > orとする # 例えば1 + 3 xor 5 * 7 - 5は(1+3) xor (5*(7-5))を意味する # 関数opをコードせよ。どのような演算が行われたか具体的に出力するprintf文も同時に出力すること。
260 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 07:36:26 ] pc12.2ch.net/test/read.cgi/tech/1248012902/711 # 【 課題 】課題は3題です。 # ime.nu/rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/873.zip # 課題3 # # 以下のプログラムに手を加え、アドレス表を利用した並び替えを行って人口の大き> # い順に人口と県民を表示しなさい # # 07年の都道府県人口(csv形式ファイル)は以下の場所にあります。 # prolog.asia/html/prolog/jinkou07.csv
261 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 07:38:49 ] >>259 訂正 修正前 → +:演算0 -:演算1 *:演算2 /:演算3 xor:演算4 and:演算5 or:演算6 修正後 → +:演算0 -:演算1 *:演算2 %(剰余):演算3 xor:演算4 and:演算5 or:演算6
262 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 08:09:06 ] >>250 欲しい結果(_荷受日下限,_荷受日上限) :- write('荷物id 品物 重さ 作業者名1 作業内容1 作業状況 対応班2\n'), 荷物テーブル(_id,_中身id,_荷受け), _荷受け @>= _荷受日下限, _荷受け @=< _荷受日上限, 中身テーブル(_中身id,_品物,_重さ), 作業テーブル(_id,_作業項目id,_作業者名,_作業状況), 作業項目テーブル(_作業項目id,_作業内容), 作業班(_作業者名,_作業状況,_重さ,_対応班), write_formatted('%t %t %t %t %t %t %t\n',[_id,_品物,_重さ,_作業者名,_作 業内容,_作業状況,_対応班]), fail. 欲しい結果(_,_). 作業班(_,_,_重さ,1) :- _重さ >= 1000,!. 作業班(_作業者名,_作業状況,_,2) :- _作業者名=鈴木,_作業状況='未',!. 作業班(田中,_,_,3) :- !.
263 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 08:11:05 ] >>250 変なところで折り返しが出たので書き直し。 % Prolog 欲しい結果(_荷受日下限,_荷受日上限) :- write('荷物id 品物 重さ 作業者名1 作業内容1 作業状況 対応班2\n'), 荷物テーブル(_id,_中身id,_荷受け), _荷受け @>= _荷受日下限, _荷受け @=< _荷受日上限, 中身テーブル(_中身id,_品物,_重さ), 作業テーブル(_id,_作業項目id,_作業者名,_作業状況), 作業項目テーブル(_作業項目id,_作業内容), 作業班(_作業者名,_作業状況,_重さ,_対応班), write_formatted('%t %t %t %t %t %t %t\n',[_id,_品物,_重さ,_作業者名,_作業内容,_作業状況,_対応班]), fail. 欲しい結果(_,_). 作業班(_,_,_重さ,1) :- _重さ >= 1000,!. 作業班(_作業者名,_作業状況,_,2) :- _作業者名=鈴木,_作業状況='未',!. 作業班(田中,_,_,3) :- !.
264 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 10:33:47 ] >>201 使用言語: 十進BASIC OPTION ARITHMETIC DECIMAL_HIGH !10進1000桁モード INPUT PROMPT "a =":a INPUT PROMPT "b =":b PRINT "a + b =";a+b PRINT "a - b =";a-b PRINT "a * b =";a*b END 実行結果 a =1.9999999999999999999999999 b =0.0000000000000000000000001 a + b = 2 a - b = 1.9999999999999999999999998 a * b = .00000000000000000000000019999999999999999999999999
265 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 10:40:01 ] >>253 % Prolog % prolog.asia/html/prolog/t815.html などにすでにあります。ここでは、 西暦を入力させ、うるう年かどうかを判定する(_西暦) :- 西暦の年号が400で割り切れる年はうるう年(_西暦),!. 西暦を入力させ、うるう年かどうかを判定する(_西暦) :- 西暦の年号が400で割り切れないが、100で割り切れる年はうるう年でない(_西暦),!. 西暦を入力させ、うるう年かどうかを判定する(_西暦) :- 西暦の年号が100で割り切れないが、4で割り切れる年はうるう年(_西暦). 西暦の年号が400で割り切れる年はうるう年(_西暦) :- 割り切れる(_西暦,400),!. 西暦の年号が400で割り切れないが、100で割り切れる年はうるう年でない(_西暦) :- \+(割り切れる(_西暦,400)), 割り切れる(_西暦,100),!,fail. 西暦の年号が100で割り切れないが、4で割り切れる年はうるう年(_西暦) :- \+(割り切れる(_西暦,100)), 割り切れる(_西暦,4),!. 割り切れる(A,B) :- 0 is A mod B.
266 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 11:19:21 ] >>260 % Prolog 並び替えを行って人口の大きい順に人口と県名を表示する(_ファイル) :- see(_ファイル), findall([_人口,_県名],(repeat,get_line(X),(X=end_of_file,!,fail; split(X,[','],[_県名,_人口])),L), seen, 降順に整列する(L,L1), 人口と県名を表示する(L1). 人口と県名を表示する([]) :- !. 人口と県名を表示する([[_人口,_県名]|R]) :- write_formatted('%t %t\n',[_人口,_県名]), 人口と県名を表示する(R).
267 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 11:40:30 ] >>213 使用言語:J p:i._1 p: 100 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
268 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 12:19:34 ] >>215 使用言語:maxima (%i41) display2d:false; (%o41) false (%i42) solve([x1+5*x2+x3=2,3*x1+4*x2=2,9*x1+10*x2+4*x3=8],[x1,x2,x3]); (%o42) [[x1 = 2/5,x2 = 1/5,x3 = 3/5]]
269 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 16:12:12 ] pc12.2ch.net/test/read.cgi/tech/1260532772/810 # [1] 授業単元:プログラミング論(大学) # [2] 問題文:softbankのiPhoneの使用料金を計算するプログラムを作りなさい
270 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 16:13:13 ] >>215 使用言語:J ]a=:3 3 $ 1 5 1,3 4 0,9 10 4 1 5 1 3 4 0 9 10 4 ]b=:2 2 8 2 2 8 (%.a)(+/ .*)b 0.4 0.2 0.6
271 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 17:08:31 ] pc12.2ch.net/test/read.cgi/tech/1260532772/812 # [1] 授業単元: 授業ではないですがお願いします # [2] 問題文(含コード&リンク): 100個の0〜10までの数字があるとするとき0じゃない数字の個数を数えて表示させたいんですが # どうすればいいのかよくわかりませんのでお願いします
272 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 17:45:51 ] >>271 使用言語:J a=: ?100#11 4 25 $ a 2 4 3 9 5 10 4 6 10 3 2 3 0 10 9 7 1 2 2 9 5 2 6 9 2 1 3 6 2 6 5 7 9 8 7 8 10 0 8 4 6 3 4 2 8 3 0 5 4 4 0 2 7 8 1 6 6 8 8 5 8 10 6 6 3 7 1 9 8 5 6 2 0 9 3 6 5 1 3 1 2 0 6 9 2 3 4 1 7 7 10 7 3 2 3 4 3 4 8 8 +/0=a 6
273 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 17:52:53 ] >>272 >>271 使用言語:J 間違えました。0の個数を数えてました。 a=: ?100#11 4 25 $ a 2 4 3 9 5 10 4 6 10 3 2 3 0 10 9 7 1 2 2 9 5 2 6 9 2 1 3 6 2 6 5 7 9 8 7 8 10 0 8 4 6 3 4 2 8 3 0 5 4 4 0 2 7 8 1 6 6 8 8 5 8 10 6 6 3 7 1 9 8 5 6 2 0 9 3 6 5 1 3 1 2 0 6 9 2 3 4 1 7 7 10 7 3 2 3 4 3 4 8 8 +/0~:a 94
274 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 18:14:48 ] >>217 使用言語:maxima (%i50) for n:0 thru 30 do printf(true,"n=~2d:e=~,15f~%",n,sum(1/i!,i,0,n)); n= 0:e=1.000000000000000 : n=30:e=2.718281828459045
275 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 18:20:58 ] >>271 % Prolog '100個の0〜10までの数字を発生させる'(L) :- length(L,100), '0〜10までの数字を発生させる'(L). '0〜10までの数字を発生させる'([]) :- !. '0〜10までの数字を発生させる'([N|R]) :- N is random mod 11, '0〜10までの数字を発生させる'(R). '0じゃない数字の個数を数えて表示させる'(L) :- count((member(A,L),number(A),\+(A=0)),_0じゃない数字の個数), write_formatted('0じゃない数字は%t個です\n',[_0じゃない数字の個数]).
276 名前:デフォルトの名無しさん [2010/01/15(金) 21:14:06 ] pc12.2ch.net/test/read.cgi/tech/1260532772/819 # [1] 授業単元:情報処理基礎 # [2] 問題文:以下はmain関数、サブ関数で作成します。 # 1.数値nを一つ入力し、各桁の和を求めよ。(123→6) # 2.数値nを反転した値を表示せよ。(123→321)
277 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 21:15:57 ] pc12.2ch.net/test/read.cgi/tech/1260532772/820 # [1] 授業単元:情報処理基礎 # [2] 問題文:二次方程式ax^2+bx+c=0の解を求めるプログラムを作成せよ。 # a,b,cの値を入力する。計算結果は必ず5種類表示すること。 # a=b=c=0の場合、処理を終了する。a=b=0、Cが0以外の場合は「不能」と表示する。 # a=0、bが0以外の場合は「一次方程式」と解を表示する。 # 判別式がD<0の場合、「虚解」と表示する。 # 判別式がD<0の場合以外も、必要な表示、結果を表示します。
278 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 21:39:51 ] pc12.2ch.net/test/read.cgi/tech/1260532772/821 # [1] 授業単元: コンパイラ # [2] 問題文(含コード&リンク): # PAdaで記述されたソースプログラムをC言語のソースプログラムに # 変換するコンパイラを作成しなさい。 # ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10363.zip #
279 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 22:29:17 ] >>276 % Prolog main :- 催促付き整数入力('ひとつ対象となる整数を入力してください : ',_整数), write('1.数値nを一つ入力し、各桁の和を求めよ。(123→6)\n'), write('2.数値nを反転した値を表示せよ。(123→321)\n'), 催促付き整数入力('1-2を選択してください : ',_整数2), 目標選択(_整数2,_整数). 目標選択(1,_数値n) :- '数値nを一つ入力し、各桁の和を求める'(_数値n,_各桁の和), write_formatted('各桁の和は%tです\n',[_各桁の和]). 目標選択(2,_数値n) :- '数値nを反転した値'を表示する'(_数値n). '数値nを一つ入力し、各桁の和を求める'(_数値n,_各桁の和) :- number_codes(_数値n,L), findsum(U,(member(A,L),U is A-48),_各桁の和). '数値nを反転した値'を表示する'(_数値n) :- '数値nを反転した値'(_数値n,_数値nを反転した値), write_formatted('数値を反転した値は%tです\n',[_数値nを反転した値]). '数値nを反転した値'(_数値n,_数値nを反転した値) :- number_codes(_数値n,L1), reverse(L1,L2), number_codes(_数値nを反転した値,L2).
280 名前:デフォルトの名無しさん [2010/01/15(金) 22:36:02 ] pc12.2ch.net/test/read.cgi/tech/1259990485/701 # 文字列をn文字ずつ&1文字ずつに分割したいのですが # x = "ABCDEFGHIJKLMNOPQRSTUVWXY" # x = x.scan(/.{5}/) # x.collect!{|y|y.scan(/./)} # p x # =>[["A","B","C","D","E"],["F","G","H","I","J"],["K","L","M","N","O"],["P","Q","R","S","T"],["U","V","W","X","Y"]] # みたいに書くと都度、正規表現によるマッチが行われるので遅いです # もっと高速に実行する方法があったら教えてください。よろしくお願いします
281 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 22:50:14 ] >>280 % Prolog '文字列をn文字ずつ&1文字ずつに分割'(_文字列,N文字ずつ,L) :- atom_chars(_文字列,Chars), 'N個組'(N文字ずつ,Chars,L). 'N個組'(_,[],[]) :- !. 'N個組'(N,L,[U|R]) :- 先頭からN個(N,L,U,R1), 'N個組'(N,R1,R). 先頭からN個(_,[],[],[]) :- !. 先頭からN個(0,L,[],L) :- !. 先頭からN個(N,[A|R1],[A|R2],R) :- M is N - 1, 先頭からN個(M,R1,R2,R).
282 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 23:17:23 ] >>280 使用言語:J a=:'ABCDEFGHIJKLMNOPQRSTUVWXY' f=:dyad def ';/&.> (-x)<\y' 5 f a +-----------+-----------+-----------+-----------+-----------+ |+-+-+-+-+-+|+-+-+-+-+-+|+-+-+-+-+-+|+-+-+-+-+-+|+-+-+-+-+-+| ||A|B|C|D|E|||F|G|H|I|J|||K|L|M|N|O|||P|Q|R|S|T|||U|V|W|X|Y|| |+-+-+-+-+-+|+-+-+-+-+-+|+-+-+-+-+-+|+-+-+-+-+-+|+-+-+-+-+-+| +-----------+-----------+-----------+-----------+-----------+ 7 f a +---------------+---------------+---------------+---------+ |+-+-+-+-+-+-+-+|+-+-+-+-+-+-+-+|+-+-+-+-+-+-+-+|+-+-+-+-+| ||A|B|C|D|E|F|G|||H|I|J|K|L|M|N|||O|P|Q|R|S|T|U|||V|W|X|Y|| |+-+-+-+-+-+-+-+|+-+-+-+-+-+-+-+|+-+-+-+-+-+-+-+|+-+-+-+-+| +---------------+---------------+---------------+---------+
283 名前:デフォルトの名無しさん mailto:sage [2010/01/15(金) 23:48:53 ] >>276 使用言語:J g=:monad def '+/"."0":y' h=:monad def '|.&.":y' f=:monad define smoutput ('各桁の和=',":g y),:'反転値 =',":h y ) f 123 各桁の和=6 反転値 =321
284 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 05:09:26 ] pc12.2ch.net/test/read.cgi/tech/1260532772/834 # [2010/01/15 19:27:07] リュック: 【質問テンプレ】 # [1] 授業単元: プログラミング演習 # [2] 問題文(含コード&リンク): ime.nu/www.dotup.org/uploda/www.dotup.org563734.zip.html # [2] のコピー: prolog.asia/html/prolog/c133_834.html
285 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 05:37:43 ] pc12.2ch.net/test/read.cgi/tech/1260532772/827 # 下記の機能を備えた極めて単純なデータベースシステムであるカード型データベースシステムの構築を考える。 # 課題7-1 # 下記のような方針でプログラムを作成せよ。 # 新しい科目を登録する機能 # すでに登録されている科目を修正(更新)する機能 # 登録科目のソート(並び替え)を行う機能 # 登録科目の一部分のみを検索して取り出し、表示する機能 # 登録科目から、卒業までに必要な単位を計算し、表示する機能 # データベースファイルの仕様 # データベースファイルについては、本格的なデータベースになると、アクセス性や # 安定性など様々な要求を満たす必要があるが、ここでは最も単純なテキストファイルとする。 # さらに、書き込みをfprintfで、読み込みをfscanfで行えるように、 1行中に、 # それぞれの項目(フィールド)がスペースで区切られているようなファイルとする。 # なお、この場合、それぞれの項目はスペースを含んでいけないこととなる。 # 履修科目データベースシステムの例においては、例えば、 # 単位の種類(必修、選択必修など)、単位数、年次、前期か後期か、再履修かどうか、成績の6項目を含むこととする。 # ここで、いくつかの選択肢から選択するものについては、数字で置き換えることとする。 # このような仕様に基づいたファイルの例は以下のようなものになる。ここでは、ファイル名は、"ユーザ名_kamokudb.txt"とする。
286 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 06:00:50 ] >>277 % Prolog '二次方程式ax^2+bx+c=0の解を求める'(0,0,0,_) :- !. '二次方程式ax^2+bx+c=0の解を求める'(0,0,C,不能) :- \+(C==0),!. '二次方程式ax^2+bx+c=0の解を求める'(0,B,C,一次方程式) :- \+(B==0),!. '二次方程式ax^2+bx+c=0の解を求める'(A,B,C,_解) :- _判別式の値 is (B ^ 2 - 4 * A * C), '二次方程式ax^2+bx+c=0の解判定'(_判別式の値,A,B,C,_解). '二次方程式ax^2+bx+c=0の解判定'(_判別式の値,_,_,_,虚解) :- _判別式の値 < 0,!. '二次方程式ax^2+bx+c=0の解判定'(_判別式の値,A,B,C,_解) :- _解 is ((-1) * B + sqrt(_判別式の値)) / ( 2 * A ). '二次方程式ax^2+bx+c=0の解判定'(_判別式の値,A,B,C,_解) :- _解 is ((-1) * B - sqrt(_判別式の値)) / ( 2 * A ).
287 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 06:44:06 ] >>269 % Prolog (その一) :- op(350,xf,円). お客様データベース('長石 輝',ホワイトプラン通話料,2130). お客様データベース('長石 輝',ホワイトプランメールウェブ利用料金,0). お客様データベース('長石 輝',パケット使用量,47310). iphoneのご利用料金(_お客様名,_ご利用料金 円) :- お客様データベース(_お客様名,ホワイトプラン通話料,_通話料), お客様データベース(_お客様名,ホワイトプランメールウェブ利用料金,_メール ウェブ利用料金), お客様データベース(_お客様名,パケット使用量,_パケット使用量), 'ホワイトプラン(i)'(_通話料,_メールウェブ利用料金,_ホワイトプラン料金 円), パケット料金(_パケット使用量,_パケット料金 円), _ご利用料金 is _ホワイトプラン料金 + _パケット料金. 'ホワイトプラン(i)'(_ホワイトプラン料金 円) :- ホワイトプラン基本使用料・通話料(_通話料 円,_基本使用料・通話料 円), ホワイトプランメールウェブ利用料金(_メールウェブ利用料金 円), _ホワイトプラン料金 is _基本使用料・通話料 + _メールウェブ利用料金,!. ホワイトプラン基本使用料・通話料(_通話料 円,_基本使用料・通話料 円) :- _基本使用料・通話料 is 980 + _通話料.
288 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 06:45:46 ] >>269 % Prolog ホワイトプラン基本使用料・通話料(_通話料 円,_基本使用料・通話料 円) :- _基本使用料・通話料 is 980 + _通話料. ホワイトプランメールウェブ利用料金(0 円). パケット料金(_パケット,_パケット料金 円) :- 'S!ベーシックパック(i)'(_パケット料金_1 円), パケット定額フル(_パケット,_パケット料金_2 円), _パケット料金 is _パケット料金_1 + _パケット料金_2,!. 'S!ベーシックパック(i)'(315 円). パケット定額フル(_パケット,1029 円) :- _パケット =< 12250,!. パケット定額フル(_パケット,_パケット料金 円) :- _パケット > 12250, _パケット =< 71250, _パケット料金 is (_パケット - 12250) * 0.084 + 1029,!. パケット定額フル(_パケット,5985 円) :- _パケット > 71250,!.
289 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 08:16:13 ] >>258 % Prolog 重み付け平均をRLにセット(AL,RL) :- _重みならび = [1,3,4,3,1], sum(_重みならび,_重み合計), list_nth(N-2,AL,A_2), list_nth(N-1,AL,A_1), list_nth(1,AL,A1), list_nth(2,AL,A2), append([A_2,A_1|AL],[A1,A2],AL2), N2 is N + 2, 重み付け平均をRLにセット(3,N2,_重みならび,_重み合計,AL2,RL). 重み付け平均をRLにセット(M,N,_重みならび,_重み合計,AL,[]) :- M > N,!. 重み付け平均をRLにセット(M,N,_重みならび,_重み合計,AL,[_重み付け平均|R]) :- findall(B,(for(M-2,U,M+2),list_nth(U,AL,B)),L1), 重み付け平均(L1,_重みならび,_重み合計,0,_重み付け平均), M2 is M + 1, 重み付け平均をRLにセット(M2,N,_重みならび,_重み合計,AL,R). 重み付け平均([A|R1],[B|R2],_重み合計,S1,_重み付け平均) :- _重み付け平均 is S1 / _重み合計,!. 重み付け平均([A|R1],[B|R2],_重み合計,S1,_重み付け平均) :- S2 is S1 + A * B, 重み付け平均(R1,R2,_重み合計,S2,_重み付け平均).
290 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 08:56:03 ] >>258 使用言語:J f=:dyad def '(+/x)%~+/"1 x*(i.#y)|."0 1 y' 1 3 4 3 1 f 1 2 3 4 5 1.25 3.75 5 3.75 1.25
291 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 09:25:52 ] pc12.2ch.net/test/read.cgi/tech/1260532772/841 # [1] 授業単元: コンピュータシミュレーション # [2] 問題文(含コード&リンク):円盤状に分布させた質点に回転の初期条件をあたえたいのですが、 # 中心からの距離、位置により速度の大きさと向きが変わるのでどのようにおけばいいのかお願いします。 #
292 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 09:41:18 ] >>231 % Prolog 九九表を作り,テキストファイルに書き出す(_テキストファイル) :- 九九表を作り(_九九表), tell(_テキストファイル), 書き出す(_九九表), told. 九九表を作り(M,N,[]) :- M > N,!. 九九表を作り(M,N,[L|R]) :- findall(K,(for(1,J,9),K is J * M),L), M2 is M + 1, 九九表を作り(M2,N,R). テキストファイルに書き出す(_テキストファイル,_ならび) :- tell(_テキストファイル), 書き出す(_ならび), told. 書き出す([]) :- !. 書き出す([L|R]) :- concat_atom(L,' ',S), write_formatted('%t\n',[S]), 書き出す(R).
293 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 10:07:07 ] >>256 % Prolog (その一) 標準入力から読み込んだテキストファイルを辞書順に整列して標準出力する :- 標準的整列ルール(32,127,_標準的整列ルール), 例外的整列ルール(_例外的整列ルール), get_lines(user_input,Lines), concat_atom(Lines,' ',S), split(S,[' '],_語彙ならび), 辞書順整列(_語彙ならび,_標準的整列ルール,_例外的整列ルール,[],_辞書順に整列された語彙ならび), 語彙ならびを標準出力する(_語彙ならび). 語彙ならびを標準出力する([]). 語彙ならびを標準出力する([_語彙|R]) :- write_formatted('%t\n',[_語彙]), 語彙ならびを標準出力する(R). 標準的整列ルール(M,N,[]) :- M > N,!. 標準的整列ルール(M,N,[A|R]) :- \+((M >=97,M =< 122)), char_code(A,M), M2 is M + 1, 標準的整列ルール(M2,N,R),!. 標準的整列ルール(M,N,[A,B|R]) :- M >= 65,M =< 90, M32 is M + 32, char_code(A,M),char_code(B,M32), M2 is M + 1, 標準的整列ルール(M2,N,R),!.
294 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 10:20:25 ] >>293 訂正 % Prolog この定義の一番最後は _辞書順に整列された語彙ならび でないといけない。 標準入力から読み込んだテキストファイルを辞書順に整列して標準出力する :- 標準的整列ルール(32,127,_標準的整列ルール), 例外的整列ルール(_例外的整列ルール), get_lines(user_input,Lines), concat_atom(Lines,' ',S), split(S,[' '],_語彙ならび), 辞書順整列(_語彙ならび,_標準的整列ルール,_例外的整列ルール,[],_辞書順に整列された語彙ならび), 語彙ならびを標準出力する(_辞書順に整列された語彙ならび).
295 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 10:42:01 ] >>192 % Prolog 現在の対ドル為替レート(92.69). 日本円をドルに変換する(_日本円,_ドル,_セント) :- 現在の対ドル為替レート(_現在の為替レート), _ドル is truncate(float_integer_part(_日本円 / _現在の為替レート)), _セント is truncate(float_fractional_part(_日本円 / _現在の為替レート) * 100). 日本円をドルとセントに変換して金種を計算する(_日本円,_ドルの金種,_セントの金種) :- 日本円をドルに変換する(_日本円,_ドル,_セント), ドルの金種計算(_ドル,[100,50,20,10,5,2,1],_ドルの金種), セントの金種計算(_セント,[50,25,10,5,1],_セントの金種). ドルの金種計算(_,[],[]) :- ドルの金種計算(D,[_金種|R1],[[_金種,_枚数]|R2]) :- _枚数 is truncate(D // _金種), D2 is truncate(D mod _金種), ドルの金種計算(D2,R1,R2). セントの金種計算(_,[],[]) :- セントの金種計算(C,[_金種|R1],[[_金種,_枚数]|R2]) :- _枚数 is truncate(C // _金種), C2 is truncate(C mod _金種), セントの金種計算(C2,R1,R2).
296 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 11:37:09 ] >>257 % Prolog 問題3 これもこれまで何度も定義された。 行列の転置([[]|_],[]) :- !. 行列の転置(_副行列,[_第一要素ならび|R]) :- 第一要素と残り要素の収集(_副行列,_第一要素ならび,_残り要素ならび), 行列の転置(_残り要素ならび,R),!. 第一要素と残り要素の収集([],[],[]) :- !. 第一要素と残り要素の収集([[A|R1]|R2],[A|R3],[R1|R4]) :- 第一要素と残り要素の収集(R2,R3,R4).
297 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 11:47:35 ] pc12.2ch.net/test/read.cgi/tech/1260532772/843 # [1] 授業単元:計算機基本 # [2] 問題文(含コード&リンク): # 1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求めるプログラムを作ってみましょう。 # 途中経過も表示してください。 # 例:1^2 + 2^2 = # 1^2 + 2^2 + 3^2 = # ....
298 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 16:32:10 ] pc12.2ch.net/test/read.cgi/tech/1260532772/847 # [1] 授業単元: プログラミング演習 # [2] 問題文(含コード&リンク): ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10368.txt #
299 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 16:37:32 ] # 基本課題 2a(数式の読み込みと表示) # 課題 2a と 2b では,算術式を読み,表示し,値を求めるプログラムを作る. # 限られた時間内で数式処理の本質部分を効率よく学ぶために, # 入力できる算術式の構文を,次の BNF で定めるものに限る. # # 定数 ::= 0 | 1 | … | 9 # 変数 ::= a | b | … | z | A | B | … | Z # 算術式 ::= 定数 # | 変数 # | (算術式+算術式) # | (算術式*算術式) # # つまり,1桁の定数や1文字の変数の和や積からなる式が入力である. # # 入力された算術式を読み込み,2分木データとして格納し,そのデータをもとに # 入力と同じ算術式を表示する,という処理を繰り返すプログラムを作れ. # # 次の要求を満たすものを作り,仕様の不明確な部分は各自で詳細化すること. # # ・算術式は標準入力から読む # ・2つの算術式の区切りは1つの空白 (間隔文字や改行文字など) とする # ・結果は標準出力に書く # ・構文に合わない算術式を読んだらプログラムを終了する
300 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 16:40:18 ] # ●基本課題 2b(数式の値の計算) # # 課題 2a のプログラムに,算術式の値を計算して表示する機能を追加せよ. # ただし,変数の値は全て1であるとして,式の値を求めること. # # 例えば,入力が (2*3) と (x+(y+z)) の場合,次のような出力をすればよい. # show: に続いて入力された算術式を,eval: に続いて算術式の値を表示している. # # (2*3) ←入力 # show: (2*3) # eval: 6 # # (x+(y+z)) ←入力 # show: (x+(y+z)) # eval: 3 # # まず,算術式の値を求める関数 eval_exp()(exp.c にある)を完成させる. # 十分な数の検査データを使って動作の正しさを確かめよ.
301 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 16:42:16 ] # ●基本課題 2c(数式データの基本操作) # # 算術式の値を変えずに括弧をくくり直す簡単な式変形を考える.例えば,式 # # (1+(2+3)) # (a*(b*c)) # ((i*x)+((j*y)+(k*z))) # # の括弧を左にくくり直すと,それぞれ,次の式になる. # # ((1+2)+3) # ((a*b)*c) # (((i*x)+(j*y))+(k*z)) # # 括弧を左にくくり直せる (A+(B+C)) や (A*(B*C)) の形の算術式を # ((A+B)+C) や ((A*B)*C) の形にする式変形は,式に対応する木を # 「左に転回」する変形と捉えられる.
302 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 19:23:50 ] >>297 % Prolog '1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(_経過,_和) :- '1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(1,[],_経過,0,_和). '1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(M,_経過,_経過,_和,_和) :- M > 10,!. '1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(M,_経過1,_経過,S1,_和) :- M =< 10, concat_atom([M,'^2'],U), append(_経過1,[U],_経過11), concat_atom(_経過11,'+',_経過), _和 is truncate(M ^ 2 + S1). '1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(M,_経過1,_経過,S1,_和) :- M =< 10, concat_atom([M,'^2'],U), append(_経過1,[U],_経過2), S2 is truncate(M ^ 2 + S1), M2 is M + 1, '1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(M2,_経過2,_経過,S2,_和).
303 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 20:04:17 ] >>297 ruby sum=0;array=[] for i in 1..10 sum+=i**2 array.push (i.to_s(10)+"^2") puts array.join(" + ") + " = " + sum.to_s(10) end
304 名前:デフォルトの名無しさん mailto:sage [2010/01/16(土) 23:28:57 ] >>297 使用言語:Io なんか前にやった問題だなあと、ながめていたらrubyによる解答が 書き込まれた。これを参考にもう一度やってみた。 Io> s:=0;a:="";for(i,1,10,writeln(a=a .. i .. "^2"," = ",s=s+i*i);a=a .. " + ")
305 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 01:00:17 ] >>297 ;; Common Lisp ひさしぶりに挑戦 (dotimes (n 10) (let (lst) (dotimes (i (+ n 1)) (push (+ i 1) lst)) (setf lst (reverse lst)) (format t "~A = ~A~%" (reduce #'(lambda (x y) (concatenate 'string x " + " y)) (map 'list #'(lambda (x) (concatenate 'string (princ-to-string x) "^2")) lst)) (reduce #'+ (map 'list #'(lambda (x) (* x x)) lst)))))
306 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 05:23:53 ] >>297 使用言語:maxima for i thru 10 do printf(true,"~{~a^2~^ + ~} = ~a~%",a:makelist(j,j,1,i),lsum(k*k,k,a));
307 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 05:37:41 ] pc12.2ch.net/test/read.cgi/tech/1260532772/864 # [1] 授業単元: プログラミング演習 (木構造と数式処理) # [2] 問題文(含コード&リンク): # # 算術式の値を変えずに括弧をくくり直す簡単な式変形を考える.例えば,式 # # (1+(2+3)) # (a*(b*c)) # ((i*x)+((j*y)+(k*z))) # # の括弧を左にくくり直すと,それぞれ,次の式になる. # # ((1+2)+3) # ((a*b)*c) # (((i*x)+(j*y))+(k*z)) # # 括弧を左にくくり直せる (A+(B+C)) や (A*(B*C)) の形の算術式を((A+B)+C) や ((A*B)*C) の形にする式変形は,式に対応する木を # 「左に転回」する変形と捉えられる # # この操作を実行する関数 rotate_left_exp()を完成させてください。 # 括弧をくくり直すと値の変わる (8+(8*8)) のような式や,括弧をくくり直せる部分が内側にある (a+(b*(c*d))) のような式は, # 変形しないこと.
308 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 06:11:43 ] >>297 訂正 % Prolog 一引数増やします。 '1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(M,_経過,_和) :- '1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(1,M,[],_経過,0,_和). '1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(M,M,_経過,_経過,_和,_和) :- M > 10,!. '1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(M,M,_経過1,_経過,S1,_和) :- M =< 10, concat_atom([M,'^2'],U), append(_経過1,[U],_経過11), concat_atom(_経過11,'+',_経過), _和 is truncate(M ^ 2 + S1). '1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(M,MX,_経過1,_経過,S1,_和) :- M =< 10, concat_atom([M,'^2'],U), append(_経過1,[U],_経過2), S2 is truncate(M ^ 2 + S1), M2 is M + 1, '1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(M2,MX,_経過2,_経過,S2,_和).
309 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 06:14:45 ] >>308 (>>297 ) % Prolog これで以下のように使います。 ?- '1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(N,S,_和),write_formatted('%t=%t\n',[S,_和]),N>=10. 1^2=1 1^2+2^2=5 1^2+2^2+3^2=14 1^2+2^2+3^2+4^2=30 1^2+2^2+3^2+4^2+5^2=55 1^2+2^2+3^2+4^2+5^2+6^2=91 1^2+2^2+3^2+4^2+5^2+6^2+7^2=140 1^2+2^2+3^2+4^2+5^2+6^2+7^2+8^2=204 1^2+2^2+3^2+4^2+5^2+6^2+7^2+8^2+9^2=285 1^2+2^2+3^2+4^2+5^2+6^2+7^2+8^2+9^2+10^2=385 N = 10, S = '1^2+2^2+3^2+4^2+5^2+6^2+7^2+8^2+9^2+10^2', _和 = 385.
310 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 06:17:52 ] >>308 (>>297 ) % Prolog または、次のように利用もします。 ?- '1から10までの整数の2乗の和 1^2 + 2^2 + 3^2 + ... +8^2 + 9^2 + 10^2 を求める'(N,S,_和). N = 1, S = '1^2', _和 = 1; N = 2, S = '1^2+2^2', _和 = 5; N = 3, S = '1^2+2^2+3^2', _和 = 14; <中略> N = 9, S = '1^2+2^2+3^2+4^2+5^2+6^2+7^2+8^2+9^2', _和 = 285; N = 10, S = '1^2+2^2+3^2+4^2+5^2+6^2+7^2+8^2+9^2+10^2', _和 = 385; no. ?-
311 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 06:38:27 ] pc11.2ch.net/test/read.cgi/db/1252492296/445 # MySQL 5.1での質問です。 # # A B C # 1 q name1 # 2 w name2 # 3 e name3 # 4 q name4 # 5 t name5 # # 上記テーブルのB列の重複を除いたA,B,C列がほしい場合 # # SELECT DISTINCT B FROM table_name; # # ではB列の重複を除くだけで他の列がとれません。他の列も併せて取得する場合はど のような解決策がありますか? # # 望んでる結果は以下のものです。 # # A B C # 1 q name1 # 2 w name2 # 3 e name3 # 5 t name5 #
312 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 07:37:43 ] ttp://pc12.2ch.net/test/read.cgi/tech/1260532772/866 # # 【質問テンプレ】 # [1] 授業単元:C言語演習 # [2] 問題文(含コード&リンク): コマンド引数を使用して # 以下のように指定した文字列中の指定番号の文字を表示するプログラムを作成せよ。 # # 例:./prg1 abcde 1 # char 1 is "a" # ./peg1 abcdef123456 10 # char 10 is "4" # # エラー処理もしっかり行うこと。
313 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 09:40:27 ] >>311 使用言語:J A=:,.1;2;3;4;5 B=:'q';'w';'e';'q';'t' C=:,.'name1';'name2';'name3';'name4';'name5' A,.B,.C +-+-+-----+ |1|q|name1| +-+-+-----+ |2|w|name2| +-+-+-----+ |3|e|name3| +-+-+-----+ |4|q|name4| +-+-+-----+ |5|t|name5| +-+-+-----+ (~:B)# A,.B,.C +-+-+-----+ |1|q|name1| +-+-+-----+ |2|w|name2| +-+-+-----+ |3|e|name3| +-+-+-----+ |5|t|name5| +-+-+-----+
314 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 16:53:42 ] pc12.2ch.net/test/read.cgi/tech/1260532772/881 # [1] 授業単元:プログラミング # [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10376.txt # # 連立1次方程式の一般的な数値解法にはガウスの単純消去法がある。 # 下記の連立1次方程式の解法をC言語で表せ。 # # x1 + 5x2 + x3 = 2 # 3x1 + 4x2 = 2 # 9x1 +10x2 + 4x3 = 8
315 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:00:18 ] pc12.2ch.net/test/read.cgi/tech/1260532772/881 # [1] 授業単元:プログラミング # [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10376.txt # # 問題文の構造が大きすぎてコピーできません。[2]のリンクを各自で見てください。
316 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:31:46 ] >>313 解説お願い。
317 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 17:39:41 ] >>315 は>>314 と同じものになってしまいました。構造が多くてコピーできなかったのは 以下の問題です。 pc12.2ch.net/test/read.cgi/tech/1260532772/885 # [1] 授業単元:プログラミング(大学講義) # [2] 問題文 # ハングマンを作成せよ。 # ime.nu/ipl.sfc.keio.ac.jp/text/comp-prog-2007-4/main_c9.html#doc1_id2542 # ime.nu/ipl.sfc.keio.ac.jp/text/comp-prog-2007-4/main_c10.html#doc1_id2748 #
318 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 19:16:26 ] >>316 「~.」が通常のuniqですが、AとCを道連れにするするために 「~:」を使いました。これは、いきなりuniqせずに残す要素を1で 削除する要素を0で表したリストを返します。 「#」はコピーなんですが、1と0のリストを左引数に、操作するデータ を右引数にすると1に対応するデータだけを返します。 B=:,.'q';'w';'e';'q';'t' ~. B +-+ |q| +-+ |w| +-+ |e| +-+ |t| +-+ ~: B 1 1 1 0 1 1 1 1 0 1 # B +-+ |q| +-+ |w| +-+ |e| +-+ |t| +-+
319 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 19:52:42 ] >>318 「~:」によって、どうして、 01111 ではなく 11101 の選択になるのですか?
320 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 19:55:31 ] pc12.2ch.net/test/read.cgi/tech/1260532772/894 # お願いします # [1] 授業単元: プログラミング演習� # [2] 問題文(含コード&リンク): # Printfを作る。 # %d, %c, %sのみサポートする。
321 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 21:14:04 ] >>319 J言語のuniqは重複した要素の内、最初にあらわれたものを 残すようです。
322 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 21:16:39 ] pc12.2ch.net/test/read.cgi/tech/1258320456/85 # 【課題】 # 同じ長さのリストA,Bがある。Aはソート対象のデータ、Bは比較用の値が入っている。 # A,Bの2つの引数をとり、Bの値が昇順になるようにAをソートする関数を定義しなさい。 # 引数のリストは破壊しても良く、ソート結果は戻り値・引数Aを上書きのどちらでも良い。 # 処理の早いものには追加点を与える。 #
323 名前:デフォルトの名無しさん mailto:sage [2010/01/17(日) 21:18:13 ] >>321 ご丁寧な回答に感謝します。
324 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 06:01:26 ] pc12.2ch.net/test/read.cgi/tech/1260532772/911 # お願いします # [1] 授業単元:電子演算機演習 # [2] 問題文(含コード&リンク): # 2次元の文字配列が、main関数内において次の詞で初期化(空白行も含める)されている。 # 例によって、初期化に用いられた詞の文字数や行数などはわかっていないものとする。 # # (1)関数NumOfCharで総文字数(空白以外)を、(2)関数NumOfWordで単語数を、(3)関数 # NumOfLineで行数(空白行は数えない。また、空白行が2行以上続くことはない)を、(4)main # 関数内でキーボードから一文字入力し、関数NumOfCoinで入力した文字と一致する文字数を数えて、 # main関数内でそれらの数を表示する。文字列に小細工をしないこと(単語:空白又は改行から空白 # 又は改行まで)
325 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 06:05:16 ] pc12.2ch.net/test/read.cgi/tech/1248012902/728 # 【 課題 】国旗を表示するプログラム(日の丸、星条旗、ユニオンジャック等)を作れ。 指定された国旗を画面に表示する。少なくても8種類以上。 国旗の指定にはメニューとかボタンとかを表示して、選択させること。 # 国旗は図形として描くこと。写真を貼り付けたりしては駄目。
326 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 06:11:51 ] pc12.2ch.net/test/read.cgi/tech/1262163854/238 # Repl-Aceというテキスト置換ツールを使っているんですが、 # # 1月 # ・1日 # ・2日 # ・3日 # 2月 # ・1日 # ・2日 # ・3日 # # といったテキストを、 # # 1月1日 # 1月2日 # 1月3日 # 2月1日 # 2月2日 # 2月3日 # # といったように置換することができず困っています。 # 単純な文字の置換や簡単な正規表現は理解できるのですが、 # 1月から2月までの「・」を「1月」に置換、2月から3月までの「・」を「2月」に置換、3月から(ry # を一気に行えるような正規表現ってありますか?
327 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 06:15:06 ] pc12.2ch.net/test/read.cgi/tech/1258320456/85 # 【課題】 # 同じ長さのリストA,Bがある。Aはソート対象のデータ、Bは比較用の値が入っている。 # A,Bの2つの引数をとり、Bの値が昇順になるようにAをソートする関数を定義しなさい。 # 引数のリストは破壊しても良く、ソート結果は戻り値・引数Aを上書きのどちらでも良い。
328 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 06:18:30 ] pc12.2ch.net/test/read.cgi/tech/1260532772/922 # visual studioのwindowsフォームアプリケーション visual C++のプログラミングについて質問です!! # かなり急いでます。 # チェックボックスを5個とボタン1個を使いアンケートみたいなプログラムを作りたいのですができません。 # # 内容としてはチェックの数で表示される答えを違うようにしたいのです。 # 0〜1個つけたら良い # 2〜3個つけたら普通 # 4〜5個つけたら悪い # みたいな感じで最後にボタンを押したら評価がでてくるというものです。 # すべてのプログラムを教えてください!!
329 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 07:04:45 ] >>326 % Prolog '1月から2月までの「・」を「1月」に置換、2月から3月までの「・」を「2月」に置換、 3月から...'(File) :- get_lines(File,Lines), 月表示行まで読み飛ばし(Lines,R,_月), '.を月表示に置換'(Lines,_月,L), ならびを行表示(L). '.を月表示に置換'([],_,[]) :- !. '.を月表示に置換'([A|R1],_月,X) :- sub_atom(A,_,1,_,'月'), split(A,[月],[_月2|_]), '.を月表示に置換'(R1,_月2,X). '.を月表示に置換'([A|R1],_月,[B|R2]) :- sub_atom(A,0,1,_,'.'), concat_atom([_月,A],B), '.を月表示に置換'(R1,_月,R2). 月表示行まで読み飛ばし(Lines,Lines2,_月) :- append(_,[A|Lines2],Lines), sub_atom(A,_,1,_,'月'), split(A,[月],[_月|_]),!.
330 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 07:28:37 ] pc12.2ch.net/test/read.cgi/tech/1248012902/730 # 【 課題 】ime.nu/rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/881.zip # Kadai.javaを以下のステップに沿って改めなさい。 # ファイル名およびクラス名はステップに沿ってKadai1,Kadai2というようにKadai+数字としなさい。 # # Step1. # 「入力」が押されると、テキストフィールドに入力されている文字とチェックボック>ス の状態を読み取って「名前,出席する(or しない),10000円(or 0円)」と、氏名、同窓 会の出欠、参加費をカンマ区切りでコマンドプロンプトに出力する機能を追加しなさい 。 # # Step2. # 「キャンセル」が押されるとテキストフィールドをクリアし、(もしチェックボックスにチェックされていれば)チェックを外す機能を追加しなさい。 # # Step3. # Step1と同じ内容をファイル「出席.txt」に書き込む(追い書き)する機能を追加しなさい。 # # Step4. # 右上の「×」ボタンを押す事でプログラムを終了する機能を追加しなさい。keizo@keiizo98:~/Desktop$
331 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 13:19:56 ] pc12.2ch.net/test/read.cgi/tech/1260532772/934 # [1]授業単元:C言語実習(専門学校:選択授業) # [2]課題: # コマンドライン引数に与えられた英数字からなる文字列を、長さが長いものが先、同じ長さのものどう # しでは辞書に記載される場合に先頭のほうに書かれるものが先に出力されるように出力するCを作る。 # 引数が与えられてない場合は、何も出力しない。
332 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 13:36:52 ] pc12.2ch.net/test/read.cgi/tech/1260532772/942 # [1] 授業単元:プログラミング演習 # [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10378.txt # リスト操作関数を作成する問いが5題ある。なお、ここで扱うリストは、ASCII文字を要素とする、頭を持った連結リスト(「文字リスト」と呼ぶ)である。 # # ●問1.文字リストを作成する関数と印字する関数 # # 与えられた文字列の各文字を要素とする文字リストを作成し返す関数make_clistと、与えられた文字リスト # の内容を印字する関数print_clistを作成せよ。 # # 【問1.については過去ログ等を調べつつ解答を導き出すことができました。コードを最下方に載せます。】 #
333 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 13:38:21 ] pc12.2ch.net/test/read.cgi/tech/1260532772/942 # [1] 授業単元:プログラミング演習 # [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10378.txt # ●問2.リストの内容を比較する関数 # # 与えられた二つのリストに含まれる文字の並びを辞書式順序(※)で比較し、第一のリストの方が小さければ負の # 値、大きければ正の値、等しければ0を返す関数compareを作成せよ。 #
334 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 13:39:58 ] pc12.2ch.net/test/read.cgi/tech/1260532772/942 # [1] 授業単元:プログラミング演習 # [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10378.txt # ●問3.リストの一部を取り除く関数 # # 与えられた文字リストの先頭から見ていき、要素が'<'なら自身と(あれば)直前の要素を、'>'なら自身 # と(あれば)直後の要素を取り除く関数editを作成せよ。 #
335 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 13:41:20 ] pc12.2ch.net/test/read.cgi/tech/1260532772/942 # [1] 授業単元:プログラミング演習 # [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10378.txt # ●問4.リストの一部を別のリストの内容で置き換える関数 # # 引数として三種のリストが与えられると、第一のリスト内に含まれる第二のリストに一致する部分を第三の # リストに置き換える関数replaceを作成せよ。ただし新たにリストを作成するのではなく、与えられたリスト # の変形で実現すること。一度置き換えた部分を再び置き換えの対象としなくてよい。また関数の戻り値として # 置き換えを行った回数を返すこと。
336 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 13:42:37 ] pc12.2ch.net/test/read.cgi/tech/1260532772/942 # [1] 授業単元:プログラミング演習 # [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10378.txt # ●問5.複数回出現する要素からなるリストを返す関数 # # 与えられた文字リスト中で複数回現れる文字を残して得られるリストを作成する関数multipleを作成せよ。 # ただし新たにリストを作成するのではなく、与えられたリストの変形で実現すること。また複数回現れる同種 # の文字は、そのいずれか1つだけを残すこと。
337 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 14:35:07 ] >>327 A=:'chihayafuru';'yothubato';'tomehane' B=:7;9;6 mysort=: /: mysort B 単項演算子として使うと並べ替えるための指標(0オリジン)を返す。 2 0 1 A mysort B 二項演算子として使うと右引数のデータでつくった指標で左引数のデータを並べ替える。 +--------+-----------+---------+ |tomehane|chihayafuru|yothubato| +--------+-----------+---------+
338 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 17:08:52 ] >>312 % Prolog program :- user_parameters(L), L = [S,A|_], atom_to_term(A,N,_), integer(N), sub_atom(S,N,1,_,X), write_formatted('Char %t is "%t"\n',[N,X]), halt.
339 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 20:19:00 ] >>331 --luaで。 優先順位は、長さ>大文字区別無し辞書>バイナリ function f(a,b) if a:len()==b:len() then if a:lower()==b:lower() then return a<b end return a:lower()<b:lower() end return a:len()>b:len() and true or false end t={} for i=1,#arg do table.insert(t,arg[i]) end print("before") print(unpack(t)) table.sort(t,f) print("after") print(unpack(t))
340 名前:デフォルトの名無しさん [2010/01/18(月) 21:58:23 ] ふらっとC#からきました。 宿題ではないんですが、C#でマルコフ連鎖で人工無脳を作りたいのです。 文章を単語に分けたあと(ここまではできてます)、それを配列にいれるんですか? Rubyだとこう書くらしいんだけど、これをC#だとどう書けばいいんでしょう? 分かち書きにはChasenを使っています。 よろしくアドバイスお願いします。 # マルコフ連鎖で要約 t1 = data[0]['head'] t2 = data[0]['middle'] new_text = t1 + t2 while true _a = Array.new data.each do |hash| _a.push hash if hash['head'] == t1 && hash['middle'] == t2 end break if _a.size == 0 num = rand(_a.size) # 乱数で次の文節を決定する new_text = new_text + _a[num]['end'] break if _a[num]['end'] == "EOS" t1 = _a[num]['middle'] t2 = _a[num]['end'] end d.hatena.ne.jp/zariganitosh/20090628/1246186477
341 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 05:20:14 ] pc12.2ch.net/test/read.cgi/tech/1260532772/977 # [1] 授業単元:C言語 # [2] 問題文(含コード&リンク):異なる自然数p,qと、もう一つの自然数dを入力する。 # d以下の自然数kのうちで、k=mp+nqと表すことの出来るもの(m,nは自然数)を小さい順に表示し、 # 最後にその個数を表示するプログラムを作成せよ。入力する数字はp、q、dの順とする # # 実行例 # 3 5 10 # 3 5 6 8 9 10 # 合計で6個あります
342 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 05:28:57 ] pc12.2ch.net/test/read.cgi/tech/1260532772/963 # [1] 授業単元:プログラミング演習 # [2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10384.txt # 括弧をすべて左にくくり直す式変形に加えて,分配法則を使って + を * の 外側へとくくり出す式変形をするプログラムを作ってください. # ファイル exp.c に,+ を * の外側にくくり出す式変形をする 関数 dist_prod_exp() を作ること. # 例えば,算術式 ((x+1)*(y+a)) の+を外にくくり出し,括弧を左にくくり直すことで, 次の式が順に得られればよい. # ((x+1)*(y+a)) # (((x*y)+(1*y))+((x*a)+(1*a))) # ((((x*y)+(1*y))+(x*a))+(1*a)) # # 分配法則を使う順序によっては,結果の式の形が変わる.((A+B)*(C+D)) の形の式は,* の左の式 (A+B) を先に分配すると (((A+B)*C)+((A+B)*D)) # になり,右の式 (C+D) を先に分配すると ((A*(C+D))+(B*(C+D))) になる. 同じ位置で2通りに分配できる場合,この課題では,左の式の分配を優先する. # 2分木の節を格納するためのデータ構造(Tree 型)を,次のように定義する. # # typedef struct _tree { # char node; /* 節のデータ (1文字) */ # struct _tree *left; /* 左の子へのポインタ */ # struct _tree *right; /* 右の子へのポインタ */ # } Tree;
343 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 07:42:54 ] pc12.2ch.net/test/read.cgi/tech/1260532772/961 # [1] 授業単元: プログラミング演習 # [2] 問題文(含コード&リンク): 4行4列のint型の行列を、転置するプログラムを作成し、 # 動作の確認のため、転置前と転置後 の行列の内容を表示するようにせよ。
344 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 07:46:58 ] >>343 % Prolog '4行4列のint型の行列を、転置する'([[A1,A2,A3,A4],[B1,B2,B3,B4],[C1,C2,C3,C4],[D1,D2,D3,D4]],[[A1,B1,C1,D1], A2,B2,C2,D2],[A3,B3,C3,D3],[A4,B4,C4,D4]]).
345 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 07:51:53 ] >>343 % Prolog "["がひとつ抜けた。これが答えといえるかどうか。 '4行4列のint型の行列を、転置する'([[A1,A2,A3,A4],[B1,B2,B3,B4],[C1,C2,C3,C4],[D1,D2,D3,D4]],[[A1,B1,C1,D1],[A2,B2,C2,D2],[A3,B3,C3,D3],[A4,B4,C4,D4]]).
346 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 07:54:00 ] 少なくともint型の検査はできていない。
347 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 10:11:17 ] >>343 使用言語:J a=:i.4 4 a 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ,./a 各行を「,.」で連結すると転置になる 0 4 8 12 1 5 9 13 2 6 10 14 3 7 11 15 |:a 「|:」は組み込みの転置演算子 0 4 8 12 1 5 9 13 2 6 10 14 3 7 11 15
348 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 12:17:19 ] >>341 使用言語:J f=:monad define 'p q d'=.y a=./:~~.,(p*i.d)+/q*i.d b=.}.(d>:a)#a smoutput b smoutput '合計で',(":#b),'個あります' ) f 3 5 10 3 5 6 8 9 10 合計で6個あります
349 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 19:56:12 ] pc12.2ch.net/test/read.cgi/tech/1263824755/14 # [1] 授業単元: プログラミング演習� # [2] 問題文(含コード&リンク): # 終了時、xとB、まらはAとHの内積のどちらかが0のプログラム。 # (xを入力→Hを設定) # AとBはそれぞれHやxの最小多項式の係数となるはず。 # X1=(x1,...,xn)の転置行列; # H=(X1,...,Xt);
350 名前:345 mailto:sage [2010/01/19(火) 23:04:02 ] >>347 プログラムというのは何をするのかを示すことなのではないか?
351 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 23:29:14 ] pc12.2ch.net/test/read.cgi/tech/1263824755/22 # [1] 授業単元: プログラミング # [2] 問題文(含コード&リンク):ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10392.txt # # 練習問題1* # 以下に示すプログラムは、リストを操作するプログラムの一部である。このプログラムに、ジストの指定した位置(末尾以外)にノードを挿入する関数insert_nodeと、 # リストの指定した位置のノードを削除する関数delete_nodeを追加し、プログラムを完成させよ。 # insert_nodeは引致として挿入位置の情報リストの何番目のノードかという情報)とデータ(文字列)を受け取るも # のとする。また、挿入位置に元々あったノードは、新しく挿入するノードの次の要素となるものとする。 # リストの先頭ノードとして挿入される場合にも正しく動くようにすること。 # delete_nodeは、引数として削除位置の情報を受け取る。リストの先頭のノード、最後のノード、途中のノードが削除されたときにそれぞれ正しく動くようにすること。 # また、ノードが1個しかない場合にも正しく動<ようにすること。
352 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 07:55:26 ] >>350 この問いかけはどう受け取ればいいのでしょうか。 「あなたの書き込みは組み込み機能の紹介で プログラムじゃないよ」ということですか?
353 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 08:52:50 ] >>352 半分は自問。 pc12.2ch.net/test/read.cgi/tech/1263289291/ の第一夜を書いたのは 私です。このスレの最後に書き込まれた >>第二夜?は第一夜とは正反対の主張の方と考えてよいのでしょうか? を読んで書いてみたのが>>345 です。>>347 は説明的で冗長な>>345 の対極にあるかなと思い、 さらに>>350 で問いかけました。 私は、オペレータを知らないとそのプログラムの意味がわからない(APL的)ことは、 関数型言語の欠点ではないかと思っています。
354 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 09:42:40 ] 補足。説明を論理式で書き表すことができるならば、その論理式が すなわちプログラムである。というのがPrologの"売り"なんですね。 上の論理式の部分を数式に置き換えて、はたして本当にその数式が "説明"になっているかということを問題にしているのです。常に 完全に理解している事が前提になっているのではないか、と。
355 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 10:20:42 ] >>354 プログラムを使うためのもの見るか、理解するためのものと見るかという違いかな。 このスレの魅力は議論を排除してプログラムコードが並んでいるところだから、 ここではあまりやって欲しくはないが、興味深いテーマではあるね。
356 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 12:39:24 ] >>353 >私は、オペレータを知らないとそのプログラムの意味がわからない(APL的)ことは、 >関数型言語の欠点ではないかと思っています。 知らないとわからないのは、あたりまえです。 手続き型言語をひとつ覚えると他の手続き型言語のコードがなんとなくわかる 気がするのは前提とする知識がほとんど同じだからじゃないでしょうか。
357 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 13:32:59 ] pc12.2ch.net/test/read.cgi/tech/1260922392/22 # 次のゲームを考える # ・二人のプレイヤーA、Bにそれぞれ持ち点m点を与える # ・コイントスをして表が出たらAからBへ、裏が出たらBからAへ、1点渡す # ・コイントスをくりかえして先に持ち点がなくなったほうが負け # # 一個の自然数mをキーボード入力から読み取ってこのゲームをたとえば1000ゲーム繰り返して、 # 平均何回のコイントスで勝負がつくか、シュミレーションして求めるプログラムを作成してください。 # ただしコイントスを10000回繰り返しても勝負がつかない場合があるかもしれないので、それは回数オーバーとして別にカウントしてください。 #
358 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 13:35:56 ] pc12.2ch.net/test/read.cgi/tech/1200175247/797 # 質問です! # 文字列を受け取ってスペースと記号を削除した文字列を返すメソッドを作りたいんですが # どうすればいいでしょうか? # ちなみに条件はgsubメソッドをつかうこと # 記号は全角も半角も含む(","とか"。"とか"?"とか"?"とか) # どなたかお願いします #
359 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 16:49:25 ] >>358 % Prolog 文字列を受け取ってスペースと記号を削除した文字列を返す(_文字列,_スペースと記号を削除された文字列) :- atom_codes(_文字列,Codes), 文字コードならびからスペースと記号を削除する(Codes,Codes2), atom_codes(_スペースと記号を削除された文字列,Codes2). 文字コードならびからスペースと記号を削除する([],[]) :- !. 文字コードならびからスペースと記号を削除する([A|R1],X) :- 全角記号範囲(_コード下限,_コード上限), A >= _コード下限,A =< _コード上限, 文字コードならびからスペースと記号を削除する(R1,X),!. 文字コードならびからスペースと記号を削除する([A|R1],X) :- 半角記号範囲(_コード下限,_コード上限), A >= _コード下限,A =< _コード上限, 文字コードならびからスペースと記号を削除する(R1,X),!. 文字コードならびからスペースと記号を削除する([A|R1],[A|R2]) :- 文字コードならびからスペースと記号を削除する(R1,R2),!. 全角記号範囲(41376,41726). 半角記号範囲(32,47). 半角記号範囲(58,64). 半角記号範囲(91,96).
360 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 17:45:16 ] >>358 使用言語:J f=:-.&(ucp&',.?、。?') a=:ucp'a,い、b?ろ?c.は。' f a aいbろcは
361 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 18:02:12 ] >>358 使用言語:J NB.f=:-.&(ucp&',.?、。?')間違えたので、訂正します。ucpの後ろの&はいりませんでした。 f=:-.&(ucp',.?、。?') a=:ucp'a,い、b?ろ?c.は。' f a aいbろcは
362 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 18:19:02 ] pc12.2ch.net/test/read.cgi/tech/1263824755/31 # [1] プログラミング実習 # [2] ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10397.txt # # 以下に示すプログラムは、リストを操作するプログラムの一部である。この # プログラムに、リストの指定した位置(末尾以外)にノードを挿入する関数insert_nodeと、 # リストの指定した位置のノードを削除する関数delete_nodeを追加し、プログラムを完成させよ。 # insert_nodeは引数として挿入位置の情報(リストの何番目かという情報)とデータ(文字列)を受け取るものとする。 # また、挿入位置にもともとあったノードは、新しく挿入するノードの次の要素となるものとする。 # リストの先頭ノードとして挿入される場合も正しく動作するようにすること。 # delete_nodeは、引数として削除位置の情報を受け取る。リストの先頭のノード、 # 最後のノード、途中のノードが削除されたときにそれぞれ正しく動くようにすること。 # また、ノードが一個しかない場合も正しく動くようにすること。
363 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 18:21:50 ] pc12.2ch.net/test/read.cgi/tech/1248012902/755 # 【 課題 】インターネット書店を作成せよ # <条件> # ・画面サイズ→VGAとする # ・書籍は5ジャンル150冊 # ・1回の注文で5種類まで書籍を注文可能 # ・書籍の値段は20円単位とし、書籍の値段は自由 # ・書籍価格の合計金額の2%のポイントが与えられる。(ただし、ポイントは第一ジャンルは2倍、第二ジャンルは3倍になる) # ・注文終了後、注文確認画面で注文と支払い代金、獲得ポイントが確認できる。(支払い代金とは、注文図書の合計金額と消費税の和) # ・貯まったポイントを併用して支払いが可能(ポイントの価値は、1ポイント1円) # ・書籍の発送は電子メールの添付ファイルで行う(発送は出来なくてよい) # ・ソフトキーボードのみ使用可能 # # 【 補足 】実用的な画面インタフェースでは取消機能が必要であるが、ここでは取消機能については # 考えなくてよい。 # また、ユーザーは正しい操作を行うものと仮定して良い。
364 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 18:40:51 ] >>362 は >>351 と同じ問題でした。
365 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 19:14:59 ] >>357 % Prolog (その一) 一個の自然数mをキーボード入力から読み取ってこのゲームをたとえば1000ゲーム 繰り返して、平均何回のコイントスで勝負がつくか、シュミレーションして求める(_平 均コイントス数) :- 催促付き整数入力('A,Bが持つコイン数を入力してください :',M), このゲームをたとえば1000ゲーム繰り返して、平均何回のコイントスで勝負が つくか(1,M,_無効ゲーム数,_平均コイントス数),!. このゲームをたとえば1000ゲーム繰り返して、平均何回のコイントスで勝負がつく か(M,_無効ゲーム数,_平均コイントス数) :- このゲーム(1,M,_有効コイントス総数,_無効ゲーム数), \+(_無効ゲーム数 = 1000), _平均コイントス数 is _有効コイントス総数 / (1000 - _無効ゲーム数). このゲーム(N,_,0,0) :- N > 1000,!. このゲーム(N,M,_コイントス総数,_無効ゲーム数) :- コイントスシミュレーション(1,M,M,_トス数), N2 is N + 1, このゲーム(N,_,_コイントス総数の二,_無効ゲーム数), _コイントス総数 is _コイントス総数の二 + _トス数,!. このゲーム(N,M,_コイントス総数,_無効ゲーム数) :- N2 is N + 1, このゲーム(N,M,_コイントス総数,_無効ゲーム数の一), _無効ゲーム数 is _無効ゲーム数の一 + 1,!.
366 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 19:18:39 ] >>357 改行位置を間違えたので書き直し。 % Prolog (その一) 一個の自然数mをキーボード入力から読み取ってこのゲームをたとえば1000ゲームを繰り返して、平均何回のコイントスで勝負がつくか、シュミレーションして求める(_平均コイントス数) :- 催促付き整数入力('A,Bが持つコイン数を入力してください :',M), このゲームをたとえば1000ゲーム繰り返して、平均何回のコイントスで勝負がつくか(1,M,_無効ゲーム数,_平均コイントス数),!. このゲームをたとえば1000ゲーム繰り返して、平均何回のコイントスで勝負がつくか(M,_無効ゲーム数,_平均コイントス数) :- このゲーム(1,M,_有効コイントス総数,_無効ゲーム数), \+(_無効ゲーム数 = 1000), _平均コイントス数 is _有効コイントス総数 / (1000 - _無効ゲーム数). このゲーム(N,_,0,0) :- N > 1000,!. このゲーム(N,M,_コイントス総数,_無効ゲーム数) :- コイントスシミュレーション(1,M,M,_トス数), N2 is N + 1, このゲーム(N,_,_コイントス総数の二,_無効ゲーム数), _コイントス総数 is _コイントス総数の二 + _トス数,!. このゲーム(N,M,_コイントス総数,_無効ゲーム数) :- N2 is N + 1, このゲーム(N,M,_コイントス総数,_無効ゲーム数の一), _無効ゲーム数 is _無効ゲーム数の一 + 1,!.
367 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 19:20:20 ] >>357 % Prolog (その二) コイントスシミュレーション(N,_,_,_) :- N > 10000,!,fail. コイントスシミュレーション(N,A,B,N) :- コイントスをくりかえして先に持ち点がなくなったほうが負け(A,B,_),!. コイントスシミュレーション(N,A1,B1,X) :- コイントス(_表か裏か), 表が出たらAからBへ、裏が出たらBからAへ、1点渡す(表,A1,B1,A2,B2), N2 is N + 1, コイントスシミュレーション(N,A2,B2,X),!. 表が出たらAからBへ、裏が出たらBからAへ、1点渡す(表,A1,B1,A2,B2) :- A2 is A1 -1,B2 is B1 + 1,!. 表が出たらAからBへ、裏が出たらBからAへ、1点渡す(裏,A1,B1,A2,B2) :- B2 is B1 -1,A2 is A1 + 1,!. コイントスをくりかえして先に持ち点がなくなったほうが負け(0,_,'Aの負け'). コイントスをくりかえして先に持ち点がなくなったほうが負け(_,0,'Bの負け'). コイントス(_表か裏か) :- N is (random mod 2) + 1,list_nth(N,[表,裏],_表か裏か).
368 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 19:59:07 ] >>351 % Prolog 'リストの指定した位置(末尾以外)にノードを挿入する'(_指定した位置,Node,_リスト,_挿入されたリスト) :- insert_node(_指定した位置,Node,_リスト,_挿入されたリスト). insert_node(_,_,[],_) :- !,fail. insert_node(0,Node,_リスト,[Node|_リスト]) :- !. insert_node(_指定した位置,Node,[A|R1],[A|R2]) :- _指定した位置の一 is _指定した位置 - 1, insert_node(_指定した位置の一,Node,R1,R2). リストの指定した位置のノードを削除する(_指定した位置,_リスト,_指定した位置のノードが削除されたリスト) :- delete_node(_指定した位置,_リスト,_指定した位置のノードが削除されたリスト). delete_node(1,[_|R],R) :- !. delete_node(_指定した位置,[A|R1],[A|R2]) :- _指定した位置の一 is _指定した位置 - 1, delete_node(_指定した位置の一,R1,R2).
369 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 20:43:07 ] >>332 % Prolog 与えられた文字列の各文字を要素とする文字リストを作成し返す(_文字列,_各文字を要素とする文字リスト) :- make_clist(_文字列,_各文字を要素とする文字リスト). make_clist(_文字列,_各文字を要素とする文字リスト) :- sub_atom(_文字列,_,_文字列の長さ,_,_文字列), make_clist(0,_文字列の長さ,_文字列,_各文字を要素とする文字リスト). make_clist(N,N,_文字列,[]) :- !. make_clist(N,_文字列の長さ,_文字列,[_文字|R]) :- sub_atom(_文字列,N,1,_,_文字), N2 is N + 1, make_clist(N2,_文字列の長さ,_文字列,R). 与えられた文字列の各文字を要素とする文字リストの内容を印字する(_文字リスト) :- print_clist(_文字リスト). print_clist([]). print_clist([_文字|R]) :- put_char(_文字), print_clist(R).
370 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 22:14:25 ] >>333 % Prolog '与えられた二つのリストに含まれる文字の並びを辞書式順序(※)で比較し、第一のリストの方が小さければ負の値、大きければ正の値、等しければ0を返す'(_文字リスト_1,_文字リスト_2,_返り値) :- compare(_文字リスト_1,_文字リスト_2,_返り値). compare([],[],0). compare([],[_|_],-1). compare([_|_],[],1). compare([A|_],[B|_],-1) :- char_code(A,CodeA),CodeA >= 65,CodeA =< 90, char_code(B,CodeB),CodeB >= 97,CodeB =< 122, CodeC is CodeB - 32, CodeC >= CodeA,!. compare([A|_],[B|_],1) :- char_code(A,CodeA),CodeA >= 97,CodeA =< 122, char_code(B,CodeB),CodeB >= 65,CodeB =< 90, CodeC is CodeA - 32, CodeC =< CodeA,!. compare([A|_],[B|_],-1) :- A @< B,!. compare([A|_],[B|_],1) :- A @> B,!. compare([A|R1],[A|R2],X) :- compare(R1,R2,X).
371 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 22:36:28 ] >>334 % Prolog '与えられた文字リストの先頭から見ていき、要素が"<"なら自身と(あれば)直前の要素を、">"なら自身と(あれば)直後の要素を取り除く'(_文字リスト,_編集された文字リスト) :- edit(_文字リスト,_編集された文字リスト). edit([],[]). edit([_,'<'|R1],R2) :- edit(R1,R2),!. edit(['>',_|R1],R2) :- edit(R1,R2),!. edit([A|R1],[A|R2]) :- edit(R1,R2).
372 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 22:45:36 ] >>335 % Prolog の場合与えられたリストの変形(破壊代入)は使えない。 引数として三種のリストが与えられると、第一のリスト内に含まれる第二のリストに一致する部分を第三のリストに置き換える(_リスト_1,_リスト2,_リスト_3,L) :- replace(_リスト_1,_リスト_2,_リスト_3,L). replace(L1,L2,L3,L) :- append(L0,L2,L4,L1), append(L0,L3,L4,L).
373 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 22:58:22 ] >>336 % Prolog リストの変形では得られない点は同じ。 与えられた文字リスト中で複数回現れる文字を残して得られるリストを作成する(_文字リスト,_複数回現れる文字を残して得られるリスト) :- multiple(_文字リスト,_複数回現れる文字を残して得られるリスト). multiple(_文字リスト,_複数回現れる文字を残して得られるリスト) :- findall(_文字,(append(L1,[_文字|L2],_文字リスト),\+(member(_文字,L1)),member(_文字,L2)),_複数回現れる文字を残して得られるリスト).
374 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 23:01:33 ] pc12.2ch.net/test/read.cgi/tech/1263824755/33 # [1] プログラミング基礎実習 # [2] 文字列strを逆順に格納する関数("SEC"を受け取ったら"CES"とする) # void rev_string(char str[]){ /*…*/ } # を作成せよ。
375 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 06:11:46 ] >>374 % Prolog 全然、説明的でない例 '文字列strを逆順に格納する'(_Str,Rstr) :- rev_string(Str,Rstr). rev_string(Str,Rstr) :- sub_atom(Str,_,Len,_,Str), findall(Char,(for(0,N,Len-1),sub_atom(Str,_,1,N,Char)),L), concat_atom(L,Rstr).
376 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 06:17:12 ] >>374 % Prolog ふつうは '文字列strを逆順に格納する'(_Str,Rstr) :- rev_string(Str,Rstr). rev_string(Str,Rstr) :- atom_chars(Str,Chars), rev_string(Chars,[],RChars), atom_chars(Rstr,RChars). rev_string([],X,X). rev_string([A|R],Y,X) :- rev_string(R,[A|Y],X).
377 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 06:25:13 ] pc12.2ch.net/test/read.cgi/tech/1263824755/38 # 長くなったのでうpロダお借りしました。 # # 問題1 # ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10399.txt # コピーさせていただきました nojiriko.asia/data/10399.txt
378 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 06:28:56 ] pc12.2ch.net/test/read.cgi/tech/1263824755/38 # [1] 授業単元:応用プログラミング # [2] 問題文(含コード&リンク): # 直方体のデータが格納されたファイルを取り扱うプログラムを実装したい。 # プログラムリスト中に必要な関数を実装し、プログラムを完成させよ。尚、プログラムは以下の前提条件(1)−(4)を満たすよう作成せよ。 # (1)新たに大域変数やクラス、クラス内のメンバ変数を宣言してはならない。 #(2)main関数を含む既存の関数、クラス内のメンバ変数は一切変更してはならない。 #(3)直方体のデータが一行毎に、直方体の名前、幅、奥行き、高さ、の順に、スペース区切りで格納されているファイルを読み込める。 #(4)最大20個分のデータを読み込める。 #(5)初めに読み込むファイル名を入力した後、読み込んだデータ数を表示する。 #(6)(5)の表示後、以下に示す操作が繰り返し実行可能であること。 # 操作方法と出力の詳細については、実行例を参考にすること。 # (ア)データを読み込んだ順に表示する。 # (イ)体積、もしくは表面積の大きい順に表示する。 # (ウ)立方体、もしくは正四角柱のみを表示する。 # (エ)直方体を1個指定し、3辺の長さ(幅、奥行き、高さ)を指定した倍率だけ伸縮する。
379 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 07:01:07 ] 昨日から悩んでいること。出題が # 与えられた文字列の各文字を要素とする文字リストを作成し返す関数make_clistと、与えられた文字リスト # の内容を印字する関数print_clistを作成せよ。 の場合、導入述語名は '与えられた文字列の各文字を要素とする文字リストを作成し返す関数make_clistと、与えられた文字リストの内容を印字する関数print_clistを作成せよ'(_文字リスト_1,_文字リスト_2,_返り値) :- make_list(_文字リスト_1,_文字リスト_2,_返り値). であるべきか、あるいは、>>370 のように、 '与えられた二つのリストに含まれる文字の並びを辞書式順序(※)で比較し、第一のリストの方が小さければ負の値、大きければ正の値、等しければ0を返す'(_文字リスト_1,_文字リスト_2,_返り値) :- compare(_文字リスト_1,_文字リスト_2,_返り値). とした方がよいか・・。 前の方の定義だと引数を持っていることが不自然かなと思い採用しなかった。
380 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 13:02:50 ] >>379 二番目の定義が次の問題になってしまった。結果として意味不明。 make_clistがmake_listになってるところもあるし。>>379 はなかったことにしてください。
381 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 18:38:58 ] >>341 % Prolog '異なる自然数p,qと、もう一つの自然数dを入力する。d以下の自然数kのうちで、k=mp+nqと表すことの出来るもの(m,nは自然数)を小さい順に表示し、最後にその個数を表示する' :- '異なる自然数p,qと、もう一つの自然数dを入力する'(_p,_q,_d), findall(K,'d以下の自然数kのうちで、k=mp+nqと表すことの出来るもの(m,nは自然数)を小さい順に集め'(_p,_q,_d,L), concat_atom(L,' ',S), write_formatted('%t\n',[S]), length(L,_その個数), write_formatted('合計で%t個あります\n',[_その個数]),!. '異なる自然数p,qと、もう一つの自然数dを入力する'(_p,_q,_d) :- get_line(Line), split(Line,[' '],[_p,_q,_d]),!. 'd以下の自然数kのうちで、k=mp+nqと表すことの出来るもの(m,nは自然数)を小さい順に集め'(_p,_q,_d,_kならび) :- findall(N,for(0,N,10),L1), findall(_k,(for(0,_k,_d),順列(L1,2,[_m,_n]),'d以下の自然数kのうちで、k=mp+nqと表すことの出来るもの'(_p,_q,_d,_m,_n,_k)),_kならび),!. 'd以下の自然数kのうちで、k=mp+nqと表すことの出来るもの'(_p,_q,_d,_m,_n,_k) :- _k is _p * _m + _q * _n, _k =< _d,!.
382 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 20:06:16 ] >>381 訂正 % Prolog '異なる自然数p,qと、もう一つの自然数dを入力する。d以下の自然数kのうちで、k=mp+nqと表すことの出来るもの(m,nは自然数)を小さい順に表示し、最後にその個数を表示する' :- '異なる自然数p,qと、もう一つの自然数dを入力する'(_p,_q,_d), 'd以下の自然数kのうちで、k=mp+nqと表すことの出来るもの(m,nは自然数)を小さい順に集め'(_p,_q,_d,L), '表示し'(L), 最後にその個数を表示する(L),!. 表示し(L) :- concat_atom(L,' ',S), write_formatted('%t\n',[S]),!. 最後にその個数を表示する(L) :- length(L,_その個数), write_formatted('合計で%t個あります\n',[_その個数]),!. '異なる自然数p,qと、もう一つの自然数dを入力する'(_p,_q,_d) :- get_line(Line), split(Line,[' '],[_p,_q,_d]),!. 'd以下の自然数kのうちで、k=mp+nqと表すことの出来るもの(m,nは自然数)を小さい順に集め'(_p,_q,_d,_kならび) :- findall(N,for(0,N,10),L1), findall(_k,(for(0,_k,_d),順列(L1,2,[_m,_n]),'d以下の自然数kのうちで、k=mp+nqと表すことの出来るもの'(_p,_q,_d,_m,_n,_k)),_kならび),!. 'd以下の自然数kのうちで、k=mp+nqと表すことの出来るもの'(_p,_q,_d,_m,_n,_k) :- _k is _p * _m + _q * _n, _k =< _d,!.
383 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 20:10:32 ] pc12.2ch.net/test/read.cgi/tech/1248012902/771 # 【 課題 】 # サーバとクライアントでの間で文字列を送り合うプログラムをつくれ。 # ただし、以下の条件を満たすようにすること。 # アドレス、ポート、名前、文字列はキーボード入力し、お互いに自由に指定できるようにする。 # クライアントで quit が入力された場合、クライアントは接続を切りプログラムを終了し、 # サーバは接続が切られたら、次のクライアントの接続を待つ # サーバで quit が入力された場合、サーバは接続を切り、次のクライアントの接続を待ち、 # クライアントは接続が切られたらプログラムを終了する # エンターキーのみが入力された場合は、文字列を送らずもう一度文字列を入力させて、 # その文字列を送るようにする。
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とする。
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)と平面の四隅の座標は入力する) # 平面を通過していても平面の四隅の中に交点がない場合は通過していないものとする
547 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 13:30:35 ] pc12.2ch.net/test/read.cgi/tech/1263824755/362 # ../test/read.cgi/tech/1263824755/361 # ≪問題と条件≫ # 第1引数に指定したファイルからバイナリーモードで1バイトずつファイルを読み込み、 # ファイルの内容を16進数で示したものを第2引数に指定したファイルに書き込むプログラムを作成せよ。ただし、16バイトごとに改行を入れること。 # (実行) # >free1.exe test.txt test2.txt # # でしょ?
548 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 13:35:45 ] >>545 >>483 使用言語:J 複数の問題だと勘違いしていたのでやり直しました。 read=: 1!:1 write=: 1!:2 f=: monad define COM=. 30?100 MAN=. y Work=. 100#0 COM=. I.1(COM)}Work MAN=. I.1(MAN)}Work count=. +/MAN e. COM data=. ,((":COM),(":MAN),:":count),.LF data write<'result.out' ) f 5 10 77 85 99 43 read<'result.out' 4 9 12 14 16 20 21 22 23 26 30 31 34 36 37 40 60 61 62 63 65 67 70 77 82 84 92 93 98 99 5 10 43 77 85 99 2
549 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 13:54:12 ] >>539 % Prolog ならびをずらして加算(L1,L2,L) :- append(L1,[0],L3), append([0],L2,L4), 行列の転置([L3,L4],L5), findsum(U,member(U,L5),L).
550 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 13:55:30 ] >>546 は >>536 に既出でした。>>536 の方を使ってください。
551 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 14:35:38 ] >>539 使用言語:R > f <- function(a,b) c(a,0)+c(0,b) > f(c(1,2,3),c(7,8,9)) [1] 1 9 11 9
552 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 14:37:21 ] >>539 使用言語:maxima (%i3) f(a,b):=endcons(0,a)+cons(0,b); (%o3) f(a, b) := endcons(0, a) + cons(0, b) (%i4) f([1,2,3],[7,8,9]); (%o4) [1, 9, 11, 9]
553 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 14:54:28 ] >>539 使用言語:Scilab -->deff('r=f(a,b)','r=[a,0]+[0,b]') -->f(1:3,7:9) ans = 1. 9. 11. 9.
554 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 15:54:09 ] >>547 % Prolog program :- user_parameters([FileIn,FileOut]), open(FileIn,read,Input,[type(binary)]), open(FileOut,write,Output), get_byte(Input,C), free1(0,Input,Output,C), close(Output), close(Input). free1(_,_,_,-1) :- !. free1(16,Input,Output,C) :- write(Output,'\n'), free1(0,Input,Output,C),!. free1(M,Input,Output,C) :- free1(M,Input,Output,C) :- N進数(16,C,A), write(Output,A), get_byte(Input,C2), M2 is M + 1, free1(M2,Input,Output,C2). % N進数/3の定義は nojiriko.asia/prolog/j68_493.html 参照
555 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 16:01:21 ] pc12.2ch.net/test/read.cgi/tech/1263824755/406 # [1] 授業単元:プログラミング応用演習 # [2] 問題文(含コード&リンク): mikilab.doshisha.ac.jp/dia/research/report/2008/1118/002/report20081118002.html # [5] その他の制限: ライブラリは使わず。問題文のリンク先のプログラム(DIRECT)を組む。 # よろしくお願いします。できれば解説を付けてくださると助かります。 [2]のサイトをコピーすることは困難でした。直接参照してください。
556 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 17:07:57 ] >>537 % Prolog (その一) % consult/1,reconsult/1,assertz/1,retract/1,clause/2,listing/1 を最終的に使用します。 % 実務ではもっとずっと丁寧にチェックしながら進みます。ここでは簡単に 住所の登録 :- 名字は(_名字), 名前は(_名前), 郵便番号は(_郵便番号), 住所は(_住所), 電話番号は(_電話番号), メールアドレスは(_メールアドレス), 住所の登録((_名字,_名前,_郵便番号,_住所,_電話番号,_メールアドレス),!. 住所の登録(_名字,_名前,_郵便番号,_住所,_電話番号,_メールアドレス) :- \+(住所録(_名字,_名前,_郵便番号_1,_住所_1,_電話番号_1,_メールアドレス_1)), assertz(住所録(_名字,_名前,_郵便番号,_住所,_電話番号,_メールアドレス)), write('登録を完了しました\n'),!. 住所の登録(_名字,_名前,_郵便番号,_住所,_電話番号,_メールアドレス) :- 住所録(_名字,_名前,_郵便番号_1,_住所_1,_電話番号_1,_メールアドレス_1), この氏名は既に登録がありますが(_名字,_名前,_郵便番号_1,_住所_1,_電話番号_1,_メールアドレス_1,_郵便番号,_住所,_電話番号,_メールアドレス),!. この氏名は既に登録がありますが(_名字,_名前,_郵便番号_1,_住所_1,_電話番号_1,_メールアドレス_1,_郵便番号,_住所,_電話番号,_メールアドレス) :- write_formatted('%t %tという氏名は以下の通り既に登録がありますが\n%t %t %t%t %t %t',[_名字,_名前,_名字,_名前,_郵便番号_1,_住所_1,_電話番号_1,_メールアドレス_1]), write('別人と考えて登録してよいでしょうか Y or N でお答えください : '), get_line(Line), この氏名は既に登録がありますが(Line,_名字,_名前,_郵便番号,_住所,_電話番号,_メールアドレス).
557 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 20:23:21 ] pc12.2ch.net/test/read.cgi/tech/1263824755/409 # [1] C言語演習 # [2] # int x[10]={-1,2,-3,4,-5,6,-7,8,-9,10} # int y[10]={-5,-4,-3,-2,-1,1,2,3,4,5} # が与えられている。 # 値x[0]*y[0]+2*x[1]*y[1]+3*x[2]*y[2]+4*x[3]*y[3]+5*x[4]*y[4]+6*x[5]*y[5] # が最大/最小になるようにx,yの各要素を並べ替えたものを出力するプログラム
558 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 21:33:56 ] >>557 の訂正として出されましたが、それぞれ独立の問題としましょう。 pc12.2ch.net/test/read.cgi/tech/1263824755/409 # [1] C言語演習 # [2] # int x[10]={-1,2,-3,4,-5,6,-7,8,-9,10} # int y[10]={-5,-4,-3,-2,-1,1,2,3,4,5} # が与えられている。 # 値x[0]*y[0]-2*x[1]*y[1]+3*x[2]*y[2]-4*x[3]*y[3]+5*x[4]*y[4]-6*x[5]*y[5]+7*x[6]*y[6]-8*x[7}*y[7]+9*x[8]}*y[8]-10*x[9]*x[9] # が最大/最小になるようにx,yの各要素を並べ替えたものを出力するプログラム
559 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 21:42:32 ] pc12.2ch.net/test/read.cgi/tech/1263824755/418 # [1] C言語プログラミング演習(大学専門課程選択教科期末課題) # [2]ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10483 .txt # 以下のSQL文で定義されるテーブルに対する # SQL操作をテーブルに対応する適当な構造体配列 # struct_SEISEKIHYOUを定義することにより # 1関数として実装せよ。 # 関数は # list(struct_SEISEKIHYOU* table,int N); # とする。処理効率を十分に考えること。 # # テーブル定義: # CREATE TABLE SEISEKIHYOU ( # TANNINN VARCHAR, //担任教師 # NAME VARCHAR,//生徒名 # KOKUGO INTEGER,//国語得点 # SUUGAKU INTEGER//数学得点 # RIKA INTEGER,//理科得点 # SYAKAI INTEGER,//社会得点 # EIGO INTEGER,//英語得点 # ) #
560 名前:デフォルトの名無しさん mailto:sage [2010/02/01(月) 21:44:36 ] >>559 問題のつづきです。 # # SQL操作 SELECTでリストアップされる項目リスト # をコンソール出力させる。 # # SELECT X.TANNINN,X.NAME,X.SUUGAKU,X.KOKUGO # FROM SEISEKIHYOU AS X # WHERE # SUUGAKU>=KOKUGO # AND # SUUGAKU>=RIKA # AND # SUUGAKU>=SYAKAI # AND # SUUGAKU>=EIGO # AND # (KOKUGO+SUUGAKU+RIKA+SYAKAI+EIGO)/5.0 # >=(SELECT (AVG(KOKUGO)+AVG(SUUGAKU)+AVG(RIKA) # +AVG(SYAKAI)+AVG(EIGO))/5.0 FROM SEISEKIHYOU # GROUP BY TANNINN) HAVING COUNT(*)>= # (SELECT COUNT(*) FROM SEISEKHYOU GROUP BY # TANNINN HAVING TANNINN=X.TANNNIN) # # ORDER BY X.TANNIN,X.NAME,X.SUUGAKU;
561 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 03:12:54 ] pc12.2ch.net/test/read.cgi/tech/1263824755/420 # [1] 授業単元:プログラミング実践 # [2] 問題文 # アフィン変換のプログラムを作成し、下の図の真ん中を座標の中心にして90°回転した結果を出力せよ。 # (図)affin.txt # 00000 # 00000 # 11111 # 00000 # 00000 #
562 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 04:30:07 ] >>538 % Prolog (その一) program :- user_parameters([_ファイル名]), 'EOFがコントロールZであるファイルの読み込み'(Lines), tell(_ファイル名), write_formatted('%10s %4s\n',[名前,年齢]), '名前・年齢の行表示'(Lines), told. 'EOFがコントロールZであるファイルの読み込み'(Lines) :- get_code(Code), 'EOFがコントロールZであるファイルの読み込み'(Code,Lines),!. 'EOFがコントロールZであるファイルの読み込み'(-1,[]) :- !. 'EOFがコントロールZであるファイルの読み込み'(Code,[[_名前,_年齢]|R]) :- 'EOFがコントロールZであるファイルの行読み込み'(Code,RCode,Codes), atom_codes(Line,Codes), split(Line,[' ',','],[_名前,_年齢]), 'EOFがコントロールZであるファイルの読み込み'(RCode,R). 'EOFがコントロールZであるファイルの行読み込み'(-1,-1,[]) :- !. 'EOFがコントロールZであるファイルの行読み込み'(26,-1,[]) :- !. 'EOFがコントロールZであるファイルの行読み込み'(10,Code2,[]) :- ひとつ先読みが同時に終了ステータスにもなる(Code2),!. 'EOFがコントロールZであるファイルの行読み込み'(Code1,RCode,[Code1|R]) :- get_code(Code2), 'EOFがコントロールZであるファイルの行読み込み'(Code2,RCode,R).
563 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 04:31:08 ] >>538 % Prolog (その二) ひとつ先読みが同時に終了ステータスにもなる(Code2) :- get_code(Code2),!. 名前・年齢の行表示([]) :- !. 名前・年齢の行表示([[_名前,_年齢]|R]) :- write_formatted('%12s%t\n',[_名前,_年齢]), 名前・年齢の行表示(R).
564 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 04:32:07 ] > EOFがコントロールZであるファイルの読み込み w
565 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 04:36:16 ] >>564 やれやれww
566 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 04:53:35 ] pc12.2ch.net/test/read.cgi/tech/1262163854/556 # こんばんは.失礼します. # 現在,次のような課題に取り組んでいます. # もしよろしければこの難問をハックしていただけないでしょうか. # (できればCで・・・) # # N個の要素があり,その,すべての組み合わせ(2^N組)に対して, # それぞれに値が決まっているものとします. # そして,ある組み合わせの値は,その組み合わせの中の部分集合の # どんな和よりも大きいです. # # また0個の集合では値は0とします. # # こうした場合に,全ての組み合わせの値を以上のルールに則ったまま # 乱数を用いて決定したいと考えています. # # 具体的には # 要素が一つの組み合わせは乱数.たとえばAのみの集合の場合 v(A)=random # 要素が2つでは,v(A,B)=v(A)+v(B) + random # 3つでは,v(A,B,C) = max(v(A,B)+v(C), v(B,C)+v(A), v(C,A)+v(B)) + random # となります. # # この方式で,全ての組み合わせに値を当てはめることを考えているのですが # コードに落とし込むことが出来ません.
567 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 04:56:05 ] >>566 つづき # 今のところ,各組み合わせを以下のような二進数で表そうと考えています.(N=3の場 合) # 各行の一列目が1はAがその組み合わせにいることを意味し, # 二列目はB,三列目はCを表しています. # # ABC V # 000 0 # 001 rc # 010 rb # 011 ? # 100 ra # 101 ? # 110 ? # 111 ? #
568 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 08:08:22 ] >>495 使用言語:J f=: monad define l=.(#y)-2 t=.(l,l)$ ucp' ' g=.}.}:y y,(|:g),t,|.g),|.y ) f ucp'今日は、晴れです。' 今日は、晴れです。 日 す は で 、 れ 晴 晴 れ 、 で は す 日 。すでれ晴、は日今
569 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 09:37:53 ] >>559 % Prolog 'SQL操作に対応する述語定義'(X) :- findall([TANNINN,NAME,SUGAKU,KOKUGO], ( findall(TANNINN,'SEISEKIHYOU'(TANNINN,_,_,_,_,_,_),L1),sort(L1,L2), 'SEISEKIHYOU'(TANNINN,NAME,KOKUGO,SUUGAKU,RIKA,SYAKAI,EIGO), SUUGAKU>=KOKUGO,SUUGAKU >= RIKA,SUUGAKU>=SYAKAI,SUUGAKU>=EIGO, U1 is (KOKUGO+SUUGAKU+RIKA+SYAKAI+EIGO)/5.0, findall(AVGs,(member(TANNINN2,L2),findavg([KOKUGO2,SUUGAKU2,RIKA2,SYAKAI2,EIGO2],'SEISEKIHYOU'(TANNINN2,NAME2,KOKUGO2,SUUGAKU2,RIKA2,SYAKAI2,EIGO2),AVGs)),L3), sum(L3,SUM1), U2 is SUM1 / 5.0, U1 >= U2, findavg(KOKUGO3,('SEISEKIHYOU'(TANNINN,_,KOKUGO3,_,_,_,_),KOKUGOAVG), KOKUGO > AVGKOKUGO) ),L4), sort(L4,L5), member(X,L5).
570 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 11:14:43 ] >>496 使用言語:J f=: monad define t=.<;._2 y for_i. i.#t do. smoutput (":>:i),':',":|.;i{t end. ) read=: 1!:1 f ucp read <'test2.txt' 1:で雨、は日昨。すでれ晴、は日今 2:後明。うょしで曇、は日明。たし 3:。かうょしで晴快、は日
571 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 11:18:26 ] >>556 何をいっているのかわからないので元スレを覗いてきます。
572 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 11:24:32 ] >>571 すみません。>>556 ではなく>>566 でした。 元スレでも質問者が問題を理解していないだろうと指摘されていました。
573 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 12:01:03 ] >>542 % Prolog 例えばこんな具合に書き進める。これからが大変。 販売員の正しい行動(_お客様,_お客様の要求,_販売員の正しい行動) :- お客様の要求の要約(_お客様,_お客様の要求,_お客様の要求の要約), お客様の要求の要約から販売員の正しい行動を考える(_お客様の要求の要約,_販売員の正しい行動). お客様の要求の要約(_お客様,_お客様の要求,_お客様の要求の要約) :- お客様がどんな方か明確にする(_お客様,_お客様の情報), お客様が関心をお持ちの分野を明確にする(_お客様,_お客様の情報,_お客様が関心をお持ちの分野), お客様の情報を解析して要求を要約する(_お客様,_お客様の要求,_お客様の情報,_お客様が関心をお持ちの分野,_お客様の要求の要約). お客様がどんな方か明確にする(_お客様,_お客様の情報) :- 顧客情報(_お客様,_お客様の情報). お客様が関心をお持ちの分野を明確にする(_お客様,_お客様の情報,_お客様が関心をお持ちの分野) :- 購買情報(_お客様,_過去の購買情報ならび,_過去のクレームならび), 関心のある分野診断(_お客様,_過去の購買情報ならび,_過去のクレームならび,_お客様が関心をお持ちの分野). お客様の情報を解析して要求を要約する(_お客様,_お客様の要求,_お客様の情報,_お客様が関心をお持ちの分野,_お客様の要求の要約) :- 句構造解析(_お客様の要求,_解析された句構造), 句構造からキーワードを拾い出して意味を推定する(_解析された句構造,_キーワードならび,_お客様の要求の要約).
574 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 12:23:19 ] >>497 使用言語:J f=: monad define t=:<;._2 y for_i. i.#t do. s=.;i{t w=.":#cutopen s smoutput (":>:i),':',":s smoutput '=>',(":#s),'文字、',w,'ワード' end. ) read=: 1!:1 f read<'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ワード
575 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 14:05:25 ] >>498 使用言語:J f=: monad define 'M D'=.y t=.0 0 31 59 90 120 151 181 212 243 273 304 334 w=.ucp'木金土日月火水' a=.(7|(M{t)+D){w smoutput (":M),(ucp'月'),(":D),(ucp'日は、'),a,ucp'曜日です。' ) f 9 15 9月15日は、水曜日です。
576 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 17:22:34 ] >>510 使用言語:J f=: dyad def ';,|:(;/x),:;/y' 'asdfgh' f '123' a1s2d3fgh
577 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 17:27:22 ] >>512 使用言語:J test2=: dyad def 'y-:~.x' 'abccba' test2 'abc' 1 'abcbc' test2 'cba' 0
578 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 18:11:22 ] pc12.2ch.net/test/read.cgi/tech/1248012902/827 # 【 課題 】 ime.nu/rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/918.txt # 課題1 # ラーメンをオブジェクト指向で表現。 # 3種類程度のラーメンが表現できるようにする。 # フィールド、メソッド、オーバーロード、オーバーライド、カプセル化(他クラスからのアクセスはgetメソッドとsetメソッドのみ)が確実に表現されていること。 # # 実行は以下のクラスから呼び出される # class RamenExample{ # public static void main(String [] args){ # Ramen shouyuRamen = new Ramen("しょうゆ"); # Ramen misoRamen = new Ramen("みそ"); # Ramen shioRamen = new Ramen("しお"); # } # } # # また、以下のクラスは生成が条件 # class Ramen{ } # class Utsuwa{ } # class Soup{ } # class Pasta{ } # class Topping{ }
579 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 18:14:12 ] pc12.2ch.net/test/read.cgi/tech/1248012902/827 # 【 課題 】 ime.nu/rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/918.txt # 課題2 # 以下の、お金をうけとり、おつりを計算するプログラムをつくりなさい。 # # ここから、よくわからなくなりました。 # たとえば、6200円の買い物をして、7000円受とると、100円を8枚って計算したいです。 #
580 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 21:11:17 ] >>579 % Prolog (その一) 金種計算(0,_,[]) :- !. 金種計算(_おつり残高,[],[]) :- _おつり残高 > 0,write('レジ不足です\n'),!,fail. 金種計算(_おつり残高,[_金種|R1],[(_金種,B)|R2]) :- _おつり残高 >= _金種, 金種が足りる(_おつり残高,_金種,N,B), _残り金額 is _おつり残高 mod _金種, 金種計算(_残り金額,R1,R2). 金種計算(_おつり残高,[_金種|R1],[(_金種,N)|R2]) :- _おつり残高 >= _金種, 金種が足りない(_おつり残高,_金種,N,B), _残り金額 is _おつり残高 - _金種 * N, 金種計算(_残り金額,R1,R2). 金種計算(_おつり残高,[_金種|R1],R2) :- _おつり残高 >= _金種, \+(レジの中(_金種,N)), 金種計算(_おつり残高,R1,R2). 金種計算(_おつり残高,[_金種|R1],R2) :- _おつり残高 < _金種, 金種計算(_おつり残高,R1,R2). 金種が足りる(_おつり残高,_金種,N,B) :- レジの中(_金種,N), B is _おつり残高 // _金種, N >= B,!. 金種が足りない(_おつり残高,_金種,N,B) :- レジの中(_金種,N), B is _おつり残高 // _金種, N < B,!.
581 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 03:21:11 ] >>579 (その二) % Prolog こちらがトップレベル >>580 はレジの中身を更新するのを忘れている おつりの計算(_お買い上げ金額,_うけとったお金,_金種) :- _受け取ったお金 > _お買い上げ金額, _おつり is _うけとったお金 - _お買い上げ金額, 金種計算(_おつり,[10000,5000,2000,1000,500,100,50,10,5,1],_金種).
582 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 03:25:18 ] >>580 >>581 一般に、給料計算の一部に金種計算が現れる場合は、銀行がその金種を 用意するものと考えられるから、レジの中身についての考慮は必要ないが、 おつりの場合はレジの内容が計算を主導する。
583 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 05:26:20 ] >>225 % Prolog (その一) '0から10の中からランダムに整数の2組を決める。それを平面上の座標と、座標を10個つくる。'(_10個の座標点ならび) :- '座標を10個つくる。'(1,_10個の座標点ならび). 座標を10個つくる。'(N,[]) :- N > 10,!. 座標を10個つくる。'(N,[[X,Y]|R]) :- '0から10の中からランダムに整数の2組を決める。'(X,Y), N2 is N + 1, 座標を10個つくる。'(N2,R). '0から10の中からランダムに整数の2組を決める。'(X,Y) :- X is random mod 9,Yis random mod 9. ユーザに座標を入力させ、その点から最も遠い点と近い点を求める。(_10個の座標点ならび,X,Y,_最も遠い点,_最も近い点) :- ユーザに座標を入力させ、(X,Y), その点から最も遠い点と近い点を求める(_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標), ユーザ座標と10個の座標点の表示(_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標). ユーザに座標を入力させ、(X,Y) :- 催促付き整数入力('X座標を入力してください :',X), 催促付き整数入力('Y座標を入力してください :',Y),!. その点から最も遠い点と近い点を求める。(_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標) :- ユーザの入力点からの距離ならびを得る(_10個の座標点ならび,X,Y,_ユーザの入力点からの距離ならび), ユーザの入力座標から最も遠い点を得る(_ユーザの入力点からの距離ならび,X,Y,_最も遠い点X座標,_最も遠い点Y座標), ユーザの入力座標から最も近い点を得る(_ユーザの入力点からの距離ならび,X,Y,_最も近い点X座標,_最も近い点Y座標),!.
584 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 06:20:55 ] >>225 % prolog (その二) ユーザの入力点からの距離ならびを得る([],_,_,[]) :- !. ユーザの入力点からの距離ならびを得る([[X1,Y1]|R1],X,Y,[[_距離,X1,Y1]|R2]) :- _距離 is sqrt(((Y1-Y)^2 + (X1-X)^2)), ユーザの入力点からの距離ならびを得る(R1,X,Y,R2). ユーザの入力座標から最も遠い点を得る(_ユーザの入力点からの距離ならび,X,Y,_最も遠い点X座標,_最も遠い点Y座標) :- findmax(L,member(L,_ユーザの入力点からの距離ならび),[_最も遠い距離,_最も遠い点X座標,_最も遠い点Y座標]). ユーザの入力座標から最も近い点を得る(_ユーザの入力点からの距離ならび,X,Y,_最も近い点X座標,_最も近い点Y座標) :- findmin(L,member(L,_ユーザの入力点からの距離ならび),[_最も近い距離,_最も近い点X座標,_最も近い点Y座標]). ユーザ座標と10個の座標点の表示(_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標) :- ユーザ座標と10個の座標点の表示(0,0,_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標). ユーザ座標と10個の座標点の表示(M,N,_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標) :- N > 9,!. ユーザ座標と10個の座標点の表示(M,N,_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標) :- M > 9,N2 is N + 1,wr('\n'), ユーザ座標と10個の座標点の表示(0,N2,_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標),!. ユーザ座標と10個の座標点の表示(M,N,_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標) :- 座標点表示(M,N,_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標), M2 is M + 1, ユーザ座標と10個の座標点の表示(M,N2,_10個の座標点ならび,X,Y,_最も遠い点のX座標,_最も遠い点のY座標,_最も近い点のX座標,_最も近い点のY座標).
585 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 06:23:40 ] >>225 % Prolog (その三) 座標点表示(X,Y,_,X,Y,_,_,X,Y) :- write('◎'),!. 座標点表示(X,Y,_,X,Y,_,_,_,_) :- write('×'),!. 座標点表示(_最も遠い点のX座標,_最も遠い点のY座標,_,_,_,_最も遠い点のX座標,_最も遠い点のY座標,_,_) :- write('●'),!. 座標点表示(_最も近い点のX座標,_最も近い点のY座標,_,_,_,_,_,_最も近い点のX座標,_最も近い点のY座標) :- write('○'),!. 座標点表示(M,N,_10個の座標点ならび,_,_,_,_,_,_) :- member([M,N],10個の座標点ならび),write('△'),!. 座標点表示(_,_,_,_,_,_,_,_,_) :- write(' '),!.
586 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 06:38:51 ] >>227 % Prolog program :- user_parameters([A,B]), atom_to_term(A,_実数1,_), atom_to_term(B,_実数2,_), sasho(_実数1,_実数2,_差,_商,_診断), program_1(_差,_商,_診断),!. sasho(_実数1,_実数2,_差,_商,0) :- (_実数2 = 0.0;_実数=0), _差 is _実数1 - _実数2,!. sasho(_実数1,_実数2,_差,_商,1) :- \+(_実数2 = 0.0), \+(_実数=0), _差 is _実数1 - _実数2, _商 is _実数1 / _実数2,!. program_1(_差,_商,0) :- write_formatted('%t',[_差]),!. program_1(_差,_商,1) :- write_formatted('%t,%t',[_差,_商]),!.
587 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 06:42:17 ] >>227 訂正 % Prolog 除数検査の中で _実数2 とするべきところを _実数 としていたものがある。 program :- user_parameters([A,B]), atom_to_term(A,_実数1,_), atom_to_term(B,_実数2,_), sasho(_実数1,_実数2,_差,_商,_診断), program_1(_差,_商,_診断),!. sasho(_実数1,_実数2,_差,_商,0) :- (_実数2 = 0.0;_実数2=0), _差 is _実数1 - _実数2,!. sasho(_実数1,_実数2,_差,_商,1) :- \+(_実数2 = 0.0), \+(_実数2=0), _差 is _実数1 - _実数2, _商 is _実数1 / _実数2,!. program_1(_差,_商,0) :- write_formatted('%t',[_差]),!. program_1(_差,_商,1) :- write_formatted('%t,%t',[_差,_商]),!.
588 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 07:36:27 ] pc12.2ch.net/test/read.cgi/tech/1197620454/586 # 問題こちら↓ # 階乗 n! を計算する関数を作成し, # 順列 # n個の異なるものからr個取り出して並べる。 # このときの順列の総数をnPrとあらわす。 # nPr=n(n-1)(n-2)・・・(n-r+1) # を計算する関数を作成し, # # 組み合わせ # 異なるn個からr個取り出して組を作る。 # このときの組合せの総数をnCrとあらわす。 # nCr = nPr/r! # # を計算するプログラムを作成してください。できればFORTRANで。
589 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 08:27:50 ] >>588 % Prolog nPr(N,R,X) :- U is N - R + 1, 階乗(U,N,X). nCr(N,R,X) :- U is N - R + 1, 階乗(U,N,K1), 階乗(R,K2), X is K1 // K2 . 階乗(M,N,1) :- M > N,!. 階乗(M,N,X) :- M2 is M + 1, 階乗(M2,N,Y), X is M * Y. 階乗(0,1) :- !. 階乗(1,1) :- !. 階乗(N,X) :- N2 is N - 1, 階乗(N2,Y), X is N * Y, asserta((階乗(N,X) :- (!))) .
590 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 16:35:57 ] >>211 % Prolog nojiriko.asia/prolog/c133_678.html
591 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 16:51:15 ] >>216 % Prolog search(Text,Pat,Start) :- sub_atom(Text,Start,_,_,Pat),!. search(_,_,-1). search(Start) :- write('Text :'),get_line(Text), write('Pat :'),get_line(Pat), search(Text,Pat,Start),!.
592 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:45:56 ] >>214 % Prolog 述語数値を第二引数が昇順になるように定義し直す。その際追番を1から振り直す :- findall(_値,数値(_,_値),L1), quicksort(L1,L2), abolish(数値/2), 述語数値を第二引数が昇順になるように定義し直す。その際追番を1から振り直す(1,L2). 述語数値を第二引数が昇順になるように定義し直す。その際追番を1から振り直す(_,[]) :- !. 述語数値を第二引数が昇順になるように定義し直す。その際追番を1から振り直す(M,[N|R]) :- assertz(数値(M,N)), M2 is M + 1, 述語数値を第二引数が昇順になるように定義し直す。その際追番を1から振り直す(M2,R).
593 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 18:33:33 ] >>530 使用言語:J op=:a:,;/'+-' a=:,;&.>,{(<a:,<'-')0},(<op),.<&.>":L:0;/>:i.9 ;"1,.&(<'=100'),.a{~I.(<100)=".&.>a 123+45-67-8-9=100 123+4-5-67-89=100 123-45+67-89=100 123-4+5+6+7-8-9=100 12+3+4+5-6+7-89=100 12+3-4-5+67+8+9=100 12-3+4-5-6-7+89=100 1+23-4-56+7+8+9=100 1+23-4-5+6+78-9=100 1+2+34-5-67-8-9=100 1+2+3-4-5+6+78+9=100 -1-2-3-4+5+6+78+9=100
594 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 21:30:57 ] pc12.2ch.net/test/read.cgi/tech/1263824755/451 # [1] 授業単元:情報処理入門 # [2] 問題文(含コード&リンク): # rep1.ppmとrep2.ppmの2つの画像を加算するプログラムを作成せよ. # プログラム中で加算したデータは,コントラスト強調を行った上で # PPM画像ファイル(h12r.ppm)として保存するようにすること. # Cのソースファイルh12r.cおよび実行することにより作成 # される画像ファイルを提出すること.rep1.ppmとrep2.ppmの # サイズはいずれも横124×縦124画素である.h12r.ppmのサイズも同じとする. # # rep1.ppm # ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10487.zip # rep2.ppm # ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10488.zip
595 名前:デフォルトの名無しさん [2010/02/04(木) 00:50:42 ] 優勝賞金500万円 www.jaist.ac.jp/ICGA-events-2010/olympiad/ 1989年にロンドンで第1回目のコンピュータオリンピアードが開催されました。 毎年開催される本イベントでは,コンピュータゲームプレイヤー同士が競技し,世界最高位を決定します。 これまでの優勝者には,Neurogammon(バックギャモン, 1989年), Chinook (チェッカー, 1989年および1990年) そして Tacos(将棋, 2005年, 2006年, 2008年, 2009年)などがあります。 コンピュータオリンピアードは国際コンピュータゲーム協会(ICGA)が主催して実施されています。 競技部門には,アマゾン,バックギャモン,ブリッジ,コンピュータプール,六目並べ,象棋,ドッツアンドボックス,国際ドローツ,囲碁,9路盤囲碁,ヘックス,ハバナ,ラインズオブアクション, 将棋,スラカルタなどがあります。 この他のゲームもコンピュータによる競技会を開催する可能性があります。主催者までコンタクトしてください。 2010年に第15回目となるコンピュータオリンピアードは金沢市内で開催されます。 ICGAとJAISTとの共同イベントとして9月25日から10月2日にかけて金沢市内で開催されます。 各競技の日程は後日決定します。 参加申し込みなどの詳細も後日お知らせ致します。
596 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 06:08:29 ] >>595 % Prolog コンピュータオリンピアード(優勝賞金,500万円). コンピュータオリンピアード('URL','www.jaist.ac.jp/ICGA-events-2010/olympiad/ '). コンピュータオリンピアード(歴史,第1回目,ロンドン,1989). コンピュータオリンピアード(開催,毎年). コンピュータオリンピアード(主催,'国際コンピュータゲーム協会(ICGA)'). コンピュータオリンピアード(出場者,コンピュータゲームプレイヤー同士). コンピュータオリンピアード(競技部門,アマゾン). コンピュータオリンピアード(競技部門,バックギャモン). コンピュータオリンピアード(競技部門,ブリッジ). コンピュータオリンピアード(競技部門,コンピュータプール). コンピュータオリンピアード(競技部門,六目並べ). コンピュータオリンピアード(競技部門,象棋). コンピュータオリンピアード(競技部門,ドッツアンドボックス). コンピュータオリンピアード(競技部門,国際ドローツ). コンピュータオリンピアード(競技部門,囲碁). コンピュータオリンピアード(競技部門,'9路盤囲碁'). コンピュータオリンピアード(競技部門,ヘックス). コンピュータオリンピアード(競技部門,ハバナ). コンピュータオリンピアード(競技部門,ラインズオブアクション). コンピュータオリンピアード(競技部門,X) :- 新しい競技種目になる(X). コンピュータオリンピアード(開催予定,第15回,金沢市内,'2010年','自9月25日','至10月2日'). コンピュータオリンピアード(第15回大会開催形態,共同エベント). コンピュータオリンピアード(第15回大会共同エベント,主催,'ICGA'). コンピュータオリンピアード(第15回大会共同エベント,主催,'JAIST'). コンピュータオリンピアード(第15回大会,競技日程,後日決定). コンピュータオリンピアード(参加申し込みなどの詳細,後日お知らせ致します).
597 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 06:28:59 ] pc12.2ch.net/test/read.cgi/tech/1263824755/455 # [1] 授業単元: アルゴリズム # [2] 問題文(含コード&リンク):課題2−2と2−3です。 # 課題2-2 # コマンドライン引数で入力される任意個の実数を,malloc関数で動的に確保した配列に 格納するように,kadai2_1.c を修正したプログラム kadai2_2.c を作成せよ. # # 実行例は課題2-1と同じ. # -------------------------------------------------------------------------------- # 課題2-3 # コマンドライン引数で入力される任意個の実数に対し,整数部(integer part)と小数部(fractional part)に分割し,実行例のように出力するプログラム kadai2_3.c を作成せよ.ただし,以下の仕様を満足すること. # # 実数値,整数部,小数部をメンバにもつ構造体を定義し,構造体の配列として利用すること. # 構造体の配列は,malloc関数を利用して動的に確保すること. # 整数部,小数部の分割および構造体メンバへの格納は,dividePart関数を定義して利用すること. # 構造体配列の内容を実行例のように出力する printData関数を定義して利用すること. # 構造体配列の内容もとに整数部の合計,小数部の合計,実数値の合計を出力する printSum関数を定義して利用すること.
598 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 06:36:09 ] pc12.2ch.net/test/read.cgi/tech/1263824755/456 # [1] 授業単元: データ演習 # [2] 問題文(含コード&リンク): # できなかった問題は11−1です。 # 課題10−1を使う問題なので、できている10−1のソースコードを一緒に入れています。 # どなたか、よろしくお願いします。 # 課題10-1 # コマンドライン引数で指定される整数列を順番に二分探索木に登録し,キーボードから入力される値を探索するプログラム kadai10_1.c を作成せよ. # また,最初に inorderで木をなぞった結果を示せ. # # 課題10−1に番兵を導入したプログラム kadai11_1.c を作成せよ. # # ヒント:番兵用に1個のノードを定義し,ノードのNULLポインタが番兵を指すようにすればよい. # 挿入関数と探索関数,inorder, main関数を変更すればよい.挿入時の挿入ノードを決める操作も番兵を使えばよい. # その際,初期状態として,rootが番兵を指す状態から開始する必要がある.
599 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 06:38:48 ] pc12.2ch.net/test/read.cgi/tech/1263824755/459 # [1] 授業単元:プログラミング実践 # [2] 問題文 # アフィン変換のプログラムを作成し、下の図の真ん中を座標の中心にして60°左回転した結果を出力せよ。 # (図)affin.txt # 000000000 # 000010000 # 000010000 # 000010000 # 011111110 # 000010000 # 000010000 # 000010000 # 000000000 #
600 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 07:45:56 ] >>597 % Prolog program :- user_parameters(L), dividePart(L,L1), assertz('>>597 構造体'(L1)). dividePart([],[]) :- !. dividePart([A|R1],[(整数部(_整数部),小数部(_小数部),(実数値(_実数値))|R2]) :- atom_to_term(A,_実数値,_), _整数部 is float_integer_part(_実数値), _小数部 is float_fractional_part(_実数値), dividePart(R1,R2). printData :- '>>597 構造体'(L), printSum(L,0.0,0.0,0.0). printSum([],_整数部の合計,_小数部の合計,_実数値の合計) :- write_formatted('整数部の合計=%t,小数部の合計=%t,実数値の合計=%t\n',[_整数部の合計,_小数部の合計,_実数値の合計]),!. printSum((整数部(_整数部),小数部(_小数部),(実数値(_実数値))|R1],_整数部の合計1,_小数部の合計1,_実数値の合計1) :- _整数部の合計2 is _整数部 + _整数部の合計1, _整数部の合計2 is _小数部 + _小数部の合計1, _実数値の合計2 is _実数値 + _実数値の合計1, printSum(R1,_整数部の合計2,_小数部の合計2,_実数値の合計2).
601 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 07:52:16 ] >>596 の二節を訂正します % Prolog コンピュータオリンピアード(競技部門,X) :- 新しい競技種目になる(X). => コンピュータオリンピアード(競技部門,X) :- コンピュータオリンピアード(新しい競技種目になる,X). コンピュータオリンピアード(開催予定,第15回,金沢市内,'2010年','自9月25日','至10月2日'). => コンピュータオリンピアード(開催予定,第15回,金沢市内,'自2010年9月25日','至2010年10月2日'). 下は原文のニュアンスから少し遠くなりますが。 '9月25日'-'10月2日'のような構造を持ったデータを持ってきたくないんです。
602 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 08:02:08 ] >>601 それなら、 コンピュータオリンピアード(開催予定,第15回,金沢市内,'2010年'). コンピュータオリンピアード('第15回',開催日時,'9月25日から10月2日まで'). の方がいいのでは。 文の解析を残すのがいいかどうかというところだね。
603 名前:602 mailto:sage [2010/02/04(木) 08:07:27 ] コンピュータオリンピアードを述語に持って来ているということは、 これがクラスという意識が多少はあるのかな?
604 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 08:32:44 ] >>602 コンピュータオリンピアード('第15回',開催予定日,'9月25日から10月2日まで'). ですか。 「9月25日から10月2日まで」に比べて「9月25日から10月2日にかけて」は ふくらみがありますね。こういう部分の表現は自然言語に敵わない。 いや、自然言語は大袈裟で単に「掛かる」という言葉のふくらみかな。 >>603 検索の都合もあるw ゼネラルデータベースのように特権的なテーブルとか 述語を持たない系は魅力がありますが、現実には大変でしょう。しかしまあ、 アナーキズムも再評価されているようですから、わからないですよね。
605 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 09:15:50 ] pc12.2ch.net/test/read.cgi/tech/1263824755/465 # [2] CIP法での1次元の移流計算 # # 自分で以下のプログラムを作ったところ。 # kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10493.txt # tの値を増やすにつれてf[n][t]のnの初期のほうの値がなぜかでかい数字が出てしまいます。 # 自分の計算ではtの値を増やせば、f[n][t]のnの初期のほうの値は0になると思うんですが、一体どこが悪いのか、ご教授をお願いいたします。
606 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 13:20:04 ] pc12.2ch.net/test/read.cgi/tech/1153585095/340 # 【 課題 】 # 次の要求を満たすフィルタプログラムを作れ。 # 1.標準入力から行を読み込み、空白をカンマに変換し、標準出力に出力する # 2.連続した複数の空白はひとつの空白と同じと見なす # 3.タブ文字も空白と見なす # 4.オプション等は設けない # 5.フィルタとして動作するので余分なメッセージ類は一切出力しない # # 例として「1 Bill 1955 Oct 28」と入力したら「1,Bill,1955,Oct,28」と出力されるようにします。
607 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 17:11:30 ] >>606 % Prolog (その一) 例で ","の後に空白が一つ入っているのは誤りだと思う。 program :- repeat, 標準入力から行を読み込み(_行), 空白をカンマに変換し、標準出力に出力する(_行). 空白をカンマに変換し、標準出力に出力する(end_of_file) :- !. 空白をカンマに変換し、標準出力に出力する(_行) :- 空白をカンマに変換し、(_行,_変換された行), 標準出力に出力する(_変換された行), fail. 標準入力から行を読み込み(_行) :- get_line(_行). 空白をカンマに変換し、(_行,_変換された行) :- atom_chars(_行,Chars), 文字ならびの空白をカンマに変換(Chars,Chars2), atom_chars(_変換された行,Chars2). 文字ならびの空白をカンマに変換([],[]) :- !. 文字ならびの空白をカンマに変換(L,[',']) :- 空白またはタブならび(L),!. 文字ならびの空白をカンマに変換(L1,[',',A|R2]) :- append(L0,[A|R3],L1), \+(A=' '),\+(A='\t'), 空白またはタブならび(L0), 文字ならびの空白をカンマに変換(R3,R2),!. 文字ならびの空白をカンマに変換([A|R1],[A|R2]) :- 文字ならびの空白をカンマに変換(R1,R2),!.
608 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 17:13:11 ] >>606 % Prolog (その二) 空白またはタブならび([' ']) :- !. 空白またはタブならび(['\t']) :- !. 空白またはタブならび([' '|R]) :- 空白またはタブならび(R),!. 空白またはタブならび(['\t'|R]) :- 空白またはタブならび(R),!. 標準出力に出力する(_行) :- write_formatted('%t\n',[_行]).
609 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 17:18:29 ] pc12.2ch.net/test/read.cgi/tech/1260922392/27 # 微分方程式の境界値問題 # # y''(x) = f(y(x)), 0<x<1, y(0)=y(1)=0 # # の解を数値的に求める方法のひとつとして、射的法(shooting method) # があります。自然数nを与えて、区間[0,1]をn等分して、ykをy(k/n) # の近似式として、漸化式(ここから下のyの後ろのカッコの中身は添え字と思え) # y(0) = 0, y(1)= t, # y(k+1) = 2y(k) - y(k-1) + 1/n²f(y(k)), k=1,2,…,2n-1, # の解の数値的y(n)=0 を満たすものを、上の問題の近似解として求める方法です。 # yn=0となる数列を求めるために、ynを未知パラメータtの関数とみなして、tに関する二分法を使います。 # # 正の実数aを適当に定めて、 # f(y) = ay(1 - y) # の場合の近似解y(k)を、誤差10-6の範囲で求めるプログラムを作成してください。 # 自然数nは適当に決めてください。(2のベキ乗にするのが無難です) # 実数あの値は、とりあえず20にしてみてください。 # (注意:a≧10でないと…)
610 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 18:24:04 ] >>52 音通(恨み,浦見). 音通(恨み,裏見). この系統は根深い。
611 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 20:58:20 ] >>515 使用言語:J g=:(0=3&|)+.(3 e. 10.inv) f=:[:;{&('NO';'YES') f g 11 NO f g 12 YES f g 13 YES
612 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 06:06:05 ] >>206 % Prolog (その一) 自分で五つの問題文を入力して練習するタイピング練習ソフト :- 自分で五つの問題文を入力して(1,_五つの問題文), 問題文は入力した五つの中から10題がランダムに出題される(1,_五つの問題文,_問題文ならび), タイプ練習(_問題文ならび,_正解数), write_formatted('正解数は%tです\n',[_正解数]). 自分で五つの問題文を入力して(N,[]) :- N > 5,!. 自分で五つの問題文を入力して(N,[_問題文|R]) :- 問題文を入力して(_問題文1), 問題文の長さを調整する(_問題文1,_問題文), N2 is N + 1, 自分で五つの問題文を入力して(N2,R). 問題文を入力して(_問題文) :- write_formatted('%tつ目の問題文 :',[N]),get_line(問題文),!. 問題文の長さを調整する(_問題文,_問題文) :- sub_atom(_問題文,0,_長さ,_,_問題文), _長さ =< 20,!. 問題文の長さを調整する(_問題文1,_問題文) :- sub_atom(_問題文1,0,20,_,_問題文).
613 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 06:07:07 ] >>206 % Prolog (その二) 問題文は入力した五つの中から10題がランダムに出題される(N,_,[]) :- N > 10,!. 問題文は入力した五つの中から10題がランダムに出題される(N,_問題集,[_問題|R]) :- M is (random mod 5) + 1, list_nth(M,_問題集,_問題), N2 is N + 1, 問題文は入力した五つの中から10題がランダムに出題される(N2,_問題集,R). タイプ練習([],0) :- !. タイプ練習([_問題文|R],_正解数) :- write_formatted('%t\n',[_問題文]),get_line(Line), _問題文 = Line, タイプ練習(R,_正解数2), _正解数 is _正解数2 + 1,!. タイプ練習([_|R],_正解数) :- タイプ練習(R,_正解数).
614 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 06:28:08 ] >>212 % Prolog '2つの名前を入力しステータス(ランダム)を決定し 勝敗表示する' :- '2つの名前を入力し'(_名前1,_名前2), 'ステータス(ランダム)を決定し'(_名前1のステータス,_名前2のステータス), 勝負表示する(_名前1,_名前2,_名前1のステータス,_名前2のステータス),!. 'ステータス(ランダム)を決定し'(_名前1のステータス,_名前2のステータス) :- _名前1のステータス is random mod 100 + 1, _名前2のステータス is random mod 100 + 1. 勝負表示する(_名前1のステータス,_名前2のステータス) :- _名前1のステータス > _名前2のステータス, write_formatted('%tの勝ちです\n',[_名前1]),!. 勝負表示する(_名前1のステータス,_名前2のステータス) :- _名前1のステータス < _名前2のステータス, write_formatted('%tの勝ちです\n',[_名前2]),!. 勝負表示する(_名前1のステータス,_名前2のステータス) :- _名前1のステータス = _名前2のステータス, write('引き分けです\n'),!.
615 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 09:44:04 ] >>238 % Prolog ここでは構造体=述語定義と解釈してみる。 '構造体を利用して、氏名,年齢,性別が5人分書かれたテキストファイルを読み込んで、画面に表示する'(_テキストファイル) :- '構造体を利用して、氏名,年齢,性別が5人分書かれた次のようなテキストファイルを読み込んで、(_テキストファイル,Lines), abolish(氏名・年齢・性別/3), '氏名・年齢・性別構造体として定義'(Lines). 画面に表示する,!. '構造体を利用して、氏名,年齢,性別が5人分書かれたテキストファイルを読み込んで、(_テキストファイル,Lines) :- get_lines(_テキストファイル,Lines),!. '氏名・年齢・性別構造体として定義'([]) :- !. '氏名・年齢・性別構造体として定義'([Line|R]) :- split(Line,[' '],[_氏名,_年齢,_性別]), assertz(氏名・年齢・性別(氏名(_氏名),年齢(_年齢),性別(_性別))), '氏名・年齢・性別構造体として定義'(R). 画面に表示する :- write('%20s %6s %4s\n',[氏名,年齢,性別]), 氏名・年齢・性別(氏名(_氏名),年齢(_年齢),性別(_性別)), write_formatted('%20s %6d %4s\n',[_氏名,_年齢,_性別]), fail. 画面に表示する.
616 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 10:45:47 ] >>515 使用言語:J 同じ値がでないステータスの生成なので引き分けはない。 f=:dyad define 'xs ys'=. 2?10000 smoutput x,' status ',":xs smoutput y,' status ',":ys smoutput (;(xs<ys){x;y),' win' ) 'scala' f 'clojrure' scala status 8546 clojrure status 8515 scala win
617 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 10:49:07 ] >>616 >>515 ではなくて >>212 でした
618 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 16:47:01 ] >>229 % Prolog 'テキストファイルの内容を,別のテキストファイルにコピーする'(_コピー元ファイル,_コピー先ファイル) :- open(_コピー元ファイル,read,Input,[type(binary)]), open(_コピー先ファイル,write,Output,[type(binary)]), repeat, 一文字読む(Input,C), 一文字書き出す(Output,C), close(Input), close(Output),!. 一文字読む(Input,C) :- get_byte(C). 一文字書き出す(Output,-1) :- !. 一文字書き出す(Output,C) :- put_byte(Output,C),fail.!. テキストファイルの中身の内容を画面に出力(_コピー元ファイル,_コピー先ファイル) :- get_lines(_コピー元ファイル,Lines1), get_lines(_コピー先ファイル,Lines2), '2テキストを並べて行表示'(Lines1,Lines2),!. '2テキストを並べて行表示'([],[]) :- !. '2テキストを並べて行表示'([A|R1],[B|R2]) :- write_formatted('%t %t\n',[A,B]), '2テキストを並べて行表示'(R1,R2).
619 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 17:10:32 ] >>232 % Prolog モンテカルロ法で円周率を計算する(_円周率) :- モンテカルロ法で円周率を計算する(1,10000,0,_円周率),!. モンテカルロ法で円周率を計算する(M,N,Y,X) :- M > N,X is 4.0 * Y / N,!. モンテカルロ法で円周率を計算する(M,N,Y,X) :- U1 is ((random mod 10000) / 10000) ^ 2, U2 is ((random mod 10000) / 10000) ^ 2, U1 + U2 =< 1.0, Y2 is Y + 1, M2 is M + 1, モンテカルロ法で円周率を計算する(M2,N,Y2,X),!. モンテカルロ法で円周率を計算する(M,N,Y,X) :- M2 is M + 1, モンテカルロ法で円周率を計算する(M2,N,Y,X),!.
620 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 17:24:20 ] >>244 % Prolog オイラー級数を用いて、πの近似値を求める(_円周率) :- findsum(U,(for(1,N,100000),U is 1 / (N * N)),Sum), _円周率 is sqrt(6 * Sum).
621 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 17:25:31 ] Prolog氏かっけー。
622 名前:620 mailto:sage [2010/02/05(金) 19:16:08 ] ごめん出題は >>144 だった。
623 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 07:00:34 ] 大学が ->受験->春休み になるから、出題なくなりますね。未解決問題を しばらくは潰していきます。
624 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 05:47:54 ] pc12.2ch.net/test/read.cgi/tech/1263824755/483 # [1] C言語プログラミング初歩(専門学校) # [2] int型の配列変数A[64][32]をB[32][64]に代入する. # 次の対応があるようにすること # A[0][0] -> A[0][1] -> A[0][31] ->A[1][0] ->....->A[63][31] # B[0][0] -> B[0][1]-> B[0][31] -> B[0][32]->....->B[31][63] # (上の段と下の段が一致) # A[m][n]には値 (m+n) % 31が入っているものとする。
625 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 05:51:59 ] pc12.2ch.net/test/read.cgi/tech/1263824755/480 # [2] プログラム # 環境 # [3.1] OS:Linux # [3.2] コンパイラ名:gcc # [3.3] 言語:C++ # 以下の実行結果はどうなるか # # # #include<stdio.h> # #define N10 # int main(){ # int i,wa=0; # for(i=1;i<N;i++){ # if((i%2) == 0) continue; # wa+=i;} # printf("%d\n",wa); # return 0;} # # これを、C言語を他の言語に書き換える課題とします。
626 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 06:23:14 ] >>624 % Prolog ならびを2要素ごとに纏める([],[]) :- !. ならびを2要素ごとに纏める([L1,L2|R1],[L3|R2]) :- append(L1,L2,L3), ならびを2要素ごとに纏める(R1,R2).
627 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 06:34:42 ] >>624 % Prolog 'A[m][n]には値 (m+n) % 31が入っている'(A) :- 'A[m][n]には値 (m+n) % 31が入っている'(0,A),!. 'A[m][n]には値 (m+n) % 31が入っている'(M,[]) :- M > 31,!. 'A[m][n]には値 (m+n) % 31が入っている'(M,[L|R]) :- 'A[m][n]には値 (m+n) % 31が入っている'(M,0,L), M2 is M + 1, 'A[m][n]には値 (m+n) % 31が入っている'(M2,R). 'A[m][n]には値 (m+n) % 31が入っている'(M,N,[]) :- N > 63,!. 'A[m][n]には値 (m+n) % 31が入っている'(M,N,[X|R]) :- X is (M + N) mod 31, N2 is N + 1, 'A[m][n]には値 (m+n) % 31が入っている'(M,N2,R),!.
628 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 07:03:06 ] >>625 % Prolog 'Prologでの表現' :- 'Prologでの表現'(1,X), write_formatted('%t\n',[X]). 'Prologでの表現'(9,0) :- !. 'Prologでの表現'(N,X) :- 0 is N mod 2, N2 is N + 1, 'Prologでの表現'(N2,Y), X is Y + 1,!. 'Prologでの表現'(N,X) :- \+(0 is N mod 2), N2 is N + 1, 'Prologでの表現'(N2,X).
629 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 16:33:47 ] pc12.2ch.net/test/read.cgi/tech/1263824755/494 # 【質問テンプレ】 # [1] 授業単元:C言語入門 # [2] 問題文: # キーボードから英文を1文字ずつ入力し母音の出現数をカウントする。 # その数だけアスタリスクを表示する。 # ただし、入力を終了するときはCtrl+Zを押すものとする。(vowel.c)
630 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 16:44:40 ] >>629 % Prolog キーボードから英文を1文字ずつ入力し母音の出現数をカウントする。その数だけアスタリスクを表示する :- キーボードから英文を1文字ずつ入力し(Chars), 母音の出現数をカウントする(Chars,L), その数だけアスタリスクを表示する(L). キーボードから英文を1文字ずつ入力し(Chars) :- get_chars(Chars). 母音の出現数をカウントする(L) :- findall('*',(member(A,Chars),member(A,['A','E','I','O','U',a,e,i,o,u])),L). その数だけアスタリスクを表示する(L) :- concat_atom(L,S), write_formatted('%t\n',[S]).
631 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 16:50:26 ] >>630 (>>629 ) 訂正 % Prolog 述語 母音の出現数をカウントする の第一引数が落ちていました。 キーボードから英文を1文字ずつ入力し母音の出現数をカウントする。その数だけアスタリスクを表示する :- キーボードから英文を1文字ずつ入力し(Chars), 母音の出現数をカウントする(Chars,L), その数だけアスタリスクを表示する(L). キーボードから英文を1文字ずつ入力し(Chars) :- get_chars(Chars). 母音の出現数をカウントする(Chars,L) :- findall('*',(member(A,Chars),member(A,['A','E','I','O','U',a,e,i,o,u])),L). その数だけアスタリスクを表示する(L) :- concat_atom(L,S), write_formatted('%t\n',[S]).
632 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 16:55:48 ] >>629 % Prolog 母音出現数をカウントする 以下は、この定義の方が自然かもしれない。 % でも、私はアスタリスクの表示でカウントしているとする>>631 の方が好きだ。 キーボードから英文を1文字ずつ入力し母音の出現数をカウントする。その数だけアスタリスクを表示する :- キーボードから英文を1文字ずつ入力し(Chars), 母音の出現数をカウントする(Chars,_カウント), その数だけアスタリスクを表示する(_カウント). キーボードから英文を1文字ずつ入力し(Chars) :- get_chars(Chars). 母音の出現数をカウントする(Chars,_カウント) :- count((member(A,Chars),member(A,['A','E','I','O','U',a,e,i,o,u])),_カウント). その数だけアスタリスクを表示する(_カウント) :- length(L,_カウント), all(L,'*'), concat_atom(L,S), write_formatted('%t\n',[S]).
633 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 19:30:00 ] pc12.2ch.net/test/read.cgi/tech/1263824755/502 # [1] 授業単元:プログラミング演習 # [2] 問題文(含コード&リンク): # 入力された2つの文字列str1,str2を比較し、str1にstr2の文字列が含まれている場合に1を、 # 含まれていない場合に-1を返す関数、strcmpを作成せよ。 # int strcmp( char *str1, char *str2); # ex. str1=”abaabab” , str2=”aab” 1 # ex. str1=”abaabab” , str2=”abb” -1
634 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 19:36:17 ] >>633 % Prolog 入力された2つの文字列Str1,Str2を比較し、Str1にStr2の文字列が含まれている場合に1を、含まれていない場合に-1を返す(Str1,Str2,1) :- sub_atom(Str1,_,_,_,Str2),!. 入力された2つの文字列Str1,Str2を比較し、Str1にStr2の文字列が含まれている場合に1を、含まれていない場合に-1を返す(Str1,Str2,(-1)) :- \+(sub_atom(Str1,_,_,_,Str2)),!.
635 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 19:54:06 ] >>633 % Prolog 「1を返す」という部分が微妙な位置にある例。 入力された2つの文字列Str1,Str2を比較する(Str1,Str2,_診断) :- 'Str1にStr2の文字列が含まれている場合に1を返す'(Str1,Str2,_診断),!. 入力された2つの文字列Str1,Str2を比較する(Str1,Str2,_診断) :- 'Str1にStr2の文字列が含まれていない場合に-1を返す'(Str1,Str2,_診断),!. 'Str1にStr2の文字列が含まれている場合に1を返す'(Str1,Str2,1) :- sub_atom(Str1,_,_,_,Str2),!. 'Str1にStr2の文字列が含まれていない場合に-1を返す'(Str1,Str2,(-1)) :- \+(sub_atom(Str1,_,_,_,Str2)),!.
636 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 04:33:36 ] >>633 % Prolog 入力された2つの文字列Str1,Str2を比較し、Str1にStr2の文字列が含まれている場合に1を、含まれていない場合に-1を返す(Str1,Str2,1) :- 'Str1にStr2の文字列が含まれている'(Str1,Str2),!. 入力された2つの文字列Str1,Str2を比較し、Str1にStr2の文字列が含まれている場合に1を、含まれていない場合に-1を返す(Str1,Str2,(-1)) :- 'Str1にStr2の文字列が含まれていない'(Str1,Str2),!. 'Str1にStr2の文字列が含まれている'(Str1,Str2) :- sub_atom(Str1,_,_,_,Str2),!. 'Str1にStr2の文字列が含まれていない'(Str1,Str2) :- \+(sub_atom(Str1,_,_,_,Str2)),!.
637 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 04:51:03 ] >>634->>636 要するにどこで組込述語を含む原初的な述語を目標とする節に行き着くか。そこまで 自然な説明として目標を辿ることができるように定義できるか、ということ。 ここで原初的な述語とは、先祖定義に現れる親子/2のような述語。 先祖(X,Y) :- 親子(X,Y). 先祖(X,Y) :- 親子(X,Z),先祖(Z,Y). 親子(義朝,頼朝). 親子(為朝,義朝).
638 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 04:52:59 ] ふつう祖先だったかw
639 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 05:01:20 ] pc12.2ch.net/test/read.cgi/tech/1263824755/515 # 【質問テンプレ】 # [1] 授業単元:C言語 # [2] 問題文: # input.ppm というPPMフォーマットのファイルを読み込み, ヘッダをつけて縦横をそれぞれ 1/2(面積にして1/4) にして出力するプログラムを書きなさい. # input.ppm のサイズは 410x307 である.
640 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 21:12:40 ] pc12.2ch.net/test/read.cgi/tech/1248012902/839 # 【 課題 】5個以上の学生番号(2桁程度の数字で良い)、 # 名前、身長をプログラム中でセットし、 # 学生番号または名前をもとに身長を調べるプログラム。 # 学生番号と名前の入力データ、検索結果の身長データを両方表示する機 能があること。 # 【 形態 】1. Javaアプリケーション(main()で開始)/ # 【 期限 】2/10(水) # # たぶん二分探索使うかと思うのですが # よくわかりません!すみませんがよろしくおねがいします!!
641 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 21:38:31 ] >>640 % Prolog 学生(11,源亮,168). 学生(33,高階高子,156). 学生(7,九条良常,173). 学生(61,石川広也,162). 学生(16,藤原隆甫,177). 学生番号または名前をもとに身長を調べる(_学生番号または名前,_身長) :- integer(_学生番号または名前), 学生(_学生番号または名前,_名前,_身長), write_formatted('学生番号=%t,名前=%t,身長=%t\n',[_学生番号または名前,_名前,_身長]). 学生番号または名前をもとに身長を調べる(_学生番号または名前,_身長) :- atom(_学生番号または名前), 学生(_学生番号,_学生番号または名前,_身長), write_formatted('学生番号=%t,名前=%t,身長=%t\n',[_学生番号,_学生番号または名前,_身長]).
642 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 21:56:43 ] >>641 % Prolog write_formatted/2で結果を表示するのに、第二引数に"_身長"が付いているのは 奇妙ですね。これは同姓同名の有り得ることを思い起こさせるための配慮と 考えてください。
643 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 05:06:03 ] pc12.2ch.net/test/read.cgi/tech/1263824755/528 # [1] 授業単元:C言語 # [2] 問題文: ガウス分布における数値積分 I=∫f(x)dx,←xmin〜xmax f(x)=1/√(2*π*σ)*exp(a) a=-(x-μ)*(x-μ)/(2*σ*σ) # 積分区間は[xmin,xmax]=[myuu-2siguma,myuu+2siguma]として計算すること。なおμ=0,σ=1とした場合、I=0.95449と # なるので確認すること。
644 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 05:09:15 ] pc11.2ch.net/test/read.cgi/db/1252492296/500 # MYSQLなんですけど # # date data # 2010/01/01 hoge1 # 2010/01/05 hoge2 # # みたいなテーブルから # # 2010/01/01 hoge1 # 2010/01/02 NULL # 2010/01/03 NULL # 2010/01/04 NULL # 2010/01/05 hoge2 # # のような結果の出せるSQLを求めてます。 # # select * from table between date '2010/01/01' and '2010/01/05' # # とするとデータのある2レコードしか出ないのですが、 # データがない部分も日付を出しつつ、デフォルトのデータないよっていう文字列を出せると助かります。
645 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 07:04:31 ] >>644 % Prolog こんな述語定義が必要。日付連鎖は未定義かも知れない。後で。 '日付からデータを表示する。存在しない日はデータをNULLとして表示'(_日付下限,_日付上限) :- 日付からデータを表示する。存在しない日はデータをNULLとして表示(_日付下限), 日付連鎖(_日付下限,_日付), 日付からデータを表示する。存在しない日はデータをNULLとして表示(_日付), _日付=_日付上限. '日付からデータを表示する。存在しない日はデータをNULLとして表示'(_日付) :- _日付 = (_年/_月/_日), table(_日付,Data), write_formatted('%2d%2d%2d %t\n',[_年,_月,_日,Data]),!. '日付からデータを表示する。存在しない日はデータをNULLとして表示'(_日付) :- _日付 = ( _年/_月/_日), \+(table(_日付,Data)), write_formatted('%2d%2d%2d NULL\n',[_年,_月,_日]),!.
646 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 07:06:43 ] pc12.2ch.net/test/read.cgi/tech/1248012902/847 # 【 課題 】電話番号検索を行うjavaプログラムを、探索アルゴリズムを用いて作成せよ。 # 【 補足 】・最初に顧客番号(2桁の数字)、顧客名(Yamadaなど姓のみ)、 # 電話番号(09012345678の形式、ハイフンなし)という顧客データを10人以上プログラム中でセットし、 # 顧客番号または姓をもとに電話番号を調べるアルゴリズムを作成する。 # ・顧客番号と顧客名の入力データ、電話番号データを両方表示させる機能をつけなければならない。 # ・(もし可能なら)データリストへの顧客データの追加or削除機能を盛り込みたい
647 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 07:21:04 ] >>646 % Prolog 実際には、入力された項・要素の形式検査をしますが。 電話番号を10件登録する :- write('引数として、顧客番号(2桁の数字)、顧客名(Yamadaなど姓のみ)、電話番号(09012345678の形式、ハイフンなしの三つの項をもつ複合項、電話番号を10件入力します\n'), for(1,N,10),write_formatted('%t件目 : '),read(X),assertz(X),N=10. 顧客データの追加(_追加する項) :- assertz(_追加する項). 顧客データの削除(_追加する項) :- retract(_削除する項). 電話番号の検索(_顧客番号,_顧客名,_電話番号) :- 電話番号(_顧客番号,_顧客名,_電話番号).
648 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 07:23:27 ] >>647 訂正 write_formatted/2の引数が目標で1個になってしまっているところがあった。 % Prolog 実際には、入力された項・要素の形式検査をしますが。 電話番号を10件登録する :- write('引数として、顧客番号(2桁の数字)、顧客名(Yamadaなど姓のみ)、電話番号(09012345678の形式、ハイフンなしの三つの項をもつ複合項、電話番号を10件入力します\n'), for(1,N,10),write_formatted('%t件目 : ',[N]),read(X),assertz(X),N=10. 顧客データの追加(_追加する項) :- assertz(_追加する項). 顧客データの削除(_追加する項) :- retract(_削除する項). 電話番号の検索(_顧客番号,_顧客名,_電話番号) :- 電話番号(_顧客番号,_顧客名,_電話番号).
649 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 07:25:45 ] pc12.2ch.net/test/read.cgi/tech/1263824755/534 # [1] 授業単元:プログラミング # [2] 問題文(含コード&リンク): # 配列に # Institute of Technology # という文字列を代入し、ポインタを利用して # ・各文字が格納されているアドレス # ・そのアドレスに格納されている文字 # を表示するプログラムを作成せよ。
650 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 07:27:55 ] >>649 % Prolog % Prologではアドレス操作はできない。したがって、この問題は解けない。
651 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 07:48:06 ] >>648 (>>646 ) % Prolog さすがにちょっと乱暴だったか。 顧客データの追加(_顧客番号,_顧客名,_電話番号) :- assertz(電話番号(_顧客番号,_顧客名,_電話番号)). 顧客データの削除(_顧客番号,_顧客名,_電話番号) :- retract(電話番号(_顧客番号,_顧客名,_電話番号)).
652 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 07:59:23 ] >>648 % Prolog この「いろんな言語で宿題スレ」に書き込みだしてから初めて read/1 を使っています。 % この組込述語は入力を項として解釈する便利で基本的なものですが、 % 入力時にピリオドで終了する必要があります。これを一般ユーザに要請するのは % 現実的ではないと考えて、get_line/1等を用いてきました。 % 利用者がPrologの項とそのルールについて理解している場合はreadを使って % 構わないと思います。なお細かいことですが、read/1の場合、 % 標準では処理系がプロンプトを表示するが普通です。その表示するプロンプトの % 変更なども組込述語で行えるようになっています。
653 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 08:10:02 ] >>642 ?
654 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 08:26:31 ] pc12.2ch.net/test/read.cgi/tech/1263824755/535 # [1] 授業単元:プログラミング # [2] 問題文(含コード&リンク): # まず次の内容のテキストファイルを準備せよ。 # (メモ帳で作成し、test02.txtという名前で保存すること) # # abc # 123 # def # 456 # ghi # 789 # jkl # 000 # # 次に、作成したテキストファイルから内容を読み出し、 # 各行の先頭に 01 02 03 というように番号を付加して # 画面に出力するプログラムを作成せよ。
655 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 08:38:03 ] >>654 % Prolog 'テキストファイルから内容を読み出し、各行の先頭に 01 02 03 というように番号を付加して画面に出力する' :- get_lines('test02.txt',L), '各行の先頭に 01 02 03 というように番号を付加して画面に出力する'(1,L). '各行の先頭に 01 02 03 というように番号を付加して画面に出力する'(_,[]) :- !. '各行の先頭に 01 02 03 というように番号を付加して画面に出力する'(N,[Line|R]) :- write_formatted_atom('%2d',[N],A), 空白を0に置換する(A,A2), write_formatted('%t %t\n',[A2,Line]), N2 is N + 1, '各行の先頭に 01 02 03 というように番号を付加して画面に出力する'(N2,R). 空白を0に置換する(A,A2) :- atom_chars(A,L), ならびの置換(' ','0',L,L2), atom_chars(A2,L2).
656 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 09:04:16 ] >>653 % Prolog ある述語の引数を表示する場合の一般解は :- ある述語(_引数), write_formatted('%t\n'm,[_引数]), fail. ある述語の引数を表示する場合の一般解は. でしょう。>>641 では同姓同名をきっちりと表示することをサボっています。 それでそのことをこの述語を利用するプログラマに注意するために変数の引数を 強制しています。こうして置けば、この述語をテストした時に ?- 学生番号または名前をもとに身長を調べる(藤原隆甫,_身長). _身長 = 177 という解を示してインタプリタが停止します。これがPrologプログラマをして 同姓同名への配慮が必要かどうか判断させる契機となるということです。
657 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 09:07:39 ] >>656 変な"m"が混入してしまいました。 write_formatted('%t\n'm,[_引数]), -> write_formatted('%t\n',[_引数]), です。
658 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 11:53:10 ] >>654 % Prolog 出題の元スレの覗いていたら、%02d というformat表記が出ていた。 % もしかしてと試みたら私のPrologでも同じ。これまでの私の人生は何だったんだwww % ということで、 'テキストファイルから内容を読み出し、各行の先頭に 01 02 03 というように番号を付加して画面に出力する' :- get_lines('test02.txt',L), '各行の先頭に 01 02 03 というように番号を付加して画面に出力する'(1,L). '各行の先頭に 01 02 03 というように番号を付加して画面に出力する'(_,[]) :- !. '各行の先頭に 01 02 03 というように番号を付加して画面に出力する'(N,[Line|R]) :- write_formatted('%02d %t\n',[N,Line]), N2 is N + 1, '各行の先頭に 01 02 03 というように番号を付加して画面に出力する'(N2,R).
659 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 12:19:44 ] >>644 % Prolog これも実はヘッドゼロサプライだったのだけれど、サボっていた。 % 直そうと見たら、スラッシュも落ちていた。修正。 '日付からデータを表示する。存在しない日はデータをNULLとして表示'(_日付下限,_日付上限) :- 日付からデータを表示する。存在しない日はデータをNULLとして表示(_日付下限), 日付連鎖(_日付下限,_日付), 日付からデータを表示する。存在しない日はデータをNULLとして表示(_日付), _日付=_日付上限. '日付からデータを表示する。存在しない日はデータをNULLとして表示'(_日付) :- _日付 = (_年/_月/_日), table(_日付,Data), write_formatted('%02d/%02d/%02d %t\n',[_年,_月,_日,Data]),!. '日付からデータを表示する。存在しない日はデータをNULLとして表示'(_日付) :- _日付 = ( _年/_月/_日), \+(table(_日付,Data)), write_formatted('%02d/%02d/%02d NULL\n',[_年,_月,_日]),!.
660 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 12:37:38 ] >>645 (>>644 ) % Prolog 日付連鎖は 日付連鎖(_日付,_今日) :- var(_日付),前日・今日(_日付,_今日). 日付連鎖(_日付,_今日) :- var(_日付),前日・今日(_前日,_今日),日付連鎖(_日付,_前日). 日付連鎖(_今日,_日付) :- var(_日付),前日・今日(_今日,_日付). 日付連鎖(_今日,_日付) :- var(_日付),前日・今日(_今日,_翌日),日付連鎖(_翌日,_日付). 前日・今日(_前日の年/12/31,_年/1/1) :- 一つ違い(_前日の年,_年),!. 前日・今日(_年/2/29,_年/3/1) :- うるう年(_年),!. 前日・今日(_年/2/28,_年/3/1) :- not(うるう年(_年)),!. 前日・今日(_年/_前月/30,_年/_月/1) :- 一つ違い(_前月,_月),member(_前月,[4,6,9,11]),!. 前日・今日(_年/_前月/31,_年/_月/1) :- 一つ違い(_前月,_月),member(_前月,[1,3,5,7,8,10,12]),!. 前日・今日(_年/_月/_前日,_年/_月/_日) :- 一つ違い(_前日,_日),!. 一つ違い(M,N) :- integer(M),!,N is M + 1 . 一つ違い(M,N) :- integer(N),!,M is N - 1 . うるう年(_年) :- 0 is _年 mod 400,!. うるう年(_年) :- 0 is _年 mod 100,!,fail. うるう年(_年) :- 0 is _年 mod 4,!. うるう年(_年) :- not(0 is _年 mod 4),fail.
661 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 14:16:05 ] # t_date 1_dekidaka a_dekidaka # 2010/01/28 1000 1500 # 2010/01/29 1026 0 # 2010/01/30 0 3400 # みたいな感じなんですけど。
662 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 14:18:07 ] >>661 上半分がちぎれてしまった。 pc11.2ch.net/test/read.cgi/db/1252492296/502 # すいませんが、SQLを教えてください MySQL 5.1.35です # 日付テーブル dailytbl # t_date 西暦日付 # # 出来高aテーブル # code 1,2,3〜 # a_date 西暦日付 # dekidaka # # 出来高bテーブル # code a,b,c〜 # a_date 西暦日付 # dekidaka # # 日付テーブルのt_dateに沿って出来高を表示させたいです。 # 出来高aテーブルにしても、出来高bテーブルにしても出来高のない日が # ありますが、出来高のない日はdekidakaを0として表示させたい # # イメージとしては # 日付テーブル 出来高aテーブル 出来高bテーブル # t_date 1_dekidaka a_dekidaka # 2010/01/28 1000 1500 # 2010/01/29 1026 0 # 2010/01/30 0 3400 # 2010/01/31 0 5500 # みたいな感じなんですけど。
663 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 14:22:31 ] >>662 % Prolog 日付テーブルのt_dateに沿って出来高を表示する :- write('日付テーブル 出来高aテーブル 出来高bテーブル\n'), 日付テーブル(_西暦日付), 出来高aテーブルの取得(_西暦日付,_出来高a), 出来高bテーブルの取得(_西暦日付,_出来高b), write_formatted('%t %10d %10d\n',[_西暦日付,_出来高a,_出来高b]), fail. 日付テーブルのt_dateに沿って出来高を表示する. 出来高aテーブルの取得(_西暦日付,_出来高a) :- 出来高aテーブル(_西暦日付,_出来高a),!. 出来高aテーブルの取得(_,0). 出来高bテーブルの取得(_西暦日付,_出来高b) :- 出来高bテーブル(_西暦日付,_出来高b),!. 出来高bテーブルの取得(_,0).
664 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 14:39:10 ] >>662 % Prolog 日付テーブルにそって常に全部表示するというのは現実味がない。 日付テーブルのt_dateに沿って出来高を表示する(_日付下限,_日付上限) :- write('日付テーブル 出来高aテーブル 出来高bテーブル\n'), 日付テーブル(_西暦日付), _西暦日付>=_日付下限, _西暦日付=<_日付上限, 出来高aテーブルの取得(_西暦日付,_出来高a), 出来高bテーブルの取得(_西暦日付,_出来高b), write_formatted('%t %10d %10d\n',[_西暦日付,_出来高a,_出来高b]), fail. 日付テーブルのt_dateに沿って出来高を表示する(_,_).
665 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 14:49:05 ] >>663 (>>662 ) % Prolog もう一つの表記法を示す。この表記法もread/1と同様このスレでは % 私は故意に使用しなかった。 日付テーブルのt_dateに沿って出来高を表示する :- write('日付テーブル 出来高aテーブル 出来高bテーブル\n'), ( 日付テーブル(_西暦日付), ( 出来高aテーブル(_西暦日付,_出来高a);\+(出来高aテーブル(_西暦日付,_)),_出来高a=0), ( 出来高bテーブル(_西暦日付,_出来高b);\+(出来高bテーブル(_西暦日付,_)),_出来高b=0), write_formatted('%t %10d %10d\n',[_西暦日付,_出来高a,_出来高b]), fail; true ).
666 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 17:09:19 ] pc12.2ch.net/test/read.cgi/tech/1248012902/850 # 【 課題 】‐出題内容‐ # Testプロジェクトのsrc直下にパッケージtest5を作成し、下記のテストプログラムを作成する。そして、TripTestをパスする実装を作成しなさい。 # <TripTestの説明> # 日本旅行(JapanTrip)とアメリカ旅行(AmericaTrip)それぞれの旅費を算出する機能を実装する。抽象クラスTripを作成すること。 # 日本旅行もアメリカ旅行も食費(1万円)と宿泊費(3万円)は全く同じ金額で変わらないものとする。 # それぞれの食費、宿泊費、交通費はそのまま金額が取得でき、旅費合計は食費と宿泊費と交通費を足したものである。 # # package test5; # # import static org.junit.Assert.*; # import org.junit.Test; # public class TripTest { # @Test // 旅費を算出するテストプログラム # public void testCost() throws Exception { # Trip jpTrip = new JapanTrip(); # assertEquals(10000, jpTrip.getFoodCost()); // 食費 # assertEquals(30000, jpTrip.getRoomCost()); // 宿泊費 # assertEquals(50000, jpTrip.getTravelCost()); // 交通費 # assertEquals(90000, jpTrip.getTotalCost()); // 旅費合計(食費+宿泊費+交通費) # Trip americaTrip = new AmericaTrip(); # assertEquals(10000, americaTrip.getFoodCost()); // 食費 # assertEquals(30000, americaTrip.getRoomCost()); // 宿泊費 # assertEquals(300000, americaTrip.getTravelCost()); // 交通費 # assertEquals(340000, americaTrip.getTotalCost()); // 旅費合計(食費+宿泊費+交通費) # } # }
667 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 17:34:26 ] >>666 % Prolog 旅費を算出するまでもない。 旅費(日本,食費,10000). 旅費(日本,宿泊費,30000). 旅費(日本,交通費,50000). 旅費(日本,合計,_旅費合計) :- 旅費(日本,食費,_食費), 旅費(日本,宿泊費,_宿泊費), 旅費(日本,交通費,_交通費), _旅費合計 is _食費 + _宿泊費 + _交通費. 旅費(アメリカ,食費,10000). 旅費(アメリカ,宿泊費,30000). 旅費(アメリカ,交通費,300000). 旅費(アメリカ,合計,_旅費合計) :- 旅費(アメリカ,食費,_食費), 旅費(アメリカ,宿泊費,_宿泊費), 旅費(アメリカ,交通費,_交通費), _旅費合計 is _食費 + _宿泊費 + _交通費.
668 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 18:30:28 ] # pc12.2ch.net/test/read.cgi/tech/1248012902/848 # 【 課題 】クラスの継承 rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/920.zip # 課題11-2 # オブジェクト指向型の特徴である多態性(ポリモーフィズム)を利用して # AnimalクラスのDogとCatからbarkメソッドを呼び出し、実行結果と同じメッセージが # 表示されるプログラムを作成しなさい。 # 【 Animalクラス仕様 】 # barkメソッドが宣言されている。(処理内容:「動物が吠えている」と表示する。) # # 【 Dogクラス仕様 】 # Animalクラスを継承。 # Animalクラスのbarkメソッドをオーバーライト(処理内容:「犬がワンワン吠えている!!」と表示する。) # # 【 Catクラス仕様 】 # Animalクラスを継承。 # Animalクラスのbarkメソッドをオーバーライト(処理内容:「猫がニャーニャー鳴く!!」と表示する。) # # 【 Kad11_2クラス 】 # Animalクラスの参照変数animal1を宣言し、参照先はAnimalオブジェクトとする。 # Animalクラスの参照変数animal2を宣言し、参照先はDogオブジェクトとする。 # Animalクラスの参照変数animal3を宣言し、参照先はCatオブジェクトとする。 # animal1、animal2、animal3のオブジェクトに対してbarkメソッドを実行する。
669 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 18:35:24 ] >>668 % Prolog 動物(猫,吠える) :- write('ニャーニャーと鳴く!!'),!. 動物(犬,吠える) :- write('ワンワン吠えている!!'),!. 動物(_,吠える) :- write('動物が吠えている').
670 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 18:46:29 ] >>668 % Prolog 主語が抜けた。 動物(猫,吠える) :- write('猫がニャーニャーと鳴く!!'),!. 動物(犬,吠える) :- write('犬がワンワン吠えている!!'),!. 動物(_,吠える) :- write('動物が吠えている').
671 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 20:13:24 ] >>668 % Prolog (その一) 課題11-3 得点表を入力した上で平均点を付加して一覧表示する :- write('入力人数は? >'),get_integer(_入力人数), 得点表入力(1,_入力人数,L), 得点表表示(L). 得点表入力(N,_入力人数,[]) :- N > _入力人数,!. 得点表入力(N,_入力人数,[[_名前,_得点ならび]|R]) :- write_formatted('%t人目 受験科目数 :',[N]),get_integer(_受験科目数), write('名前 :'),get_line(_名前), 科目別得点入力(_受験科目数,_得点ならび), N2 is N + 1, 得点表入力(N2,_入力人数,R). 科目別得点入力(3,[_国語,_数学,_英語]) :- write('国語 :'),get_integer(_国語), write('数学 :'),get_integer(_数学), write('英語 :'),get_integer(_英語),!. 科目別得点入力(5,[_国語,_数学,_英語,_社会,_理科]) :- write('国語 :'),get_integer(_国語), write('数学 :'),get_integer(_数学), write('英語 :'),get_integer(_英語), write('社会 :'),get_integer(_社会), write('理科 :'),get_integer(_理科),!.
672 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 20:16:10 ] >>668 % Prolog (その二) 課題11-3 得点表表示(L) :- 得点表見出し表示,得点表明細表示(L). 得点表見出し表示 :- write(' 国語 数学 英語 社会 理科 | 平均点\n'). 得点表明細表示([[_名前,[_国語,_数学,_英語]]|R]) :- _平均点 is (_国語+_数学+_英語) // 3, write_formatted('%t %t %t %t | %t\n',[_名前,_国語,_数学,_平均点]), 得点表明細表示(R),!. 得点表明細表示([[_名前,[_国語,_数学,_英語,_社会,_理科]]|R]) :- _平均点 is (_国語+_数学+_英語+_社会+_理科) // 5, write_formatted('%t %t %t %t %t %t | %t\n',[_名前,_国語,_数学,_英語,_社会,_理科,_平均点]), 得点表明細表示(R),!.
673 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 02:43:22 ] pc12.2ch.net/test/read.cgi/tech/1263824755/547 # [1] 情報処理応用 # [2] Fortranで, # # # 階乗 n! を計算する関数を作成し, # # 順列 # n個の異なるものからr個取り出して並べる。 # このときの順列の総数をnPrとあらわす。 # nPr=n(n-1)(n-2)・・・(n-r+1) # を計算する関数を作成し, # # 組み合わせ # 異なるn個からr個取り出して組を作る。 # このときの組合せの総数をnCrとあらわす。 # nCr = nPr/r! # を計算するプログラムを作成してください
674 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 02:45:56 ] pc12.2ch.net/test/read.cgi/tech/1263824755/549 # [1] 授業単元:プログラミング 1 # [2] 問題文(含コード&リンク): # 球の体積をもとめよ。
675 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 03:03:34 ] pc12.2ch.net/test/read.cgi/tech/1263824755/554 # [1] 授業単元:プログラミング 1 # [2] 問題文(含コード&リンク): # /************************* # ある二つの文字列str1,str2 の編集距離はつぎの3つの操作を行うことによりstr1をstr2 に変換するのに要する操作の最低回数である # ・ 1文字挿入する # ・ 1文字削除する # ・ 1文字を他の1文字に置き換える # たとえば str1="sport" はstr2="sort" に, 文字 'p' を削除することによりstr2 に変換できるため編集距離は 1 である # # str_n を文字列str の頭からn 番目までの部分列としm(i,j)をstr i とstr j の編集距離を表すものとする.m(i,j)とm(i+1,j),m(i,j+1),m(i+1,j+1)の間に成り立つ再帰式を記述しなさい # # この再帰式に基づき効率良く編集距離を計算するプログラムを2次元配列を利用して作成しなさい.ただし,関数m(i,j)はint型の編集距離を返り値とする. # ******************************/
676 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 03:06:10 ] pc12.2ch.net/test/read.cgi/tech/1263824755/548 # [1]C言語課題 # [2] コマンドラインに与えられた文字列が単数で自然数を表しているとして # 以下の例のように出力されるプログラムを作れ # 入力==>3 # 132 # 231 # 入力==>5 # 1304 # 2552 # 4031 # 入力==>10 # 136107 # 259084 # 480952 # 710631 # 入力==>20 # 13610150016 # 25914201711 # 48131918127 # 71218191384 # 11172014952 # 16001510631
677 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 03:19:32 ] pc12.2ch.net/test/read.cgi/tech/1263824755/551 # [1] 授業単元:プログラミング 1 # [2] 問題文(含コード&リンク): # 二つの数列の和によってできる数列を表示したい。
678 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 03:52:22 ] pc12.2ch.net/test/read.cgi/tech/1263824755/568 # [1]数値計算演習 # [2] 極座標で表される曲線 r(t)=sin^2(πt) θ(t)=α sin(πt^2) (0<=t<=1)でαを指定した時 # の曲線の長さと囲む面積の近似値を求め、π/4<=α<=πまで変化させる時、 # 面積/曲線の長さが最大になるαを推定する # 曲線上の代表点をとり隣接する点の間の距離の和で曲線の長さを近似。 # 面積は隣接する代表点と原点が作る三角形の面積の和で近似する。
679 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 03:57:07 ] >>677 % Prolog 二つの数列の和によってできる数列を表示する(L1,L2) :- 二つの数列の和によってできる数列(L1,L2,L), write_formatted('%t+%t=%t\n',[L1,L2,L3]). 二つの数列の和によってできる数列([],L,L) :- !. 二つの数列の和によってできる数列(L,[],L) :- !. 二つの数列の和によってできる数列([A|R1],[B|R2],[C|R3]) :- C is A + B, 二つの数列の和によってできる数列(R1,R2,R3).
680 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 04:16:37 ] >>674 % Prolog 積分で、の意味かな。とりあえず球の体積の公式で。 球の体積(_半径,_球の体積) :- _球の体積 is ( 4 / 3 ) * pi * _半径 ^ 3.
681 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 06:16:37 ] >>673 階乗(M,N,1) :- M > N,!. 階乗(M,N,X) :- M2 is M + 1, 階乗(M2,N,Y), X is M * Y. 階乗(0,1) :- !. 階乗(1,1) :- !. 階乗(N,X) :- N2 is N - 1, 階乗(N2,Y), X is N * Y, asserta((階乗(N,X) :- (!))). nPr(N,R,X) :- M is N - R + 1, 階乗(M,N,X). nCr(N,R,X) :- U is N - R + 1, 階乗(U,N,K1), 階乗(R,K2), X is K1 // K2.
682 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 10:27:50 ] >>677 使用言語:J A=:+:>:i.10 A 2 4 6 8 10 12 14 16 18 20 B=:2^i.10 B 1 2 4 8 16 32 64 128 256 512 A + B 3 6 10 16 26 44 78 144 274 532
683 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 10:54:30 ] >>679 (>>677 ) 訂正 % Prolog L3とするべきところがLになっていた。 二つの数列の和によってできる数列を表示する(L1,L2) :- 二つの数列の和によってできる数列(L1,L2,L3), write_formatted('%t+%t=%t\n',[L1,L2,L3]). 二つの数列の和によってできる数列([],L,L) :- !. 二つの数列の和によってできる数列(L,[],L) :- !. 二つの数列の和によってできる数列([A|R1],[B|R2],[C|R3]) :- C is A + B, 二つの数列の和によってできる数列(R1,R2,R3). % C/C++の宿題スレで採りあげやすい出題がなかったので一日完全休養しました。
684 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 12:53:34 ] >>633 使用言語:J f=: dyad def '-_1^+./y E. x' 'abaabab' f 'aab' 1 'abaabab' f 'abb' _1
685 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 13:13:26 ] >>625 使用言語:J f=: monad def '+/>:I.2|>:i.<:y' f 10 25
686 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 16:22:41 ] pc12.2ch.net/test/read.cgi/tech/1263824755/602 # [1] 授業単元:C言語 # [2] 問題文(含コード&リンク): # #include <stdio.h> # int main(void){ # int a=0,k; # for (k=0;k<100;k++){a++; # if(a%5==0&&a%9==0)printf("A\n"); # else if(a%5==0)printf("B\n"); # else if(a%9==0)printf("C\n"); # else printf("%d\n",a); # }return 0;} # この処理のプログラムをスペース、改行を含み140字以内で書き直したい。 % % 別の言語で同じ意味のプログラムを140字以内でということにしましょう。
687 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 17:18:38 ] >>686 使用言語:J smoutput&>((0 i.~45 5 9|]){(;/'ABC'),<)"0>:i.100
688 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 19:06:48 ] >>686 % Prolog main:-for(1,N,100),(q(N),u(N)->A='A';q(N)->A='B';u(N)->A='C';A=N),write(A),nl,N =100. q(N):-0 is N mod 5. u(N):-0 is N mod 9.
689 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 21:50:42 ] >>686 使用言語:R a=b=1:100;a[b%%5==0]="B";a[b%%9==0]="C";a[b%%45==0]="A";write(a,"")
690 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 22:12:19 ] >>686 使用言語:Lua for i=1,100 do print(({i,"B","C","A"})[2-i*i*i*i%5+2*0^(i%9)])end
691 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 01:14:32 ] >>686 % Prolog main:-for(1,N,100),(0=:=N mod 5,0=:=N mod 9->A='A';0=:=N mod 5->A='B';0=:=N mod 9->A='C';A=N),write(A),nl,N=100.
692 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 05:34:48 ] >>687 仮に45は反則ということにすると、どうなりますか?
693 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 07:05:25 ] >>692 >>686 使用言語:J smoutput&>((0 i.~[:(,~+/)5 9|]){(;/'ABC'),<)"0>:i.100
694 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 10:26:37 ] >>693 ありがとうございます。
695 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 12:08:24 ] >>686 使用言語:maxima f(a,b):=1-signum(mod(a,b));for i thru 100 do print([i,"B","C","A"][f(i,5)+f(i,9)*2+1]);
696 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 14:34:00 ] pc12.2ch.net/test/read.cgi/tech/1263824755/555 # [1]C言語とプログラミング # [2] キーボードから3つの整数を受け取り大きさの小さい順に出力するプログラムを作りなさい。 # 但しmain関数内ではint変数一つだけが使えるものとします。またmain関数の再帰呼び出しも # 出来ません。(main関数の引数、argc,argvをint変数として使用することも勿論禁止します) # main関数のみで構成されるプログラムとして下さい。 # 入力される数は1から10までの範囲にあることを常にチェックし、それ以外の入力の場合は # 再入力を促して下さい。
697 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 16:00:22 ] >>696 % Prolog % 述語make/0 で 述語main/0 のソースプログラムを生成する。 nojiriko.asia/prolog/c134_555.html
698 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 16:38:21 ] >>697 再帰は禁止でしたね。うっかりしました。 再入力はrepeat/0を使えば書けますが、repeat自体が再帰そのものですから、 あまり意味がないですね。 Prologでは>>697 のmainのような膨大な冗長述語の定義は稀ではないので、 ここでは題意から離れて、その述語の生成に焦点を当ててみました。
699 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 22:56:39 ] >>696 // F# [<EntryPoint>] let main _ = "1〜10の数字を3つ入力:" |> Seq.unfold (printf "%s" >> System.Console.ReadLine >> System.Int32.TryParse >> function | true, x when 1 <= x && x <= 10 -> Some(Some(x), "次を入力:") | _ -> Some(None, "1〜10の数字を再入力:")) |> Seq.choose id |> Seq.take 3 |> Seq.sort |> Seq.iter (printf "%d ") 0
700 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 02:10:11 ] >>696 使用言語:J エラーチェックに苦労してなんとも悲惨なことになってしまった。データnをn番目の素数で表して 変数aに掛けていき、最後に因数分解(ここで勝手にソートしてくれた)して素数からnに変換。 f=: monad define a=.1 label_b. smoutput '(1-10)?' select. ".(1!:1)1 case. 1 do. a=.a*p:1 case. 2 do. a=.a*p:2 case. 3 do. a=.a*p:3 case. 4 do. a=.a*p:4 case. 5 do. a=.a*p:5 case. 6 do. a=.a*p:6 case. 7 do. a=.a*p:7 case. 8 do. a=.a*p:8 case. 9 do. a=.a*p:9 case. 10 do. a=.a*p:10 case. do. goto_b. end. label_c. smoutput '(1-10)?' select. ".(1!:1)1 case. 1 do. a=.a*p:1 case. 2 do. a=.a*p:2 case. 3 do. a=.a*p:3 case. 4 do. a=.a*p:4 case. 5 do. a=.a*p:5 case. 6 do. a=.a*p:6 case. 7 do. a=.a*p:7 case. 8 do. a=.a*p:8 case. 9 do. a=.a*p:9 case. 10 do. a=.a*p:10 case. do. goto_c. end. label_d. smoutput '(1-10)?' select. ".(1!:1)1 case. 1 do. a=.a*p:1 case. 2 do. a=.a*p:2 case. 3 do. a=.a*p:3 case. 4 do. a=.a*p:4 case. 5 do. a=.a*p:5 case. 6 do. a=.a*p:6 case. 7 do. a=.a*p:7 case. 8 do. a=.a*p:8 case. 9 do. a=.a*p:9 case. 10 do. a=.a*p:10 case. do. goto_d. end. smoutput _1 p:q:a )
701 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 06:48:19 ] pc12.2ch.net/test/read.cgi/tech/1248012902/868 # 【 課題 】GUIを使った簡易テキストエディターのプログラムです。 # --------------------------------------------------------------------------- # テキストを入力してください: I am a student! # フォント変換後のテキスト: I am a student! # -------------------------------------------------------------------------- # 上のような形で、JTextField オブジェクト内に文字を入力した後、 # その下に“Helvetica”, Bold, 24のフォントで変換した文字を表示させたいのですが。 # 【 形態 】1. Javaアプリケーション(main()で開始) # 【 GUI 】JTextFieldとJLabelオブジェクトを使用します # 【 期限 】2/14(水) 夜まで # 【 補足 】Java初心者でよく分かりません。よろしくお願いします。
702 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:40:36 ] >>701 % Prolog SWI-PrologにはXPCEというグラフィックライブラリが % 付いているのですが、私はうまく使うことができずにいます。 % それでこの課題はパス。
703 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:47:43 ] >>702 >>698 なんかも、これはPrologではできません!とした方が親切なんじゃないの? 多少とも、Prologを知らしめたいという願いがあるのなら。
704 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 11:48:09 ] できるのにできないって言うのはただのネガキャンにしかなんねえだろ
705 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 15:05:27 ] 大域変数を標準に取り込むかは現在ISOの作業グループで検討中。 元々の出題の意図は「ひとつの変数だけ使って」ということでしょうから、 代入できない論理変数ではできるはずもない。大域変数を使用できたとしても、 少なくとも一つ論理変数が必要でこれは題意に沿うかどうか。 それで、冗談のような方向へ逃げてみた。 もっとも元スレを読み直してみたら、私のと同じ発想の回答がずっと前に 書き込まれていた。
706 名前:705 mailto:sage [2010/02/13(土) 15:13:25 ] 代入できない論理変数 --> 破壊代入できない論理変数 に訂正。 大域変数については、実は現在ほとんどの処理系がサポートしています。 しかし、私はこのスレで使うつもりはありません。
707 名前:705 mailto:sage [2010/02/13(土) 15:18:17 ] >>705 またまた訂正。元スレを読み直したら --> 出題元スレを読み直したら
708 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:24:16 ] >>701 // F# open System.Windows.Forms open System.Drawing type TinyEditorForm() = inherit Form(Text = "TinyEditor", Width = 450, Height = 150) let labelInput = new Label(Text = "テキストを入力してください:", Left = 10, Top = 10, Width = 140) let textboxInput = new TextBox(Left = 160, Top = 10, Width = 240) let labelOutput = new Label(Text = "フォント変換後のテキスト:", Left = 10, Top = 50, Width = 140) let textboxOutput = new TextBox(ReadOnly = true, Left = 160, Top = 50, Width = 240, Height = 50, Font = new Font("Helvetica", 24.f, FontStyle.Bold)) do textboxInput.TextChanged |> Event.map (fun _ -> textboxInput.Text) |> Event.add (fun text -> textboxOutput.Text <- text) base.Controls.AddRange [|labelInput; textboxInput; labelOutput; textboxOutput|] [<System.STAThread>] do new TinyEditorForm() |> Application.Run
709 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 05:33:41 ] pc12.2ch.net/test/read.cgi/tech/1258320456/104 # 以下の5行の文字列のいずれかをランダムに返すプログラムを書きなさい # あいうえお # かきくけこ # さしすせそ # たちつてと # なにぬねの
710 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 07:31:37 ] >>709 使用言語:J ] a=:5 5$ucp'あいうえおかきくけこさしすせそたちつてとなにぬねの' あいうえお かきくけこ さしすせそ たちつてと なにぬねの f=:monad def '(1?(#y)){y' f a あいうえお f a たちつてと
711 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 08:05:21 ] pc11.2ch.net/test/read.cgi/db/1252492296/521 # 販売集計処理について教えてください。 # 商品テーブル # 商品名 販売本数 # ─── ──── # お菓子 # お弁当 # 飲み物 # # 販売履歴テーブル # 商品名 # ─── # 飲み物 # お菓子 # お弁当 # お菓子 # お菓子 # 飲み物 # お弁当 # お弁当 # # 商品テーブルの各商品が、販売履歴テーブルに何件ずつあるかを集計し、 # 商品テーブルの販売本数に記録させたいと思っております(日次処理)。
712 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 08:27:31 ] >>710 % Prolog '5行の文字列のいずれかをランダムに返す'(_文字列) :- findall(S,文字列(S),L), N is random mod 5 + 1, list_nth(N,L,_文字列). 文字列(あいうえお). 文字列(かきくけこ). 文字列(さしすせそ). 文字列(たちつてと). 文字列(なにぬねの).
713 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 08:43:03 ] >>710 % Prolog 非決定性にするには '5行の文字列のいずれかをランダムに返す'(_文字列) :- findall(S,文字列(S),L), '5行の文字列のいずれかをランダムに返す'(L,_文字列). '5行の文字列のいずれかをランダムに返す'(L,_文字列) :- N is random mod 5 + 1, list_nth(N,L,_文字列). '5行の文字列のいずれかをランダムに返す'(L,_文字列) :- '5行の文字列のいずれかをランダムに返す'(L,_文字列). 文字列(あいうえお). 文字列(かきくけこ). 文字列(さしすせそ). 文字列(たちつてと). 文字列(なにぬねの). % ただし、 % ?- ..<Aゾーン>.. ,'5行の文字列のいずれかをランダムに返す'(_文字列), ..<Bゾーン>.. ,fail. % のように使うと<Bゾーン>の記述によっては<Aゾーン>には決してバックトラックしないことに注意。
714 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 08:49:35 ] >>713 % Prolog % <Aゾーン>にバックトラックさせるためには例えば、 '5行の文字列のいずれかをランダムに返す'(L,_文字列) :- N is random mod 5 + 1, list_nth(N,L,なにぬねの),!. '5行の文字列のいずれかをランダムに返す'(L,_文字列) :- N is random mod 5 + 1, list_nth(N,L,_文字列). '5行の文字列のいずれかをランダムに返す'(L,_文字列) :- '5行の文字列のいずれかをランダムに返す'(L,_文字列). % これで一度なにぬねのが利用された後はこの述語は非決定性の性質を一旦失う。
715 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 09:26:14 ] >>711 % Prolog 販売履歴(飲み物). 販売履歴(お菓子). 販売履歴(お弁当). 販売履歴(お菓子). 販売履歴(お菓子). 販売履歴(飲み物). 販売履歴(お弁当). 販売履歴(お弁当). 販売集計処理 :- 一意な商品名ならびを得る(L), 商品テーブルに追加(L). 一意な商品名ならびを得る(L) :- setof(_商品名,販売履歴(_商品名),L). 商品テーブルに追加([]) :- !. 商品テーブルに追加([_商品名|R]) :- count(販売履歴(_商品名),_販売本数), assertz(商品(_商品名,_販売本数)), 商品テーブルに追加(R).
716 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 21:09:11 ] >>711 // F# let countCommodities cs hs = let cnt = hs |> Seq.countBy id |> Map.ofSeq List.map (fun c -> (c, defaultArg (Map.tryFind c cnt) 0)) cs let commodities = ["お菓子"; "お弁当"; "飲み物"] let salesHistory = ["飲み物"; "お菓子"; "お弁当"; "お菓子"; "お菓子"; "飲み物"; "お弁当"; "お弁当"] countCommodities commodities salesHistory
717 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:21:13 ] >>701 使用言語:なでしこ 文字スタイルの指定方法はわかりませんでした。 母艦は「フォント変換表示」 「テキストを入力してください」と表示 入力欄とはエディタ その幅は200 「フォント変換後のテキスト」と表示 出力欄とはラベル そのテキストは「」 その幅は200 その文字書体は「Helvetica」 その文字サイズは24 入力欄を変更した時は〜出力欄のテキストは入力欄のテキスト
718 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 12:06:38 ] pc12.2ch.net/test/read.cgi/tech/1263824755/654 # 【質問テンプレ】 # [1] 授業単元:データ構造とアルゴリズム # [2] 問題文(含コード&リンク): # 生徒数1000人分の学力テスト(五教科)の得点データが有る。ここで、任意の生徒Aと # 得点の傾向が一番近い生徒の番号を高速で抽出できるようデータ構造を組みなさい。 # (合計点が近い、ではなく、各教科の得点の傾向が大事のようです。) # # 生徒のデータはstruct seito{int tensuu[5];};こんな感じです。 # 単に全部検索して得点差を計算したのを提出したらダメと言われました。 # こういう問題を解く定石のようなものがあるのでしょうか・・・ # 先輩方、よろしくお願いします。
719 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 21:26:13 ] >>718 イメージとしてはレーダーチャートの五角形のかたちを「傾向」として その重心を「近さ」のものさしにしたいけど、さっとコードにする能力はない。
720 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 21:41:59 ] 最近傍探索を高速にできるアルゴリズムかな?kd木?
721 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 21:47:22 ] それか、「各教科の得点の傾向」を「点数の比率」と受け取るなら コサイン尺度を使って普通に最近傍探索でもいいかも
722 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 02:56:24 ] # 公認野球規則二・〇四には、 # # 「ボール」 ストライクゾーンを通過しなかった投球、または地面に # 触れた投球で、いずれも打者が打たなかったものである。 # # とある。この定義をプログラムとして表現しなさい。
723 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 06:49:49 ] pc12.2ch.net/test/read.cgi/tech/1263824755/683 # [1] 授業単元:プログラミング # [2] 問題文(含コード&リンク): ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10530.zip # ポーカープログラム # # 1,二つのクラス(Card,Deck)が与えられていて、 # game1.hとgame1.cppのプラグラムを書け。 # このプログラムはデッキから5枚配る事を1回とし、 # その中に何回ペアまたはフラッシュ(同じ手札に同じマークが5枚揃う事)が # あるかの10000回の統計であり、以下を表示させること # # 何回の統計か # そのうち何個の手札がペアを持つか # そのうち何個の手札がフラッシュを持つか # ペアは全体の何%か # フラッシュは全体の何%か # # 無作為化する為に以下を必ず含める事 # stand(unsigned)time(NULL); # # #2,新しいクラスhand(hand.hとhand.cpp)と、これを実行させる為の # game2.hとgame2.cppを書け。 # これはカードの配布、ペア・フラッシュの確認、そしてデッキにカードを戻す為の # プログラムである。
724 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 07:25:21 ] >>722 % Prolog ボール(X) :- 投球(X), \+(通過した(X,ストライクゾーン)), \+(打った(打者,X)). ボール(X) :- 投球(X), 触れた(X,地面), \+(打った(打者,X)).
725 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 08:45:55 ] >>722 % Prolog ボール(公認野球規則二・〇四,X) :- 'ストライクゾーンを通過しなかった投球、または地面に触れた投球で、いずれも打者が打たなかったものである。'(X).
726 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 08:47:35 ] >>722 % Prolog % Prolog 公認野球規則(二・〇四,ボール,X) :- 'ストライクゾーンを通過しなかった投球、または地面に触れた投球で、いずれも打者が打たなかったものである。'(X).
727 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 16:31:33 ] >>723 % Prolog 一枚のカードを作る/2 や トランプのようにならびを切る/4 は % nojiriko.asia/prolog/c134_683.html 参照 ペアまたはフラッシュの出現度数(_回数,_ペアの度数,_フラッシュの度数) :- findsum([M1,M2],(for(1,N,_回数),トランプの準備([A,B,C,D,E|R]),役([A,B,C,D,E],M1,M2)),[_ペアの度数,_フラッシュの度数]). 役(L,1,0) :- sort(L,L1),ペア(L1),!. 役([A|R],0,1) :- sub_atom(A,1,1,_,_種類),フラッシュ(_種類,R),!. ペア([A,B]) :- sub_atom(A,0,1,_,C),sub_atom(B,0,1,_,C),!. ペア([A,B,C|R]) :- sub_atom(A,0,1,_,E),sub_atom(B,0,1,_,E),sub_atom(C,0,1,_,E),ペア(R),!. ペア([A,B,C|R]) :- sub_atom(A,0,1,_,E),sub_atom(B,0,1,_,E),\+(sub_atom(C,0,1,_,E)),!. ペア([A|R]) :- ペア(R). フラッシュ(_,[]) :- !. フラッシュ(A,[B|R]) :- sub_atom(B,1,1,_,A),フラッシュ(A,R). トランプの準備(X) :- findall(U,(for(1,N,52),一枚のカードを作る(N,U)),_整列したカード), トランプを切るようにならびを切る(41,53,_整列したカード,X),!.
728 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 16:48:06 ] >>727 (>>723 ) % Prolog ペア度数の数え方ですが、ワンペアを1 ツーペアを2 と勘定するなら % ここでは採用していないがスリーカーズを3 フォーカーズを4と数えるなどもあるかもしれない。 役(L,N,0) :- sort(L,L1),ペア(L1,0,N),\+(N=0),!. 役([A|R],0,1) :- sub_atom(A,1,1,_,_種類),フラッシュ(_種類,R),!. ペア([],N,N) :- !. ペア([A,B],N1,N) :- sub_atom(A,0,1,_,C),sub_atom(B,0,1,_,C),N is N1 + 1,!. ペア([A,B,C|R],N1,N) :- sub_atom(A,0,1,_,E),sub_atom(B,0,1,_,E),sub_atom(C,0,1,_,E),ペア(R,N1,N),!. ペア([A,B,C|R],N1,N) :- sub_atom(A,0,1,_,E),sub_atom(B,0,1,_,E),\+(sub_atom(C,0,1,_,E)),N2 is N1 + 1,ペア([C|R],N2,N),!. ペア([A|R],N1,N) :- ペア(R,N1,N).
729 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:53:46 ] # 公開された日本最大の競馬情報データベースjbisのサイトで # ディープインパクトの五代血統表は # www.jbis.or.jp/horse/0000742976/pedigree/ を検索することによって # 得られます。このサイトを利用し、これを起点にして、 # 父系(父親の父親の父親・・・と遡る)20代前の大種牡馬Eclipseまで列記する # プログラムを作りなさい。
730 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 05:14:30 ] >>729 % Prolog jbis/2 の定義を長くなるのでここでは省略して。 父系の収集(_目標馬,_五代血統書,X) :- 五代血統書に於いて父系は最初の5要素以内に現れる(_目標馬,_五代血統表,X),!. 父系の収集(_目標馬,[_一代父,_二代父,_三代父,_四代父,_五代父|_],[_一代父,_二代父,_三代父,_四代父,_五代父|R]) :- jbis(_五代父,_五代遡った五代血統表), 父系の収集(_目標馬,_五代遡った五代血統表,R). 五代血統書に於いて父系は最初の5要素以内に現れる(_目標馬,_五代血統表,X) :- append(L1,[_目標馬|_],_五代血統書), length(L1,N), N < 5, append(L1,[_目標馬],X),!.
731 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 05:27:25 ] >>730 (>>729 ) % Prolog jbis/2 の定義を書くと長くなるのでここでは省略して。
732 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 05:44:54 ] >>730 実はこんなに単純ではない。 最終的に五代遡らない内に牝馬が現れてしまうことがある。 父系に目標馬が存在しなかった場合だ。このことは、 五代血統表は牡馬、牝馬の区別ができるための情報を 持つ必要があることを意味する。これがめんどうなら jbis/2に於いて牝馬が現れたら、それ以降の情報を 切り捨ててしまう方法もある。これだと五代血統表と 名乗ることはできず「_五代父系ならび」とでもなるが。
733 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 06:11:28 ] >>732 (>>729 ) % Prolog 理屈の上では、三頭の始祖馬が出てきたら、とすればそれで良さそう % ですが、実際には血統不詳で切れている血統表も存在するからこれでは済まない。 父系の収集(_目標馬,_五代血統表,X) :- member(_始祖馬,['Byerley Turk','Darley Arabian','Godolphin Arabian']), append(L1,[_始祖馬|_],_五代血統表), length(L1,N), N < 5, \+(member(_目標馬,L1)), !,fail. 父系の収集(_目標馬,_五代血統書,X) :- 五代血統書に於いて父系は最初の5要素以内に現れる(_目標馬,_五代血統表,X),!. 父系の収集(_目標馬,[_一代父,_二代父,_三代父,_四代父,_五代父|_],[_一代父,_二代父,_三代父,_四代父,_五代父|R]) :- jbis(_五代父,_五代遡った五代血統表), 父系の収集(_目標馬,_五代遡った五代血統表,R).
734 名前:デフォルトの名無しさん [2010/02/18(木) 11:19:38 ] 父系でも血統不詳なんてあるの?
735 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 15:01:57 ] >>734 データベースがある程度完備していればない。だから>>733 は間違い。 Eclipseの時代まで遡ると種牡馬欄が空欄で母系だけ3-4代伸びている場合が あるのだけれど、これは何だろう。
736 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:04:59 ] pc11.2ch.net/test/read.cgi/db/1252492296/545 # ・データ # ■Relationテーブル # TaskNo RelationTaskNo # 1 2 # 2 3 # 2 4 # 4 5 # : : # # 上記はタスクと、そのタスクに関連するタスクのNoを保持しているテーブルです。 # このようなテーブルから、指定したTaskNoに関連するタスクを取得して、 # その関連タスクにまた関連するタスクを…といった形でデータを取得したいのです。 # 以前SQLServerで似たような結果を取得した際は # WITH RELATIONS (TaskNo,RelationTaskNo) # AS # (SELECT TaskNo,RelationTaskNo FROM Relation WHERE TaskNo = 取得したい番号 # UNION ALL # SELECT R.TaskNo,R.RelationTaskNo # FROM Relation AS R INNER JOIN RELATIONS AS CTE ON R.RelationTaskNo = CTE.TaskNo) # SELECT * FROM RELATIONS # (当時の環境が手元にないため構文が微妙に間違っているかも…) # どなたかご存じだったら知恵を貸してください。
737 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 09:59:16 ] >>736 % Prolog 'RelationTaskNoS'(TaskNo,[TaskNo|R]) :- 'Relation'(TaskNo,RelationTaskNo), 'RelationTaskNoS(RelationTaskNo,R). 'RelationTaskNoS'(TaskNo,[TaskNo]).
738 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 12:54:03 ] >>729 % Prolog jbis/2 の定義は nojiriko.asia/prolog/sonota_729.html を参照してください。
739 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 16:10:29 ] pc12.2ch.net/test/read.cgi/tech/1263824755/713 # HPはどのページも3クリック以内でたどり着けるのが良いとされています。 # さて問題です。どのページからも、すべてのページへこの条件を満たすようにするには # 各ページにリンクはいくつ必要でしょうか。 # link(n)をページnのリンク数としたとき min { link(n) } を決定するという問題です。 # ページ数は、1000から1万の任意の値が与えられる物とします。
740 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 20:46:28 ] >>739 // F# // click : 最大クリック数、page : 全ページ数 let minLink click page = Seq.initInfinite id |> Seq.find (fun x -> List.sumBy (pown x) [0 .. click] >= page)
741 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 23:11:30 ] >>729 // F# open System.Text.RegularExpressions let paternal last = use client = new System.Net.WebClient() let rec paternal' url = seq { let page = "www.jbis.or.jp " + url + "pedigree/" |> client.DownloadString let firstRow = Regex.Match(page, @"<tr>(.+?)</tr>", RegexOptions.Singleline).Groups.[1].Value let horses = Regex.Matches(firstRow, @"<(?:td|th).*?><a href=""(.+?)"">(.+?)</a>") |> Seq.cast<Match> |> Seq.map (fun m -> (m.Groups.[1].Value, m.Groups.[2].Value)) |> Seq.cache yield! Seq.map snd horses yield! Seq.nth (Seq.length horses - 1) horses |> fst |> paternal' } let horses = paternal' "/horse/0000742976/" |> Seq.cache Seq.take (Seq.findIndex ((=) last) horses + 1) horses paternal "Eclipse" |> Seq.iter (printfn "%s")
742 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 08:23:18 ] # 以下は「中世の秋」ホイジンガ/堀越孝一訳(中公文庫による)の冒頭ちかくの段落です。 # ここにあらわれる文章をプログラム言語で書き換えなさい。 # # 夏と冬の対照は、わたしたちの経験からはとても考えられないほど強烈だったが、 # 光と闇、静けさと騒がしさとの対照もまた、そうだったのである。現在、都市に住む # 人びとは、真の暗闇、真の静寂を知らない。ただひとつまたたく灯、遠い一瞬の叫ぶ # 声がどんな感じのものかを知らない。
743 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 15:08:26 ] pc12.2ch.net/test/read.cgi/tech/1255277760/82 # [1] 授業単元: # [2] 問題文(含コード&リンク): # # 一次方程式y=a*x+bにおいて、A[x1,y1]とB[x2,y2]が与えられた時、 # 方程式の係数a,bを求めよ。 # x1 y1: 450 454.4 # x2 y2: 452 454.8 # y=0.2*x+364.4
744 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 16:33:23 ] >>743 使用言語:J x1=:450 y1=:454.4 x2=:452 y2=:454.8 (y1,y2)%.2 2$x1,1,x2,1 0.2 364.4
745 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 18:35:05 ] >>743 % Prolog '一次方程式y=ax+bの二点[x1,y1][x2,y2]から係数a,bを求める'(X1,Y1,X2,Y2,A,B) :- A is (Y1 - Y2) / (X1 - X2), B is Y1 - (A * X1).
746 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 21:27:49 ] >>709 使用言語:Clojure user=> (def A ["あいうえお","かきくけこ","さしすせそ","たちつてと","なにむねの"]) #'user/A user=> (defn f [x] (x (int(* (Math/random)(.length x))))) #'user/f user=> (f A) "たちつてと" user=> (f A) "かきくけこ"
747 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 06:21:56 ] >>742 % Prolog 第二節目は # 人びとは、真の暗闇、真の静寂を知らない。ただひとつまたたく灯、遠い一瞬の叫ぶ # 声がどんな感じのものかを知らない。 知らない(人びと,_何かを) :- 知らない(_何かを). 知らない(_暗闇) :- 真の暗闇(_暗闇). 知らない(_静寂) :- 真の静寂(_静寂). 知らない(人びと,_何かの,_感じ) :- 感じ(_何かの,_感じ). 感じ(_またたく灯) :- またたく灯(_またたく灯), ただひとつ(_またたく灯). 感じ(_叫ぶ声) :- 叫ぶ声(_叫ぶ声), 遠い(_叫ぶ声), 一瞬の(_叫ぶ声).
748 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 20:17:19 ] pc12.2ch.net/test/read.cgi/tech/1263824755/746 # [1] 授業単元: # UNIX C Programming # [2] 問題文(含コード&リンク): # ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10541.txt # # 下記のコードはUnixコマンドのmoreの低水準バージョンである。 # このmoreにundoの機能を付加しターミナルで使えるようにしたい。 # 例:ファイルの中を'Enter'で1行進み、'UNDO'で1行戻る。 # 'Enter'で1行進み、' '(Space)で1ページ進んだ後、'UNDO'で1ページ元に戻る。 # # 一案として、/dev/ttyからのinputをarrayの中に残しておき、それを元に作業を一つ戻すことが考えられる。 # 下記のコードはmoreの基本的な機能である、’Enter’で一行前進・’ ’(Space)で一ページ前進を既に盛り込んでいる。