- 1 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 23:15:02 ]
- 【質問者へ】
回答者の便宜のため、以下の注意事項を遵守してください。 ・質問は【課題提示用テンプレ】を利用してください。 ・問題文は、出題されたまま全文を書いてください。 ・数学問題は「○×法でせよ」だけでなく、その数式、前提条件も説明してください。 ・JavaScriptは板違い、Web制作板をご利用ください。 ・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。 ・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。 ・回答されたら動作報告を必ずしてください。 ・課題文が長い時、添付ファイルがある時はこちらのアップローダーを使うと便利です。 ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/main.htm 【課題提示用テンプレ】 【 課題 】与えられた課題文をそのまま書きます。 《必須》 【 形態 】1. Javaアプリケーション(main()で開始)/2. Applet/3. Servlet/ 4. 携帯(開発環境のver.必須)/5. その他(明記のこと) 《必ず選択》 【 GUI 】1. AWTのみ/2. Swing/3. SWT/4. 制限なし/ 5. その他(明記すること) 《GUIの課題の場合必ず選択》 【 期限 】提出期限、解答希望日を書きます。「できるだけ早く」はNG。 《必須》 【 Ver 】コンソールでjava -versionを実行し、その結果を貼ります。 《必須》 【 用語 】数学用語、専門用語の意味、説明を書きます。 《あれば必須》 【 補足 】課題について自分なりに補足する事、何か思う事があれば書きます。 丸投げでない場合は、途中までのソースとその経過報告、 質問点、疑問点を書きます(なるべく丸投げにしてください)。 【回答プログラムの掲載場所】 Java質問スレWiki ttp://www.wikiroom.com/java/ ソースポストネット ttp://sourcepost.sytes.net/ ろだ2 ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/main.htm 【前スレ】 pc12.2ch.net/test/read.cgi/tech/1232627790/
- 182 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 06:15:27 ]
- >>177
もう見てないかも知れんが。 3 5 4 1 9 8 7 2 15 を例にとると、 ・データの範囲を0〜19とする。 ・データは3つまでしか読めない。 という仮定で、簡略化のため、テンポラリファイルにも3つの値しか書きこまないとする。 テンポラリファイルは7つできる。それぞれ0.dat〜6.datとする。 最初に、3つ読み込む メモリには「3,4,5」がある。 これを0.dat〜6.datに振り分ける。 この場合、1.datに3,4,5が書き込まれ、他のテンポラリファイルには何のデータもない。 次にもう3つ読む。 メモリには「1,9,8」がある。 これを振り分けると、1→0.dat、9→3.dat、8→2.datとなる。 最後に3つ読み振り分ける。7→2.dat、2→0.dat、15→5.datとなる。 この時点で振り分け終わり。各テンポラリファイルには、 0.dat:「2」、1.dat:「3,4,5」、2.dat:「8,7」、3.dat:「9」、4.dat:「」、5.dat:「」、6.dat:「15」 というデータが入っている。 次に各テンポラリファイルごとに読み込みなおして、クイックソート→書き戻しを行う。 これでテンポラリファイルの内容は 0.dat:「2」、1.dat:「3,4,5」、2.dat:「7,8」、3.dat:「9」、4.dat:「」、5.dat:「」、6.dat:「15」 となる。これを連結すれば 「2,3,4,5,7,8,9,15」 となって全体のソートが完了する。 こんな感じ。
- 183 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 07:35:40 ]
- >>182
float範囲内にどう分布しているか分からないのに振り分けてどうするんだよ。 ヘタしたら1ファイルに全部入るだろ。
- 184 名前:182 mailto:sage [2009/09/04(金) 21:45:19 ]
- >>183
むしろ振り分けなくてどうやるつもりなんだ? 1ファイルに入ることは何の問題もないだろ。 そのファイルを再分割するだけじゃん。
- 185 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 13:04:42 ]
- >>184
狭い範囲に集中してた場合、時間が掛からんか?
- 186 名前:182 mailto:sage [2009/09/05(土) 14:54:44 ]
- >>185
何を問題視しているかが良く分からん。 一体何と比較して時間がかかることを懸念しているんだ? 再帰が1段増えるだけじゃん。 再帰の深さもlogNのオーダだよな?
- 187 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 17:28:29 ]
- >>186
DataInputStreamがデータ一周なめるだけで15分の大半を消費しね? ファイル処理の再帰が不用意に一段深くなるだけでアウトになりかねない。(時間制限的に) バイナリレベルでファイル分割->ソート(一発メモリ上ソート)->マージ 上の流れならいけると思う。 DataInputStreamを最低2周させる必要がある。 ファイル分割以降の処理をCPUコア数で並行処理できても、 最後のマージを工夫しないと結構きついかな。
- 188 名前:182 mailto:sage [2009/09/05(土) 18:57:22 ]
- >>187
>バイナリレベルでファイル分割->ソート(一発メモリ上ソート)->マージ その場合マージの過程が大変じゃね? と思って最初の分割に一工夫入れてマージ作業を楽にしようと考えたんだけど。 >>187のやり方だと、マージ処理で次に結果ファイルに書き込む値を決めるときに ファイルから値の読み込み→ソートという処理を行う必要があるよね? メモリ上にN個のデータの最小値を決定して、結果ファイルに書き込んで 次に書き込む値を決定するときに、ファイル上のデータ最小の可能性もある訳で、 メモリ上のN-1個のデータで最小値を決めるわけには行かないよね? 俺的にはこの部分が非常にヤバイ(データの偏り関係に関係なく必ずI/O数が爆発する)と 思うんだけど、その辺は大丈夫なの?
- 189 名前:182 mailto:sage [2009/09/05(土) 19:11:47 ]
- 追記。
俺のやり方が突っ込みまくられてるのは、I/Oのデータ量が 馬鹿にならなくなるからだと思う。 んで、確認しておきたいんだけど、このテの問題って ・I/Oのデータ量を抑えること ・I/Oの要求数を抑えること のどっちが大切なの? 俺は今まで後者だと思っていたんだけど、この認識が 間違い?
- 190 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 19:22:50 ]
- >>186
どう再分割するかが問題 狭い範囲にデータが集中しているようなものの場合その再分割を たとえば値が集中した区画を単純に等分していくなら再帰が一段増える程度では済まんだろ 対象のデータ量の規模が大きいから1段増加するだけでもかなりのロスになる 何かlogNよりも大きい方法と比べているわけでないからlogNのオーダーであることは意味を持たない 結局データの分布を調べないといけないんだが 一度にfloatがとりうる各値の度数を調べるには無理がきかない体だ 確かに分布さえ分かっているのなら分布数え上げソートできなくもないが 何段になるか分からない再帰を行うよりも オンメモリの範囲で分割して回数の分かっているマージを行う>>187の方が現実的
- 191 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 19:29:06 ]
- >>188
マージソートについて何か勘違いしてるんじゃないか? マージ前の各部分については既にソート済みなんだから、 マージは各部分の先頭を見てどちらかを選択していくだけで済む。
- 192 名前:182 mailto:sage [2009/09/05(土) 20:10:36 ]
- >>190
理解できた。ありがと。 >>191 勘違いしてた。 いっぺんにマージすることばっかり考えてて、ボトムアップ的に マージすることが頭になかったわ。 確かに>>187が普通のやり方だね。
- 193 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 21:01:11 ]
- floatの上位4ビットを使ってテンポラリファイル0〜15に書き出す。
テンポラリファイル8〜15、0〜7の順にバケットソート→結果ファイルに出力。 これで良い気がしてきた。
- 194 名前:193 mailto:sage [2009/09/05(土) 21:13:17 ]
- NaNの扱いをどうにかしないとだめか
- 195 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 01:50:59 ]
- もちっと期限に余裕があったら182のも書けば165が実際に試してくれたかもな。
- 196 名前:デフォルトの名無しさん [2009/09/08(火) 04:00:11 ]
- 【 課題 】
1. キーボードから次々に非負整数の入力を受け付け、それらの中での正の最小値を表示するプログラムを作成せよ。 データ入力の終わりは負の整数の入力とする。 2. キーボードから次々に非負整数の入力を受け付け、それらの中での(正の)偶数、奇数、ゼロが それぞれ何個ずつであったのかを*の数で表示するプログラムを作成せよ。 データ入力の終わりは負の整数の入力とする。 【 形態 】1. Javaアプリケーション(main()で開始 ?? 【 GUI 】? 【 期限 】今から2時間後まで 【 Ver 】? 【 補足 】初歩のプログラムの授業の課題で、私自身もさっぱりの状態です・・・ できるだけ基本的なプログラムでお願いします。
- 197 名前:196 [2009/09/08(火) 05:45:57 ]
- 期限を1時間伸ばします
どなたかよろしくお願いいたします
- 198 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 06:10:51 ]
- >>196
課題1 public class MainClass { public static void main(String[] args) { java.util.Scanner sc = new java.util.Scanner(System.in); System.out.print("整数を入力してね(負数で終了):"); int input = sc.nextInt(); int min = input; while(0<=input){ if(input<min){ min=input; } System.out.print("整数を入力してね(負数で終了):"); input = sc.nextInt(); }; System.out.print("最小の値は "); if(0<=min){ System.out.println(min); }else{ System.out.println("定まりませんでした "); } } }
- 199 名前:デフォルトの名無しさん mailto:sage [2009/09/08(火) 06:11:10 ]
- >>196
課題2 public class MainClass { public static void main(String[] args) { java.util.Scanner sc = new java.util.Scanner(System.in); int zero=0,even=0,odd=0; while(true){ System.out.print("整数を入力してね(負数で終了):"); int input = sc.nextInt(); if(0<=input){ if(input==0){ zero++; }else if(input%2==0){ even++; }else{ odd++; } }else{ break; } }; System.out.println("ゼロの個数:"+zero); System.out.println("偶数の個数:"+even); System.out.println("奇数の個数:"+odd); } }
- 200 名前:196 [2009/09/08(火) 06:47:36 ]
- >>198-199
ありがとうございます。非常に助かりました。
- 201 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 02:15:25 ]
- 課題2の結果は、「*」の繰り返しで表示するんじゃないの?
微妙に仕様と違う動きなのが 初心者っぽさの演出にはなっているが…。
- 202 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 02:24:56 ]
- 非常に付きで助かったんだからいいんじゃないの?
依頼者は動作確認どころか課題そのものを読んでもいないのかもしれないけど
- 203 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 03:10:50 ]
- >>201
ああ、そうだっけ。 まあ、そのくらいでき…できるならここに丸投げしてないな。
- 204 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 20:54:12 ]
- 【 課題 】ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/791.java
【 形態 】1. Javaアプリケーション(main()で開始? 【 GUI 】? 【 期限 】9月11日正午まで 【 Ver 】? 【 補足 】始めたばかりで不明な所が多く、申し訳ございません。 よろしくお願いします。
- 205 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 21:10:36 ]
- >>204
Webページの表示はフレーム上、ブラウザ上?
- 206 名前:205 mailto:sage [2009/09/10(木) 21:15:02 ]
- >>204
フレーム上でお願いします。
- 207 名前:205 mailto:sage [2009/09/10(木) 21:16:04 ]
- 名前と安価が逆でしたorz
- 208 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 21:21:45 ]
- >>206
フレーム上にページを表示するとなると表示はどのレベルまでサポートするの?
- 209 名前:204 mailto:sage [2009/09/10(木) 21:30:15 ]
- >>208
普段ブラウザで見ているのと同じ様に表示されるようにしたいのです 上手く答えられなくてすいません
- 210 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 22:19:47 ]
- >>209
JEditorPaneレベルならともかく、 明日の昼までにフルブラウザは厳しいな。 っていうか、俺には出来ない。 偉い人、よろしく。
- 211 名前:204 mailto:sage [2009/09/10(木) 22:45:39 ]
- うはっ、フルプラウザとまではいかなくても
ただWebページが表示されればいいなと思っていましたが、難しいですかね。
- 212 名前:デフォルトの名無しさん [2009/09/11(金) 21:26:32 ]
- >>204
一応、RESETボタンを押すとimg2の画像をimg1に戻すようにしたソース↓ ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/792.java 画像クリックのやつはわからんかった
- 213 名前:デフォルトの名無しさん [2009/09/11(金) 21:28:27 ]
- よく見たら期限過ぎてた
- 214 名前:デフォルトの名無しさん [2009/09/11(金) 23:11:27 ]
- 【 課題 】matomesite.hp.infoseek.co.jp/cgi-bin/src/up0550.txt
【 形態 】1. Javaアプリケーション(main()で開始)/ 【 期限 】9月13日 【 Ver 】1.6.0_11 丸投げで申し訳ないのですが、どなたかお願いします
- 215 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 00:37:38 ]
- 訂正
語群 11.k=k+1 です 丸投げといったのですが、所々わかったところがあるので追記です アは5.Math.abs((x[k]-x[k-1])/x[k-1])<eps か 9.Math.abs(f(x[k]))<eps イは11.k=k+1 か 13.iteration = k ウは3..breakで間違いないと思います エ、オはわかりません
- 216 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 01:17:04 ]
- >>214
ア=5 イ=13 ウ=3 エ=4 オ=12 と思ったけど、12の括弧が閉じてない。
- 217 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 01:55:18 ]
- >>216
すみません、12の括弧は書き忘れました ありがとうございました
- 218 名前:デフォルトの名無しさん [2009/09/12(土) 11:08:51 ]
- ここに出てる課題を解けば勉強になると思ってる時期がありました
- 219 名前:デフォルトの名無しさん [2009/09/12(土) 18:33:53 ]
- 次の数列の和を小数第11を四捨五入して第10位まで求めよ
またそれぞれについて、どちらの方が誤差が少なくなるか あるいは同じ値になるか?理由もつけて答えよ N=10 20 30 に対して (1)納n=1,N](1/(2^n) (2)納n=N,1](1/(2^n) 【 形態 】1. Javaアプリケーション(main()で開始) 【 期限 】7月14日 【 Ver 】1.6.0_11 前スレで教えていただいたプログラムの数値部分だけをいじったのですが 2^nをどのように表記すればいいのかがわからず解がうまくでません rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/793.txt (Math.pow(2,k)の所がおかしいのだと思うのですが・・・初歩的なことですみません よろしくお願いします
- 220 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 19:21:02 ]
- >>218
まあ、普段ならしないことをやるチャンスはある。殆どないけど。
- 221 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 19:31:54 ]
- >>219
いくつになれば、正しいんだ?
- 222 名前:デフォルトの名無しさん [2009/09/12(土) 19:58:25 ]
- >>221
答えはわかりませんが、張ったソースは数列の和ではなく誤差を調べるものでした 言葉足らずですみません >>次の数列の和を小数第11を四捨五入して第10位まで求めよ の部分は無視してもらって構いません N=10、20、30の全ての場合で誤差がでず まったく同じ数値になってしまったのでおかしいなと思って質問しました
- 223 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 21:30:26 ]
- >>222
足す順序で誤差が出るってこと? どうなると誤差を調べたことになるの?
- 224 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 22:14:51 ]
- >>223
そういうことです 例えば前スレの N=10 100 1000 10000に対して (1)納k=1,N](1/(k^2) (2)納k=N,1](1/(k^2) この場合の結果が www.dotup.org/uploda/www.dotup.org134514.jpg で、N=10以外で数値に誤差がでました 計算誤差(丸め誤差や打ち切り誤差?)が起こってるんだと思うのですが
- 225 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 22:32:19 ]
- >>219
Math.powが怪しいとか適当なことを言っていないできちんと誤差評価した方が建設的だ doubleは52ビットの仮数部を持っている そして1/2のべき乗を2^-1から始めて大きい順か2^-30から始めて小さい順に加算するということは その総和であるsumでは加算するたびに仮数部のビットを1個ずつ立てていくことになる つまり2進数表記で 0.1 + 0.01 + 0.001 + ... というように足した回数桁分の1が並ぶ数が総和になる doubleでは仮数部の最も大きいビットは1であると決められて省略されているから この数を表すのに必要な仮数部は29ビットになる どちらの順から加算を始めたとしても52ビットある仮数部で十分に総和も加算する数自体も正確に表せる 元々正確に表せている数値を10進小数第10位までの表記になっても同じになるのは当然 1/2のべき乗の場合はまあ大丈夫だけど四捨五入は10進数の数値操作なのでdoubleの値の評価に使うときは注意
- 226 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 22:34:19 ]
- > この数を表すのに必要な仮数部は29ビットになる
N=30の場合ね
- 227 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 22:49:37 ]
- >>225
ありがとうございます 誤差は起こり得ないということですね 試しに52ビットを超える場合(N=54以上)でやってみたところ、すべて1.0になりました これの意味することが、まだいまいち把握できてないのですが あとは参考書なり読んでみます お騒がせしてしまって、すみませんでした
- 228 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 23:11:03 ]
- >>227
ついでなので その場合足す数はdoubleで正しく表せるが足される総和の方が正確に表せる範囲を超える 大きい順に足していった場合N=53で総和の仮数部が一杯になり次の2^-54を足した段階で総和は正確に表せず1となってしまう 次の2^-55以降を足してもそれは1のイプシロンつまり機械イプシロン以下の大きさしかないから総和は変化しない 小さい順に足していった場合N=8で総和の仮数部が一杯になり次の2^-7を足した段階で総和は正確に表せず2^-6となってしまう あとは2^-6、2^-5と足していけば総和は2^-5、2^-4と増えてゆき最後は1になる
- 229 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 23:30:59 ]
- >>228
なるほど まだなんとなくですが、イメージは掴めました わざわざ詳しい説明をしてくださって、ありがとうございました
- 230 名前:デフォルトの名無しさん mailto:sage [2009/09/12(土) 23:31:30 ]
- またNを書き忘れたorz
>>228の話はN=60の場合ね 要は有限桁しか表せない浮動小数点では 1 * 2^-m = 0.1111111....111 * 2^-m とみなされてしまう桁長が右辺の数値にはあるということ mは大きい順なら0、小さい順なら足し始めた数に応じる
- 231 名前:デフォルトの名無しさん [2009/09/20(日) 16:20:59 ]
- 【 課題 】以下のようなサーバプログラムCountServer.javaとクライアントプログラム
CountClient.javaを作成してください。 [条件] ・サーバは、クライアントから文字列を受信し、その文字数をカウントして 結果をクライアントに返す。 ・クライアントプログラムを実行時に、コマンドラインから、サーバホスト名 java CountClient サーバホスト名 "文字列" ・クライアントは、サーバからの結果を受け取り、画面に表示する。 ・サーバは、ポート番号 4321 で接続要求を受け付けるようにする。 サーバプログラムの実行 >java CountServer クライアントプログラムの実行と実行結果 >java CountClient host1 "Java Programming" 16 【 形態 】Javaアプリケーション(main()で開始) 【 GUI 】制限なし 【 期限 】9月22日午後5時までお願いします。 【 Ver 】1.6.0_11 【 用語 】 【 補足 】丸投げです。お願いします。
- 232 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 18:15:50 ]
- >>231
rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/794.zip
- 233 名前:デフォルトの名無しさん [2009/09/20(日) 19:39:06 ]
- >>232
CountServer.javaでは4行目で 「インポートされた java.io.DataOutputStream は 1 度も使用されていません」 とエラーが出て、 countClient.javaでは18行目で 「フィールド CountClient.inDataStream はローカルで読み取られません」 とエラーが出ました。 CountServer.javaの方は単純に4行目を削除すればよいのでしょうか?
- 234 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 19:50:46 ]
- >>233
それ、使ってないね。決して良いよ。 16:private DataInputStream inDataStream; 33:inDataStream = new DataInputStream(inStream);
- 235 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 20:50:18 ]
- 決しちゃっていいのか
- 236 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 20:58:00 ]
- おう、キッチリと決しちゃってくれ。悔いが残らぬように。
- 237 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 21:02:04 ]
- エラーと警告の区別がついていないのはいいのか
- 238 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 21:08:39 ]
- 学ぶ事を放棄して来たのだから良いんじゃないか。
- 239 名前:232 mailto:sage [2009/09/20(日) 23:06:20 ]
- >>231
>>232のコードのリファクタ版。 今回はワーニングでないと思うが、なんかあったらレスくれ。 rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/795.zip
- 240 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 05:43:28 ]
- 嫌だ
- 241 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 09:34:50 ]
- じゃあ好きにしろ
- 242 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 09:57:14 ]
- (´・ω・`)やんのかお?
- 243 名前:232 mailto:sage [2009/09/21(月) 17:09:28 ]
- >>231
暇なのでまたちょっとリファクタ 変更点: 最大文字数制限に対応 複数クライアント対応 スレッドプール変更 rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/796.zip
- 244 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 17:20:33 ]
- もういいって・・・
- 245 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 13:40:20 ]
- 【 課題 】1.ユニークな9桁の数値100万個を記述した乱数ファイルを作成する
※数値はランダムに生成し作成された順に記述される ※9桁目はゼロであってはならない→×000000001 ○100000000 ※ひとつの数値が1行に記述され改行で区切られる ※乱数ファイルがユニークに作成されている根拠をコメントに書け 2.9桁の数値を入力し、その数値の乱数ファイル上の行番号と 昇順でソートした際の順序番号で表示するアプリを作成する ※乱数ファイルは一度しかパースしてはならない ※ライブラリのデータ構造を使用してはならない(プリミティブタイプ、配列は可) ※ブルートフォースアルゴリズムを使用してはならない 3.エクストラポイント ※検索手順をGUI上で可視化する(制限なし) 【 形態 】1. Javaアプリケーション(main()で開始) 【 GUI 】2. Swing 【 期限 】9月24日18:00まで 【 Ver 】1.6.0_15 【 用語 】 【 補足 】丸投げです。宜しくお願いします。
- 246 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 01:18:41 ]
- >>245
>※ブルートフォースアルゴリズムを使用してはならない 制約の意味がわからない
- 247 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 01:21:44 ]
- >>246
総当たりの事です。要はO(n)のアルゴリズムではダメ。
- 248 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 01:49:50 ]
- >>247
未ソートのデータから検索なんて、他に方法はないのでは?
- 249 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 09:04:13 ]
- >>248
ありませんよ
- 250 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 11:47:56 ]
- ソートが出来ない訳ではありませんが、パース出来るのは一度だけです。
- 251 名前:245 mailto:sage [2009/09/23(水) 14:30:49 ]
- 誰か分かる方いらっしゃらないでしょうか。
- 252 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 23:25:48 ]
- >>251
いや、未ソートのデータの検索に総当り以外のアルゴリズムなんて無いだろ。
- 253 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 23:53:31 ]
- >>252
一度パースができるとあるので、そこでソートしながら自前のデータ構造にいれれば良いんじゃね。 で、出来上がったデータ構造上をO(log)位のアルゴリズムで検索すれば ソートオーダの位置と未ソート時の位置を取得できるんじゃないのかな?俺には作れないけど。
- 254 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 01:18:09 ]
- >>253
それでいいのならソート自体が目的ではないのでO(n)のメモリが必要なデータ構造を用意する必要はない。 ファイルをスキャンしながら検索対象以下の数値の個数をカウントして、 最後まで読み終わった時点で検索対象が現れていたら、 現れた行番号が「乱数ファイル上の行番号」であり、 検索対象以下の数値の個数が「昇順でソートした際の順序番号」になるので、 行番号と個数を覚えておくだけのO(1)のメモリで済むしファイルを読んだ後の探索もいらない。 でもこれって結局ファイル上ではあるもののO(n)の探索には変わりないんだよね。 ファイルを一通り読んでいいのに探索はO(n)では駄目とかの>>245の要求が矛盾しているというか。
- 255 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 02:10:30 ]
- >>254
その場合2回目の検索はどうする?
- 256 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 02:24:21 ]
- 複数回問い合わせることを前提に、検索部分のコストだけということでは?
rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/798.java
- 257 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 02:42:28 ]
- Arrays.sortとArrays.binarySearchで許してくれんのかな。
余計かもしれんがDataのamountがIntegerなのはcompareToしたいから? intのまま減算して返せばよくね?
- 258 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 02:49:03 ]
- >>257
>Arrays.sortとArrays.binarySearchで許してくれんのかな。 >※ライブラリのデータ構造を使用してはならない(プリミティブタイプ、配列は可) って文言には反してないが、どうなんだろうね。 出題者の期待している解答ではないかも。 >余計かもしれんがDataのamountがIntegerなのはcompareToしたいから? yes intの差の方が良いね。
- 259 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 03:05:17 ]
- >>256
【 GUI 】2. Swing
- 260 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 03:08:54 ]
- >>259
>3.エクストラポイント っていってるし。面白みも無い。 つか、そもそも、主旨が合っているのかどうかもあやうい。
- 261 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 03:13:51 ]
- あとはArrays.binarySearchのステップを可視化できたら尚OKか。
えーと、最初にcompareTo呼ばれたDataは50万個目だよね。 staticに(binarySearchによる)compareToの呼び出しカウントを保持しておけば 次回配列インデックスへの差分量がわかるから、compareToの結果を元に追跡可能だな。 表示は極端にシンボル化されるから、仮に配列インデックスの計算誤差があっても無視できるしね。
- 262 名前:245 mailto:sage [2009/09/24(木) 03:50:03 ]
- ご対応頂いてありがとうございます。
>>254 最初の読み込みで自前のデータ構造に取り込んでソートすることはOKです。 GUI上のテキストフィールドで入力した数値で複数回検索する必要がありますので、 読み込み時にO(n)であっても以降の検索処理がO(n)で無ければ良いそうです。 >>257>>258 Arraysは利用出来ません。ソートは自前のデータ構造に対して実装する必要があります。 >>259>>260 基本的にコマンドではなくGUIでアプリをつくる必要があります。 エクストラポイントについては検索時のツリー構造等の移動/変化を GUI上に描画してグラフィカルに表示した場合にポイントとなります。 以上、宜しくお願いします。
- 263 名前:245 mailto:sage [2009/09/24(木) 03:51:10 ]
- 追記:
乱数ファイルを作成するクラスについてはGUIである必要はありません。
- 264 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 04:02:59 ]
- >>262
>Arraysは利用出来ません。ソートは自前のデータ構造に対して実装する必要があります。 構造と言っても二分探索は配列で出来るし、実装は退屈だからパス >基本的にコマンドではなくGUIでアプリをつくる必要があります。 面白味は無いのでパス >エクストラポイントについては検索時のツリー構造等の移動/変化を 着目している対象くらいは変わるが、構造自体は検索中に変わったりしないのだが…
- 265 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 07:46:23 ]
- rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/799.java
視覚化してみた
- 266 名前:デフォルトの名無しさん [2009/09/24(木) 07:59:09 ]
-
【 課題 】 作曲プログラムの作成について JAVAで作曲ソフトを作成しなさい。 しかし普通の作曲ソフトではなく、もともと持っていた画像を取り込み、そこに5線譜を引き、点をとって音を再生するというようなものです。 【 形態 】1. Javaアプリケーション(main()で開始) 【 GUI 】2. Swing 【 期限 】9月24日18:00まで 【 Ver 】1.6.0_15 【 用語 】 【 補足 】わかりにくくてすいません。 nikitoki.blog.so-net.ne.jp/2007-11-17-4 ↑の中でやっているようなことができる作曲ソフトを作りたいと考えています。 よろしくおねがいします
- 267 名前:デフォルトの名無しさん [2009/09/24(木) 08:03:21 ]
- ↑訂正です
期限は9月26日18時まででした。 すみません。
- 268 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 08:48:17 ]
- 何言ってんだか、さっぱりだし、宿題感がしねえ
- 269 名前:デフォルトの名無しさん [2009/09/24(木) 10:24:16 ]
- 【課題提示用テンプレ】
【 課題 】「プログラム言語Java」と「JRuby」の特徴比較について調べ、記述せよ RubyではなくJRubyである点に注意してください。特に、両者に差が あるポイントを明確に論じてください。 【 形態 】その他(記述) 【 期限 】明日まで^^; JRubyの資料が全然なくて困ってます^^; 簡単でもいいのでだれかお願いします
- 270 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 10:38:59 ]
- ゆとりか・・・
- 271 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 10:55:21 ]
- そりゃ、現時点で学生だろうし、その中でも極限のバカしかここに依頼しないし
- 272 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 11:36:31 ]
- >>269
抜け作の君に20代男性からの老婆心だ とりあえず顔文字つけときゃいいってもんじゃないよ 頼みごとをしようって時にふざけてんの? 資料がないっつーのも苦しい言い訳 プログラムを書くわけでもないし、ちょちょっとまとめるくらい難しくはないでしょ JavaとJRubyではどちらが早いか、どちらが普及しているか、便利な点、不便な点 そういうのを読み取って羅列する
- 273 名前:245 mailto:sage [2009/09/24(木) 12:18:46 ]
- >>265
ありがとうございます。 自前のソート、検索処理の部分もお願い出来ないでしょうか。
- 274 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 07:22:41 ]
- >>267
土曜に締め切りって何だよ
- 275 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 09:49:01 ]
- >>266
パンをパンと認識するのは人間だからできることだ。 それをコンピュータにやらせるのがどんだけ大変か分かってるのか。 しかもそれを宿題スレで人にやってもらうってか。 もっと要件を限定せい。
- 276 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 20:18:23 ]
-
【 課題 】rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/800.zip 【 形態 】1. Javaアプリケーション(main()で開始) 【 GUI 】制限なし 【 期限 】9/31 【 Ver 】1.6.0_13 【 用語 】特に無し 【 補足 】丸投げです。お手数をおかけしますが、宜しくお願いします。
- 277 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 22:03:35 ]
- public class Kadai01_5 {
public static void main(String[] args) { double theta; double f; int divider = 18; for(int i = 1; i <= divider; i++){ theta = Math.PI * i / divider; f = Math.sin(theta) + Math.cos(theta); System.out.printf("孤度 θ: %10.5f [ラジアン]\t\t関数F: %10.5f \n", theta, f); } } }
- 278 名前:デフォルトの名無しさん [2009/09/26(土) 10:05:06 ]
- ここは美術のアイデアも教えていただけますか?
- 279 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 11:57:17 ]
- >>277 180/18=10 なんだな
- 280 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 17:02:45 ]
- >>279
何か?
- 281 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 00:50:59 ]
- forループの数が18回になってる
- 282 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 00:56:19 ]
- ああ、Π/18ごとは10度ごとだから18回で良かったのか
|

|