1 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 03:34:28 ] オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。 Ruby Home Page www.ruby-lang.org/ja/ = 前スレ Rubyについて Part 33 pc11.2ch.net/test/read.cgi/tech/1223709050/ 過去スレ・関連スレは >>2-
830 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 11:59:29 ] イメージで言ってるだけだろ。不満なら完全民主制の言語でも作ればいい。
831 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 13:37:50 ] >>829 matzが「コミット権取り上げますよ?」て言われたこともあったな
832 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 17:36:49 ] >>831 マジですか?w
833 名前:831 mailto:sage [2009/03/16(月) 17:57:01 ] >>832 今探しなおしてきた ttp://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-dev/29649?29386-29727 微笑ましい一幕です(悪い意味じゃなくね)
834 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 18:22:27 ] ワロタ
835 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 18:23:20 ] その後の言い訳がまた笑えるw
836 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 18:24:46 ] >>833 ワロタw サンクス
837 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 18:26:10 ] ていうか、開発MLみたいなとこでも草生やしたりすんだなw
838 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 18:29:46 ] 基本的にはしない 無くても議論はできるからだ が、草生やすのが最適だと思われれば躊躇うことはない
839 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 20:52:55 ] えーと、いわゆる優しい独裁者モデル? なんか違う肝。
840 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 00:30:47 ] 1.9.1のtrunkは6日から進んでないけど、なんか大きな変更をやってるの?
841 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 00:37:39 ] コンビニ増えすぎだよな
842 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 08:58:45 ] >>840 trunkはとっくに1.9.2devだよ。今見たら昨日も更新してた。 それともbranches/ruby_1_9_1のこと?
843 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 09:45:19 ] >>842 そなの? ホームページの最新版スナップショットとやらが(2009/03/06 04:13:00)から更新されてないので気になったんだけど。 1.8.8devの安定版スナップショット(2009/03/17 04:19:26)は毎日更新されているから。
844 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 10:13:24 ] >>843 ああ、そっち見てたのね。 こっちはSubversion見てたもんで。
845 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:16:57 ] >>843 smn
846 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 08:52:33 ] >>843 についてIRCの方で報告があった 今は直ってます
847 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 09:59:27 ] >>846 サンクス
848 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:21:20 ] 配列をN個に(ほぼ)等分する必要があって、 グネグネしたコードを書いた。 で、気に入らないのでちょっと書き直してみた。 Ruby神、リファクタリングよろ。 メソッド名は堪忍してくんろ。 def equally(a, n) sizes = [].fill(a.size / n, 0, n) (0...(a.size % n)).each {|i| sizes[i] += 1} #p sizes sizes.inject([]) {|r, size| sub = a.slice!(0, size) break r if !sub || sub.size < 1 r << sub } end (1..20).each {|i| a = (1..i).to_a p a p equally(a, 3) puts }
849 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:31:06 ] Enumerable#each_slice では用が足らんのか 面倒じゃのう
850 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:41:56 ] リファクタリングとかいうレベルじゃないくらい別モンだけど def equally(a,n) result = [] div,mod = a.size.divmod(n) until a.empty? result << ( 0 < mod ? a.shift(div+1) : a.shift(div) ) mod -= 1 end result end
851 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 12:01:16 ] def equally(a, n) sizes = [].fill(a.size / n, 0, n) (0...(a.size % n)).each {|i| sizes[i] += 1} sizes.map {|size| a.shift(size) } end
852 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 16:24:32 ] aは破壊しちゃっていいのか? # 非破壊バージョン def equally(a, n) result = [] div,mod = a.size.divmod(n) (Array.new(mod, div+1) + Array.new(n-mod, div)).inject(0) do |i, m| result << a[i, m] i + m end result end
853 名前:848 mailto:sage [2009/03/19(木) 17:02:41 ] >>849 Enumerable#each_sliceは1.9からは組み込みですか。使ったことなかったです。 >>850 なるほど。modを減らしていくほうが、自分の元の思考ともあってます。 >>851 なるほど。breakさせないほうがメソッドの動作としては自然かも。その発想頂きます。 >>852 非破壊のほうが使いやすいですよね。その発想いただきます。 shiftに引数渡せるの知らなかったんで…、 などといいつつ手元の1.8.6では使えないのでやっぱりslice! def equally(a, n) tmp = a.dup (0...n).inject([]) {|r, i| r << tmp.slice!(0, a.size / n + (i < a.size % n ? 1 : 0)) } end くっ…。見にくくなっただけのような。 さらにメソッド名がいかんともしがたい。
854 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 17:06:33 ] はうっ。mapでよかったんだった。 def equally(a, n) tmp = a.dup (0...n).map {|i| tmp.slice!(0, a.size / n + (i < a.size % n ? 1 : 0)) } end
855 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 21:24:14 ] Rubyでothelloをつくりたいのですが 何から始めればよいでしょう
856 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 21:25:38 ] つpc11.2ch.net/test/read.cgi/tech/1235727504
857 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 21:31:56 ] >>855 とりあえずCUI版tic-tac-toe作れ。 出来たらそれのGUI版を作って基礎固め。 Reversiはその後だな。
858 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 21:46:42 ] 間にGUI版を作るのはなぜ?
859 名前:デフォルトの名無しさん [2009/03/20(金) 22:28:27 ] >>855 すでに誰か作ってないかあるものを探すところから
860 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 22:49:32 ] 勉強のために作りたいんだろ ○×ゲームを先に完成させてから考えろというのは妥当だ
861 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 22:55:37 ] マジレスするとオセロはかなり難しい 段階踏んで作るのが間違いない 最初からオセロだけ目指したら絶対挫折する
862 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 23:09:34 ] 初心者スレか宿題スレに誘導するのが一番妥当かつ親切じゃないかと思うんだが。 pc11.2ch.net/test/read.cgi/tech/1235727504/ pc11.2ch.net/test/read.cgi/tech/1200175247/
863 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 23:11:48 ] 話すこと終わっちゃった感もあるな
864 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 23:19:34 ] オセロって作った人のレベル以上に強くならないって言うけどどうなんだろ
865 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 23:21:03 ] 「Rubyで」という部分を除けば完全にスレ違い
866 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 23:27:51 ] まず、質問した人はオセロ盤を作りたいのか、思考モジュールを作りたいのか はっきりしたほうがいいな。後者はRuby向きじゃないと思うが。
867 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 23:43:32 ] >>865 「Rubyに関する部分」を除いたらあらゆるものがスレ違いなんだが
868 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 23:50:26 ] そしてMatzに関する部分だけが残った。
869 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 00:08:10 ] 初心者であればあるほど、言語固有の事情と言語非依存な部分の切り分けは出来ないからのう。
870 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 00:12:02 ] ありがとうございます 移動します
871 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 00:12:49 ] >>867 Ruby自体がいろんな他の言語のいいとこどりだから すべての話題がスレ違い扱いされても文句言えない
872 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 01:35:48 ] 実はRubyは初めてでも、 アルゴリズムはめちゃくちゃすごい奴だったりしてな
873 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 01:52:43 ] >>872 大丈夫 すごい人は放置されても自力で出てくる
874 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 01:54:04 ] 誘導しても結局ゴミみたいな雑談してるだけという
875 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 03:04:44 ] オセロの対戦アルゴリズムは大変だろうな。
876 名前:デフォルトの名無しさん [2009/03/21(土) 11:36:12 ] 古典的なα-β法とかでシンプルに作ってやれば、 とりあえずそれなりに動く思考ルーチンは簡単に作れるyo! 強くするのはその後の課題になるけどな。
877 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 12:12:26 ] 全部で60手のうち 序盤20手くらいは定石がある 終盤40手くらいからは読み切れるんだろうけど 中盤20手〜40手をどうするかが課題 あとはすれち
878 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 14:44:48 ] オセロは必勝法がもう分かっているから、 いかに人間に遊ばせてあげるか、だよ。
879 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 15:18:43 ] >>878 初耳
880 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 16:49:03 ] >>878 は嘘。 ただ、完全先読みで読み切られちゃうんで、そうとうの高段者でも 劣勢になったらひっくりかえせなくなっている。
881 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 16:49:50 ] 「終盤は」を付け忘れた。
882 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 18:00:43 ] 読み切られて負けるの分かってる状態よりも 引き分け前後の微妙なところで終盤にもつれる方が ゲームとして面白いのは確かだよね 苦行をしたい訳じゃなくて遊びたいんだから
883 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 18:03:01 ] 相手がコンピュータの場合と人間の場合で戦略は違う 自分がまけそうなときに分かりやすい最善手を打ち続けるより 悪手でも相手が間違いやすいややこしい手を打った方が良いって 聞いたことはある
884 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 20:06:44 ] そういう変則手って、相手が人間の時こそ有効なんじゃないの?
885 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 21:04:39 ] そうだね
886 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 21:05:26 ] 相手が人間の時の話なんだが
887 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 21:06:07 ] うほ
888 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 21:27:35 ] 囲碁くらい複雑になると顕著だね 悪手とは言えない手でわざと難しく難しく打つやり方
889 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 22:29:26 ] オセロに必勝法があるなら、 先手か後手か決まった時点で勝負あったになるよな すべての手を洗い出しても必勝法はないってことか? やってみてなかったのか、やってないのかどっちだろう 将棋はめちゃくちゃ複雑だというが、 オセロでもすべての手を洗い出すことはできないのだろうか
890 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 22:32:23 ] >>889 ゼロサム完全情報の二者間のゲームには必勝法が存在する。 オセロは6x6なら後手必勝というのはすでに解析済み。 8x8は後手必勝ぽいけどまだ解析中。
891 名前:890 mailto:sage [2009/03/21(土) 22:35:07 ] > ゼロサム完全情報の二者間のゲームには必勝法が存在する。 あと、手数が無限にならないことも条件として必要だった。
892 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 22:35:25 ] 「確定」じゃないなら必勝法はないけどな
893 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 22:40:14 ] まあもし必勝法が見つかったら10×10くらいにすればいいのかな >>890 オセロには引き分けもあるが、それでも必勝法は必ずあるの?
894 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 22:42:10 ] >>890-891 ふおおお、なるほど。6x6までは後手が必ず勝つのか。 完全情報というのは「手の内をさらす」ということでいいのか? たとえばじゃんけんは当然必勝法はないだろうが、 駒を隠す軍人将棋にも必勝法があるとは限らないってこと? 5x5ならおれのPC(クアッド、メモリ8G)とRuby1.9でも 現実的な日にちで計算可能だろうか。
895 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 22:44:50 ] ja.wikipedia.org/wiki/%E4%BA%8C%E4%BA%BA%E9%9B%B6%E5%92%8C%E6%9C%89%E9%99%90%E7%A2%BA%E5%AE%9A%E5%AE%8C%E5%85%A8%E6%83%85%E5%A0%B1%E3%82%B2%E3%83%BC%E3%83%A0
896 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 22:55:17 ] >>895 サンクス、これはおもろい
897 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 23:00:01 ] >>896 高校生かな? 大学行くと1年生の教養の情報系の授業で習うぞ
898 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 23:06:09 ] いい年こいていちいちひねたレス付けないと気が済まないのかね
899 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 23:11:44 ] >>897 に他意悪意を感じ取るのは曲芸または深刻な学歴コンプレックス
900 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 23:13:23 ] >>897 ゲーム理論習わないところもあるよ 実際、俺も情報系の学部で4年目だけど習ってない
901 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 23:17:26 ] >>900 それはなんていうか大学に抗議したほうがよくないか 俺らは選択だった ゲーム理論という名前でテレビゲームの話だと思った人がいて半分くらいは寝てた
902 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 23:18:08 ] だいたい、大学生の誰もが「教養の情報系の授業」を取ってるって前提がおかしいw 一般教養の講義を選択できない大学があるんだろうか どっちかというと、講義より「囚人のジレンマ」の話なんかから入る人が多いだろうし
903 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 23:18:56 ] 第81回 高階関数を理解できないとRubyは理解できない ttp://d.hatena.ne.jp/bingo_nakanishi_perl/20090321/1237630273 うん、いや、その通りではあるんだけど、そんな大層なもんでもないかなーと 内容はブロックの話で、ある意味タイトルは釣り
904 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 23:34:50 ] 経済学にも応用されてるよね 株の必勝法とか
905 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 23:36:23 ] 必勝法というか負ける可能性を低くする定番な
906 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 23:36:26 ] >>903 馬鹿が解説するとますます分からなくなるという罠
907 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 23:38:14 ] てか、ナニを目的とした記事なのかよーわからん もうちょい無難なタイトルにしたほうが吉
908 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 00:10:21 ] なんか内容がないな 高階関数って言いたかっただけなのか?
909 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 00:17:26 ] 高階関数とか無名関数とか、言い換えて余計わからなくする典型的な失敗解説の例?
910 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 00:44:26 ] 分かってないひとが無理に解説しようとするからw
911 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 01:07:50 ] bladeはメンテ中? MLがwebで見れなかったんだけども
912 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 04:34:41 ] 原稿書く様な人は詳しくなかったりするのが問題。技術ネタは特に。 チェスでもスパコンで演算するレベルだしなあ。
913 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 09:25:51 ] Deep Blue はスパコンというより専用機
914 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 09:28:06 ] スパコンと専用機は互いに排他的な概念なの?
915 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 10:12:27 ] 排他的なら「スパコンではなく専用機」という表現になると思うが
916 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 10:17:32 ] 専用スパコン機でいいじゃない。駄目か。
917 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 10:47:53 ] IBMのサイトだと 「In May 1997, IBM's Deep Blue Supercomputer played a fascinating match with the reigning World Chess Champion」 ってなってるから、ディープブルーはスパコンでいいんじゃないかな チェスしか出来ない用途の狭いスパコンだけど。
918 名前:デフォルトの名無しさん mailto:sage [2009/03/22(日) 13:22:38 ] >>913 DeepBlueと同じ開発チームが民生用のパソコン用にソフト開発して 例のカスパロフ氏と5分の勝負をしたって何年か前にニュースになってたと思う。 DeepBlueに似たような監事の名前だったはずだけど、思いだせない。
919 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 12:57:21 ] Webで見られるMLの設定が変わったみたいだけどcharsetくらいはまともに返して欲しいものだ。 blade.nagaokaut.ac.jp/ruby/ruby-list/thrt1-217.html
920 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 13:11:09 ] >>919 動的に出力してるページはHTTP headerでちゃんと吐いてるから、HTMLページだけかな それならサーバよりmetaタグを各ページにきちんと埋め込む方がいいかもね というかやるならきちんとXHTMLにしてもいいよね bladeってソースはオープンになっていのかな?
921 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 19:13:50 ] XHTML1.1だとmetaタグに制約があったりするけど それ以前の問題だなぁ…
922 名前:デフォルトの名無しさん [2009/03/23(月) 20:36:34 ] >>919 どう間違えたらcharset=iso-8859-1何て返すんだろうなwww
923 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 21:06:16 ] Apacheの初期設定を適当に使うと何でもかんでも ISO-8859-1で返すようにするのは結構簡単にできてしまった気がする。
924 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 00:07:31 ] mingwで1.9をコンパイルしてるんだけど、pthreadって使った方がいいの?
925 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 01:34:09 ] >>923 というかiso-8859-1で返すのが正式 それ以外はオプション
926 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 01:38:05 ] デフォルトでUTF-8で返してくれれば楽なんだけどな 3あたりで変わらないかな
927 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 01:46:04 ] >>926 EUCなML書庫はそれでも文字化けするという なんかW3Cとかが絡んでたんじゃない?>iso-8859-1 仮にXHTMLが標準となれば、UTF-8になるかもよ ttp://www6.plala.or.jp/go_west/note/memo/xhtml_media_types.htm
928 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 02:16:30 ] AddDefaultCharset は Apache 2.0.53 から httpd.conf 初期ファイル群には書かれなくなった ユーザーやアプリケーションごとに設定すべきということなのだろう
929 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 02:22:24 ] そもそも、charsetなんて文書ごとに設定するのが本筋なので、 サーバのデフォルトなんてどうでもいいってことではないのかな XHTMLならXML宣言だろうし、HTMLならmeta要素?
930 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 02:33:00 ] >>929 違う サーバーは送出するファイルのtypeとcharsetをヘッダで送信「するべき」 現行これが行われてないのは単なるサーバの怠慢 と、処理コスト無限大なことによる 本当はファイルの文字エンコードをサーバはあらかじめ知っておかなければならない 画像ファイルの type が別個であるのと同様に、テキストファイルの charset も実際の値を送信するべき これの努力を怠ってはならない ちなみに、 meta 要素の http-equiv は 「HTTP等価値(equivalent)」の略だ Web ブラウザはこれを HTTP ヘッダの結果と同様に扱わなければならないという意味 だから、HTTP ヘッダが基本