1 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 08:21:23 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 ★注意★ Ruby 1.9.1 は初心者には時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。 (理由:現時点では多くの有名ライブラリやアプリが 1.9.1 に未対応であるためです。) なお 1.8.7 でも 1.9 系に導入された新機能のいくつかが利用可能なため、1.8.7 で勉強すれば将来スムーズに 1.9 系に移行できるでしょう。 関連スレやURLは>>2-5 あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。 ■質問する人へ 質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。 ・モジュール名やエラーメッセージでググる ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/ ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ 質問には以下を書くこと。へたくそな質問は再提出を要求される。 ・詳しい内容(「動きません」「うまくできません」では回答しようがない) ・エラーメッセージ(自力で訳さずなるべくそのままで) ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる)) ・最終的にやりたいこと(もっとよい方法がある場合が多いので) 回答してくれた人には「ありがとう」のひとことをいってあげて。 ■回答する人へ 相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。 それができないならこないこと(だって初心者スレだもん)。 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
455 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 12:48:24 ] Rubyの三項演算子の平均寿命は1日だそうな
456 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 12:49:23 ] Rubyの場合ifが式だからifで書けばいいと思うんだけど。 可読性もそのほうが高いと思わない?
457 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 12:52:28 ] if のほうがわかりやすそうな気がするときと、 条件演算子のほうがわかりやすそうな気がするときの 2つがあるような気がする 極めて単純な見栄えの問題 他の言語では三項演算子だけが値を返すから入れ替えが効かないけど Rubyは動作自体は結局一緒だから (パースの受け方は違うかもしれない)
458 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 12:55:17 ] >>453 case文も使えるんだ。 なるほど。
459 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 13:03:54 ] case文の意味なくないか?w
460 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 13:08:40 ] 空 case の例としてはわりと妥当だと思う else raise の余地がないのがやや弱いがわかりやすかろう
461 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 13:13:41 ] このへんは cond をかっちょええと思うかわかりにくくなったと思うかという話になるような気がしないでもない
462 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 13:16:27 ] result[ case when point > 0 then 'WIN' when point == 0 then 'DRAW' when point < 0 then 'LOSE' end ] += 1 だろJK
463 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 13:17:36 ] >>460 その空case自体に疑問 条件に重複する部分がないのを暗示してる、みたいなニュアンス?
464 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 15:30:39 ] コードゴルファー登場↓
465 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 16:12:32 ] わいは猿や!
466 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 16:24:10 ] result[point / 0.0] += 1
467 名前:466 mailto:sage [2009/08/28(金) 16:25:20 ] point = 0 のときダメだった。スマン
468 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 16:25:42 ] result[{1=>'WIN',0=>'DRAW',-1=>'LOSE'}[point<=>0]]+=1
469 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 16:30:16 ] result[%w[DRAW WIN LOSE][point<=>0]]+=1
470 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 18:07:31 ] 配列で要素が重複していたときに重複している要素の値が知りたいのですが 簡単な方法はないでしょうか? [1,2,3,4,5,6,3]であれば3が知りたいです 重複は1種類が1回だけしていると仮定してかまいません
471 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 18:30:43 ] ありそうでないんだよね、そういう機能 重複は全部消去するのが基本 「配列の構成要素を uniq で決定し、それと同じ値を持つ最初の場所を探してその要素を配列から消す」 という手順でやるとこうなる arr = [1, 2, 3, 4, 5, 6, 3] arr.uniq.each{|e| arr.delete_at(arr.index(e))} p arr [3] これだと arr が失われてしまうので他の人の案待つか事前に複製でもしとけ
472 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 19:17:38 ] a1 = ary.sort a2 = a1.uniq i = 0 a1.find_all {|v| if v.eql? a2[i] i += 1 false else true end } またselectかと言われそうだけどこのスレでは三回目
473 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 19:28:17 ] h = {} p aryfind {|a| h[a] || !(h[a] = true)}
474 名前:デフォルトの名無しさん [2009/08/28(金) 19:30:14 ] ary.find
475 名前:デフォルトの名無しさん mailto:sage [2009/08/28(金) 21:12:35 ] >>470 arr = [1,2,3,4,5,6,3] hash = {} hash.default = 0 arr.each {|x| hash[x] += 1 } p hash.keys.select {|k| hash[k] > 1 }
476 名前:470 mailto:sage [2009/08/28(金) 21:24:24 ] みなさん色々な案ありがとうございます 参考にさせてもらいます!
477 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 07:31:27 ] One Click InstallerだかをWindowsで入れると、 RUBYOPT=-rubygems だかを環境変数に設定するというような余計な(親切な)ことをしてくれるわけですが、 これって、 require "rubygems" する必要がなくなるわけですよね? 他の環境などで同じようなこと(RUBYOPT=-rubygems) している人っていますか? やっぱり、require "rubygems"をソース内に書いた方がいいものですかね?
478 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 09:13:38 ] require "rubygems" は必ず書かなければならない 俺が RUBYOPT を嫌いな理由の一つ わざわざ可搬性下げて何をしたいのか
479 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 09:45:31 ] あとから広まって事実上の標準になる予定だったんだよ
480 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 09:51:04 ] 別に RUBYOPT は rubygems 用の機能じゃねえが、1.9 で組み込みになったから RUBYOPT=-rubygems に関してはもう無用の長物だな
481 名前:デフォルトの名無しさん [2009/08/29(土) 10:20:24 ] >>470 ary.group_by{|e|e}.to_a.select{|e|e[1].size>1}.map(&:first) とか ary.sort.each_cons(2).select{|x,y|x==y}.map(&:first).uniq とか
482 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 10:55:34 ] >>481 selectするならto_aはいらん と思ったが、multiple values for a block parameter (2 for 1)とい う警告が何度も出るのか ary.group_by{|e|e}.select{|e,l|l.size>1}.map(&:first)
483 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 10:56:49 ] >>478 > 俺が RUBYOPT を嫌いな理由の一つ 「江戸の仇を長崎で討つ」ってやつか
484 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 11:15:11 ] そもそもrubygemsが嫌い
485 名前:sage [2009/08/30(日) 00:10:43 ] 同一のテーブル構造をもつデータベースAとBがあって、 データベースの内容を比較したいです。 どちらのデータベースもSQLiteのファイルです。 ActiveRecordというのを使うのが簡単そうなのですが、 可能なのでしょうか? というのは調べてみるとActiveRecordでは、 データベースへの接続(ActiveRecord::Base.establish_connection)とか、 レコードの検索を、クラスメソッドで操作しています。 となると、上記のように同一クラスから 別々のデータベースへ接続するインスタンスを作成して、 インスタンス経由で操作するという使い方はできないように見えます。
486 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 01:08:00 ] >>485 SQLite3::Database.new(file)で両方のデータベース開いて テーブル毎にレコードの比較した方が楽な気がする
487 名前:sage [2009/08/30(日) 01:38:36 ] >>486 回答ありがとうございます。 SQL書かずにActiveRecordでできたら楽勝! と思っていたのでなんとかならないかなーと。
488 名前:名無しさん@そうだ選挙に行こう [2009/08/30(日) 07:42:50 ] 初めまして。 質問です。 今やってるプロジェクトが、以前、rubyのMVCフレームワークによって書かれました。 その開発した方が、/public_html/.htaccessで何らかの設定をしました。 今回、/public_html/manage/配下にphpのMVCフレームワークを使用して開発することに なったのですが、/manage/.htaccessで設定しても親ディレクトリの.htaccessの影響を受けて /manage/配下のファイルにアクセスしても、404になってしまいます。 /public_html/.htaccessの内容も分からず、なるだけ触りたくないのですが、 サブディレクトリの.htaccessで、親ディレクトリの.htaccessの影響を全く受けないようにすることは可能でしょうか。 お忙しいところ、すみません。 よろしくお願いします。
489 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 08:28:56 ] Ruby 関係ねえ .htaccess の書式勉強しろ
490 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 08:36:08 ] Ruby関係ないからスレチ > .htaccessの内容も分からず、なるだけ触りたくないのですが、 それを晒さないと。というより、せめて自分で読んでみないと。
491 名前:488 [2009/08/30(日) 10:00:38 ] ご返信ありがとうございます。 サーバーを見てみたのですが、 /public_html/には、.htaccessがありませんでした。 ただ、404の設定がしてあるので、どこかでそのような設定がなされているものと思います。 /public_html/配下には、rubyのRailsで開発してあるようです。 /public_html/manage/には、今回のPHP開発に必要なcakephpのMVCフレームワークが設定してあります。 その.htaccessは、 <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L] </IfModule> となっています。 例えば、domain.com/manage/css/layout.css にアクセスした場合は、 /public_html/manage/app/webroot/css/layout.cssのファイルが読み込まれる設定にしてあります。 外のサーバー(public_htmlにrubyで設計したファイルが置いてないもの)で試したらちゃんと読み込まれていたので、/public_html/manage/配下は正しく設定してあるはずです。 しかし、domain.com/manage/css/layout.css にアクセスすると、404が返ってきます。 /public_html/には、rubyのMVCフレームワークで設計されたファイルがたくさんあり、 私はrubyを知らないので、何かしらの設定がなっているはずなのですが、どこでどうなっているのか分かりません。 たぶん、domain.com/manage/css/layout.css にアクセスしても、 cakephpのシステムは読み込まれず、元々のRuby Railsのシステムで処理されていると思います。 本来、domain.com/manage/ooo/xxx/ にアクセスすると処理されるのですが、 これも404に行きます。 でも、domain.com/manage/index.php/ooo/xxx/ とアクセスすると処理されます。 もし何かご存知でしたら、教えて頂けないでしょうか。 よろしくお願い致します。
492 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 11:01:02 ] 可能
493 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 11:05:08 ] /public_html/.htaccess <IfModule mod_rewrite.c> RewriteEngine on RewriteRule manage\/$ manage/app/webroot/ [L] RewriteRule manage\/(.*) manage/app/webroot/$1 [L] </IfModule>
494 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 11:12:58 ] てか Ruby 全く関係ねーということがわかってなお居座るのってなんなの頭悪いの
495 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 12:43:36 ] >>494 自分で正しいことをしていると思っているイタイタイプ 周りでは陰で嫌われているのに気づかないタイプ
496 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 12:45:40 ] 自分の目的が果たされれば何をしても構わないと思ってるタイプ
497 名前:sage [2009/08/30(日) 12:54:11 ] >>485 です。 ActiveRecordで、ひとつのモデルで 複数のデータベースに接続するという 使い方ができるか、あきらめきれずにさらにググったところ、 magic_multi_connectionsというgemが見つかりました。 Magic-MultiConnections: magicmodels.rubyforge.org/magic_multi_connections/ とはいえ、ActiveRecordが当初想定している使い方 ではないということがはっきりしました。 他にちょうどいいO/Rマッパってないですか?
498 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 12:59:58 ] ソウダネ、IDナイカラ、ダレガダレダカサッパリワカラナイネ。
499 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 13:02:53 ] >>497 自作のORe真っ裸ならあるけど
500 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 15:59:01 ] >>491 すげーなー。 そのhtaccessファイルの中身の何がおかしいのかもわからない・調べられないのに、 Webアプリケーションを開発しようなんて。 恐ろしくて使いたくないぜ。
501 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 16:29:07 ] >>497 テーブルの差異を調べるプログラム位、数十分で書けるだろ 二度と使わないかもしれないORMの調査に無駄な時間を費すの? dbs = [file1,file2].map {|fn| SQLite3::Database.new(fn) } dbs[0].tables.each do |table| # tablesなんてメソッドがあるとして results = dbs.map {|db| db.execute("select * from #{table}") } # results を比較 : end
502 名前:名無しさん@そうだ選挙に行こう [2009/08/30(日) 16:37:20 ] SQLを書きたくないんじゃなくて 書けないの間違いだろうな。。
503 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 16:42:22 ] クエリに文字列埋め込みステキです
504 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 16:43:44 ] 何を言ってるの ユーザーがSQLを直接発行するだなんて悪手中の悪手じゃないか 適当にうまくやるよボタンを押すだけで内部でSQLが組み立てられて 結果のデータのみがユーザーに返ってくるというのが正しいありかただろう
505 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 16:48:36 ] >>504 そうなんだよねえ 結局SQLを書かせなければならないことになって深く絶望したわ なんとかならんもんかね
506 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 16:52:28 ] > SQLite3::Database.new(file)で両方のデータベース開いて > テーブル毎にレコードの比較した方が楽な気がする 答えでてるじゃん。 終了
507 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 17:05:53 ] Ruby使うまでもなくdumpしてdiffとればいいんじゃない。
508 名前:デフォルトの名無しさん mailto:sage [2009/08/30(日) 21:07:16 ] なんだろう。 >>501 を信じてそのままドンってやって、ガツンと応答不能になり得たりしそうなこの不安感。 初心者スレでこれはありなんだろうか。 >>501 の論旨からいうならもうちょっと、丁寧に逐次的に例を出す文脈ではなかろうか。
509 名前:501 mailto:sage [2009/08/30(日) 21:41:49 ] >>508 俺に遠慮する必要は無い、君が教えてあげてくれ
510 名前:sage [2009/08/30(日) 22:44:10 ] >>485 です。 ActiveRecordではなくてSequelというのが 良さそうというのがわかりました。 Sequel: sequel.rubyforge.org/ こんな感じで書けます。 DBLeft = Sequel.sqlite("./left.sqlite") left_table_foo = DBLeft[:table_foo] DBRight = Sequel.sqlite("./right.sqlite") right_table_foo = DBRight[:table_foo] left_table_foo.each do |left_rec| # right_tableのレコードと比較する end なんかしつこく質問してしまったみたいですみません。 でも回答してくれて助かりました。では。
511 名前:デフォルトの名無しさん [2009/08/31(月) 01:39:52 ] WinXPで1.8.6です。 文字列を16進ダンプしたものの中に、2バイト文字が含まれているか どうかを判定するにはどうしたら良いでしょうか? 変換コードは下記の通りです。 arr0 = dataStr.unpack("H*")[0].scan(/[0-9a-f]{2}/) arr1= arr0.to_s + "\n" 対象のdataStrが Rec の場合 arr1 が 52,65,63 になりますが、 Rク では 52,83,4e です。この場合、真ん中の16進数の83を元に 判定するのでしょうか?
512 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 01:47:10 ] >>511 文字コード決めないと「2バイト文字」を定義できなくないか?
513 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 02:29:10 ] >>512 ク で 83,4e です
514 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 02:36:12 ] zenkaku=false arr0.each do |c| if c>128 do zenkaku=true end end
515 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 03:04:38 ] >>511 NKF.guess
516 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 03:32:36 ] globってなんであんな低機能なまま放置されてんの?
517 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 05:32:46 ] cgiてなんであんな低能なまま放置されてんの?
518 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 06:20:02 ] cgiは酷いね。参考にも成らない。 いい加減、政権交代の様に入れ替えるべき。
519 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 06:29:17 ] cgiに関しては、政権交代!ばかりいってるだけだし民主党よりヒドイw
520 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 08:48:25 ] >>518 ヒント:安定した候補者がいない
521 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 09:06:31 ] 候補者はいるだろ。その候補者を使えるレベルまでもっていくやつがだれもいないだけで。 WEBrickのcgiライブラリのことなんだけど。
522 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 09:14:12 ] WEBrick::Sessionがないのはある意味象徴的
523 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 09:19:35 ] これは何度でも言うが、作るだけなら立候補は何人もいるしいくつも作品があるんだよ 作るということとメンテナンスを引き受けるということとは全く違う スレ違いだが
524 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 09:22:23 ] >>523 >作るだけなら立候補は何人もいるしいくつも作品があるんだよ いくつもあるとは知らなかった。 ぜひ紹介してくれ。
525 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 09:24:01 ] ネット関連のライブラリは魔界だ バージョン0.3まで行かずに放置されるのばっかじゃん
526 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 09:43:34 ] Rackがバージョン1.0になって有力候補か? と思いきや CGIで動かすと落ちるバグがあり、しかもなかなか修正リリースが出ないというオチ
527 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 09:48:25 ] そんなに悪いところがわかってるなら自分で作ればいいじゃん
528 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 10:01:21 ] みんな忙しい。
529 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 10:11:30 ] 出したコードにはコミュニティ上の責任もたんといかんのでな 書きっぱで後は知らん、というような人はどの世界でもノーサンキューだ
530 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 12:13:02 ] 口だけじゃないかw
531 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 12:16:14 ] みんな忙しい。 みんな忙しい。 みんな忙しい。
532 名前:511 mailto:sage [2009/08/31(月) 13:04:08 ] >>512-515 有難うございます。 514さんの方法を採用しました。
533 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 13:20:40 ] Perl や Python の CGI ライブラリを移植するのはどうだろうね
534 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 13:52:18 ] それは新しい実に新しい
535 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 14:36:41 ] じゃあわかりやすいところで Perl の CGI.pm から始めようぜ
536 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 14:46:39 ] (ぐるぐるぐる) CGI.rb ができましたー 新しいスクリプトが欲しいんじゃなくて、スクリプトを継続的にメンテナンスできる人材が欲しいのよ 新機能をガンガン盛り込む人材ってのはとりあえずはコア近辺には要らないんだ
537 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 15:00:06 ] だれだよお前
538 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 15:13:23 ] >>536 >新しいスクリプトが欲しいんじゃなくて、スクリプトを継続的にメンテナンスできる人材が欲しいのよ それどうやって判断するの?人材がいたとして、そいつがおまえのいう条件を満たしているかどうかって、だれがどうやって判断するのさ? だいたい、CGI.rbなんてtDiaryでもHikiでもつかってるんだろうが。それだけユーザ数が多いのに担当できるだけの人材がいない/いなかったのかよ? ほんとうに人材が欲しいなら、公式にアナウンスしろよ。このライブラリのメンテな求めてます、条件はこうこうです、と公式サイトに載せればいいだろ。 ろくに求人活動もせずに人がいないだの条件はどうのこうの、言い訳がましいわ。
539 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 15:16:54 ] スレ違いの内容で長文とか勘弁 他でやってね
540 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 15:28:35 ] >>538 じゃあお前やれよ。
541 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 17:45:00 ] >>511 >>514 c>128 -> c>=128
542 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 17:47:00 ] CGI.rbの上位互換wrapperがあればいいんだよね oreoreCGIなら作ったけど
543 名前:デフォルトの名無しさん mailto:sage [2009/08/31(月) 17:58:11 ] >>542 あんまりよくないと思う Rackの修正リリースが出て、標準添付になれば一番いい
544 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 17:55:47 ] 配列A1, A2, A3, ... Anから要素を1個ずつ取り出した結果を網羅した配列Xを作る。 ・・・やってくれるメソッドなかったっけ?
545 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 18:06:46 ] >>544 Array#transposeのこと?
546 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 18:16:27 ] ありがとう、調べてみました。近いけど、違う。 p [[1,2], [3,4], [5,6]].transpose # => [[1, 3, 5], [2, 4, 6]] これが下のようになってくれたら期待通りなのです。 # => [[1, 3, 5], [1, 3, 6], [1, 4, 5], [1, 4, 6], [2, 3, 5], [2, 3, 6], [2, 4, 5], [2, 4, 6]]
547 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 18:27:24 ] data = [[1,2],[3,4],[5,6]] p data[0].product(*data[1..-1])
548 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 18:38:41 ] てゆーか初心者はきちんとeach使え 小手先だけだと詰まるぞ
549 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 18:58:34 ] >>548 そうかproductか!1.8.7から入ったんですね。それっぽいキーワードで ググってもなかなか見つからなかった。どうもです。
550 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 19:11:53 ] >>548 行列的操作関連はeach使ったほうがややこしくなりそうな気がする 転置行列は転置行列でしかないわけだし
551 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 19:40:28 ] すまん網羅って見落としてた それにしてもdata.productって書けそうで書けないのかw >>548 eachで実装した方法を提示するならともかく 初心者に書かせるレベルにならないと思うぞ
552 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 01:25:47 ] >>551 >eachで実装した方法を提示するならともかく >初心者に書かせるレベルにならないと思うぞ +1
553 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 02:34:28 ] def cartesian_product(*data) raise if data.size < 2 data.inject([[]]) do |product, items| product.inject([]) do |r, elem| r += items.map {|i| elem + [i] } end end end
554 名前:488 [2009/09/03(木) 05:40:09 ] 無知ですみません。 自分なりに色々調べた結果、Passenger/mod_railsを使っているため、 /manage/の.htaccessが、それによって上書きされているようです。 /public_html/フォルダはRuby railsで開発されており、 今回、/public_html/manage/にPHPで開発することになりました。 私は、Rubyを全く知らない&.htaccess初心者なので、このような事態に陥っています。 RailsAllowModRewrite On を使えば、なおるようなのですが、 /manage/.htaccessでそのように設定しても、/manage/.htaccessに設定してあることが 有効になりません。 どなたか知っていたら教えて頂けないでしょうか。 よろしくお願いします。
555 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 06:29:57 ] >>554 板違い pc11.2ch.net/test/read.cgi/php/1241100447/