1 名前: 【大吉】 mailto:sage [2009/01/01(木) 13:13:22 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 【Ruby1.9 は不安定な開発版であり初心者には全く向きません】 【最新安定版の Ruby1.8.7 の使用をお勧めします】 ※1.8.7 は1.8 と 1.9 の橋渡しをするためのリリースです。 1.9 の新機能の一部が利用可能なので初学者にお勧めです。 ※ただし十分安定しているとは言えないので プロダクション環境での利用にはお勧めしません。 関連スレやURLは>>2-8 あたりを見てください。Ruby on Railsの質問は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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
631 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:26:54 ] とりあえずは普通に数えればいい overlap = Array.new b.each do |bb| count = 0 a.each do |aa| count = count + 1 if aa == bb end overlap << [bb, count] end overlap.each do |i, n| puts "#{i} の重複は #{n} 個です" end めんどくさい人向け overlap = b.map{|e| [e, a.grep(e).size] }
632 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:27:07 ] h=Hash.new h.default=0 a.each do |i| h[i]+=1 end 俺も初心者に毛が生えた程度なので、より良いのがあれば指摘求む
633 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:28:53 ] def uniq_c(org) counts = {} org.uniq.each{|e| counts[e] = org.count(e) } counts end とか。#countがどっから入ったか怪しいけど。 こーいう要望は割と定番なのでRuby "uniq -c"とかでググるとよろし
634 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:32:36 ] 確認したらArray#countはRUBY_VERSION >= '1.8.7'だった。代わり org.count(e) -> org.select{|x| e == x }.size