[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 05/09 23:23 / Filesize : 180 KB / Number-of Response : 646
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Ruby 初心者スレッド Part 30



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を読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

109 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 18:51:43 ]
/¥b#{Regexp.union(File.read('words.txt').split)}¥b/
という話?


110 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 18:52:55 ]
あああ、yen になってしまった。 ¥ ← これもなっちまうかな……

111 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 19:51:19 ]
Regexp#=~とString#=~両方あるから右辺ってのが何かピンとこない

112 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 02:00:02 ]
子飼団って、堀江もんの仲間で情弱のマカだった様な。

113 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 04:48:18 ]
>>112
なんでそんなに悔しがってるの

114 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 05:48:28 ]
ビョーキの人にだけ悔しがってるように見える書き方をしたから。

115 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 07:17:45 ]
× ビョーキの人にだけ悔しがってるように見える書き方をしたから。
○ おちんちんびろーん

116 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 07:22:05 ]
>>115
なんでそんなに悔しがってるの

117 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 07:36:36 ]
おちんちんびろーん



118 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 08:06:20 ]
おまんまんがばーん

119 名前:デフォルトの名無しさん [2009/08/14(金) 03:40:25 ]
WinXPで1.8.6のwin32oleで、Excelよりデータの取得をする場合で質問です。

例えば、A1 〜 A5 を取得するには cells = sheet.Range("A1:A5") と書きますが、
データがある領域の全域を指定するにはどうしたら良いでしょうか?

行と列の数が5x3程度なら大したこと無いのですが、複数のシートが数千行x数十列の
データを持っている場合だと毎回スクロールして端の位置を確認しなければならず不便です。
どなたかよろしく願います。


120 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 04:58:36 ]
VBAの知識はあると仮定
「Excal シートの端」でぐぐったここ
ttp://oshiete1.watch.impress.co.jp/qa4146366.html

121 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 07:00:34 ]
pc12.2ch.net/test/read.cgi/tech/1137771139/
【OLE】オートメーション総合スレ【ActiveX】

122 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 11:48:54 ]
子飼団ってtwitterで、「いくぞ、ちんこぉぉぉぉぉぉぉぉぉぉぉぉ」とか、
「わしはでかいがあそこは小さい」とか「オ、オオオ、オ、奥野、奥野、奥野の肛門カッカッカカカツカヤツヤクカツ括約筋、ヒャー!」 」
とか言ってた奴だろ?下品すぎる信用できない

123 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 13:54:57 ]
>>120,121
さんくす
VBAの要領でできるんですね。


124 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 14:43:17 ]
Ruby通さないほうが書きやすいし正確だし速いんじゃね、とか思ったらこの支配からの卒業

125 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 00:01:21 ]
>>122
酒飲んでたとしたら許せるレベルだな。
括約筋ごときで下品って言ってどうする。

ゴルゴ13は、マンガの中で
女スパイとエッチして、
「この括約筋はロシア女だな」と
スパイの母国を言い当てたんだぞw

126 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 05:00:39 ]
自演醜い

127 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 05:02:35 ]
ここまで全部電網親方の自演



128 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 08:11:07 ]
>>125
上と下のレスのつながりがわからんw

129 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 08:16:31 ]
下品な話はぴんくちゃんねるでどうぞ

130 名前:デフォルトの名無しさん [2009/08/15(土) 16:08:48 ]
Ruby1.9系でシーザー暗号プログラムを作っています。
1.8では文字列配列をFixnumとして扱えましたが1.9ではStringが帰ってきます。
今、each_byteを使ってますがもっとスマートな方法を教えてください

131 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 16:16:37 ]
メールヘッダのMIMEエンコードはRubyではどうするのでしょうか?
Perlでいう以下です。

use Encode;

$text = "あ"; #ソースコードはcp932
Encode::from_to($text, "cp932", "MIME-Header-ISO_2022_JP");
print $text; #=>=?ISO-2022-JP?B?GyRCJCIbKEI=?=

132 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 16:57:03 ]
>>131
text = NKF.nkf('-M','あ')

133 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 17:14:27 ]
>>132
d

134 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 17:32:39 ]
>>130
文字列配列をFixnumで扱うのくだりがさっぱりわからんが、
Ruby1.8のStringはたまたまバイト列だっただけだ
バイト列として扱いたければeach_byte等で回せ


135 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 19:31:18 ]
1.9はpack unpackも使えないのか?

136 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 23:23:59 ]
>>130
str.tr("A-Z", "B-ZA")

137 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 23:32:30 ]
>>135
普通に使えるよ。



138 名前:デフォルトの名無しさん [2009/08/16(日) 04:39:04 ]
>>130です
"aaaa".bytes.to_a[2]
のような形で、同じようなことができるようです。答えてくださったかたありがとうございました

139 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 05:47:38 ]
スマートには見えんのだが…

140 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 06:04:49 ]
子飼団ってテレビとかに出てるくらいだから本来下衆でしょ。まともなら低能なマスゴミとは距離を置いてる。

141 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 06:16:40 ]
>>139
ホワイラーなんだと思う

142 名前:デフォルトの名無しさん [2009/08/16(日) 06:31:12 ]
>>139
codepad.org/rgAGQvq5

別に代入する所もいらないし、trと違って任意の数だけ進められる

143 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 07:16:44 ]
str.unpack('C*').collecgt {|x| x+i}.pack('C*')
なら1.0でも1.9でも動く


144 名前:デフォルトの名無しさん [2009/08/16(日) 20:07:42 ]
質問です。
使用している端末エミュレータの高さ(行数)を取得するには
どうすればいいのでしょうか?

145 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 20:09:55 ]
>>144
www.ruby-lang.org/ja/man/html/curses.html

146 名前:144 mailto:sage [2009/08/16(日) 22:44:47 ]
>>145
ありがとうございます。
Curses::lines でいけました。

147 名前:デフォルトの名無しさん [2009/08/17(月) 00:26:17 ]
class Parent
attr_accessor :foo
end
class Child < Parent
#...
end

という継承関係がある時、Childクラスではfooアクセッサーを
削除したいのですが、どうすればよいのでしょうか。
具体的に書きますと以下のように例外が発生してほしいです。

child = Child.new
p child.foo #=> 例外発生!



148 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 00:39:58 ]
Rubyにアクセサは存在しない
ただのメソッドだ

ということを踏まえると

class Parent
attr_accessor :foo
end
class Child < Parent
undef :foo
end

Child.new.foo

NoMethodError: undefined method `foo' for #<Child:0xb7d42530>
from (irb):8
from :0


149 名前:デフォルトの名無しさん [2009/08/17(月) 00:46:40 ]
リスコフの置換規則に違反することになるかもしれないが、undef_method :foo, :foo= というのがある。


150 名前:デフォルトの名無しさん [2009/08/17(月) 00:56:53 ]
>>143
codepad.org/QlJCG6Ry
できました。ありがとう

151 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 03:31:00 ]
リスコフなんて糞くらえ。
ってか変数に型が無い言語で継承するって、実装の継承しか無いんだから
undefでも好き勝手にしたらいいと思う。

え?俺OO分かってない?

152 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 04:29:32 ]
>>147の要求の時点でLSP無視なんだから何やっても構わんよ
特定のメソッドの有無に意味を持たせようとすること自体が邪悪

153 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 10:10:02 ]
> Rubyにアクセサは存在しない
このへんは後々尾を引いてくると推測

154 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 10:15:23 ]
特定のメソッドの有無こそがオブジェクトの本質ぢゃないか。

155 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 10:20:24 ]
Rubyにアクセサは存在しないっつーか、
アクセサは、作るもの(用意するもの)なんじゃねーの?
あるメソッドがアクセサかどうかというだけで。

156 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 10:45:20 ]
アクセサというシステム的なナニカがあるわけではない、という程度の意味なような気もする

たとえば、Object#accessors でアクセサメソッドの一覧が返るとか
def hoge と def hoge= と attr_reader :hoge と attr_writer :hoge を全部定義しても
hoge() と hoge=() と hoge と hoge= で全部別個に使い分けが可能だとか

157 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 14:34:53 ]
リファレンスマニュアル FAQより

www.ruby-lang.org/ja/man/html/FAQ_A5E1A5BDA5C3A5C9.html

> 5.4 オブジェクトのインスタンス変数を外から参照できますか
> 直接はできません。あらかじめそのオブジェクトにインスタンス変数を参照するためのメソッド (アクセサと言います)
> を定義しておく必要があります。たとえば以下のようにします。

メソッドとアクセサは同じレベルの概念じゃないだろ



158 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 14:44:57 ]
大変だ、>>157だけが明後日の方向に


159 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 15:05:41 ]
アクセサってのはインスタンス変数へのアクセスを提供する何かであって
それが言語によってメソッドだったり属性参照式だったりするということじゃないの?

160 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 15:35:17 ]
>>158
おまえが理解できてないだけだ

161 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 16:08:04 ]
だからさ、>>148が悪いんだよ

162 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 16:11:43 ]
「Rubyにはアクセサという機構は存在せず、メソッド定義で代用する」
「定義の簡便のためにattr*系のメソッドがあるが、メソッド定義以上のことを期待するのは勘弁してください」

こう書けばよかったんだな

163 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 16:44:41 ]
>>162が想定する他の言語のアクセサってどんなの?

164 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 16:46:42 ]
アクセサが言語レベルで実装されてる言語なんてあるのか?

165 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 16:48:22 ]
def attribute=(value)

これって明らかにアクセサ用の機能だろ

166 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 16:58:35 ]
初心者ですがまったく話がわかりません

167 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 17:01:10 ]
確かに、メソッド名の最後に(だけ)は = が使えるとか、
obj.foo = bar が obj.foo=(bar) の意味である、だとか、
言語レベルの機能だよな。



168 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 17:34:33 ]
テストファイルで Enumerable を拡張してるんですが、これってテストにならないですよね?

169 名前:106.79-160-162.customer.lyse.net mailto:age [2009/08/17(月) 17:53:40 ]
自動焼人 ★ = 自動保守 ◆KAWORUKOFI = 自動保守#K9K?_D[L

名言集 その3
『いつもサボってばかりのキャップがウゼえ』

yutori7.2ch.net/test/read.cgi/news4vip/1249830540/ ID:PVAf+dux0 = 自動焼人 ★
> 71 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:58:57.28 ID:PVAf+dux0
> >>69
> 大変って言うか
> 毎日、報告されたのを見て、判断して、処理して、完了報告して、以下ループ。
> ちょっとでもミスすると、普段は作業もしてないキャップさんたちがさんざん文句言ってきて
> その言いわけを考えないと、キャップはく奪されたりアカウント凍結されたりするから
>
> 登録されてから一年以上経って、やっといいたいこと言えるようになってきたよ。



----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
qb5.2ch.net/test/read.cgi/sec2chd/1250169591/
にて自動焼人 ★までご連絡ください

170 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 20:35:18 ]
Array#include?だと指定した値と等しい要素がある場合trueを返しますけど、
等しい要素数を返すにはselectで条件を満たす要素だけとりだしてそれのsizeを調べるしかないでしょうか?

171 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 20:52:31 ]
>>170
その通りです。

便乗して質問させて下さい。
include? ってなんで Array で再定義してるんでしょうか?
Enumerable#include? とは違う実装になってるんでしょうか?

172 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 20:53:08 ]
まあ基本的にはそう
grepしてもいいが、「一致する要素の数」というのを直接返すメソッドはない
というかもしあったとしても内部でfind_allしてsize求めるはず

173 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 20:58:51 ]
例として非nilを数える場合
[true,false,1, "a",nil,nil].inject(0){|r, i| r += (!i.nil?) ? 1 : 0}

書いてみたはいいけど汚いなぁ

174 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 21:11:12 ]
>>171
rb_ary_includesが遅いと困るからきちんと作ったのだと推測

175 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 21:16:15 ]
NTFSの副ストリームって対応してる?

176 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 21:19:19 ]
>>174
なるほど。Array#include? をネイティブに書いて少しでも性能をだそうとした
ということですね。

でも。。今 ruby-1.9.1-p129 の array.c 見てみたんだけど、すごく当たり前な
実装なんですね。
この程度でもネイティブ化すると結構速くなるものなんですかね?

177 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 21:22:49 ]
わざわざEnumerableで定義したのを探してアクセスする時間が惜しいからそばに入れたんじゃね

>>175
Windows版Rubyとして何かをしたという話は聞かない
コンパイルしたときに自動で何かがどうかできるのなら対応してるかも



178 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 21:25:45 ]
>>175
これで足りる?
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]

open('foo.txt', 'w'){|f| f.write('in foo.txt') }
open('foo.txt:sub', 'w'){|f| f.write('in foo.txt:sub') }

puts File.read('foo.txt')
puts File.read('foo.txt:sub')

179 名前:デフォルトの名無しさん [2009/08/17(月) 21:44:20 ]
>>173
低脳死ねカス
[true,false,1, "a",nil,nil].cmplact.length

180 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 21:49:39 ]
>>179
低能氏ねカス
s/cmplact/compact/

181 名前:デフォルトの名無しさん [2009/08/17(月) 21:54:05 ]
cmplact?

182 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 21:54:11 ]
length厨はマジでどうにかならんものか

183 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 21:58:14 ]
size の方が好きなのけ?

184 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 21:58:26 ]
>>170
sizeを調べる「しかない」わけではない。
cnt = 0
array.each {|x| cnt += 1 if some_condition(x) }
puts cnt
あまり美しくないけど、どうぞ。

185 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 22:12:45 ]
質問です。
SGEをダウンロードしたいのだけれども、
www.etek.chalmers.se/~e8cal1/sge/index.html
がNOT FOUNDになります。
いま、SGEはどこでダウンロードできますか?

186 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 22:27:53 ]
用途によって変えるっていう当たり前の答えが返ってくるとは思うけど・・・・


ary=["hage","hige","huge","hege","hoge"]
の要素数を出力したいときに
p ary.size
これはaryを後で別の処理が行われると思われる場合でしょ

んで、
p ["hage","hige","huge","hege","hoge"].size
これは確認したい時だけでしょ

んで、
ary_num=ary.size
p ary_num
ってやってる人がいるんだけど,これは変数が説明になってるってこと?

どの段階で処理したものを変数に入れるかってのがわかんない。好き好きかな?

187 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 22:44:15 ]
>aryを後で別の処理が行われると思われる場合
これは

["hage","hige","huge","hege","hoge"]
の要素数を出力したいときに
ary = ["hage","hige","huge","hege","hoge"]
p ary.size

という感じ
aryに代入するのが前提なら、一番目は最も素直

二番目は主に説明・動作確認・デバッグで使われる
代入するのもめんどくさいとかスペース減らしたいとかそういうのが主な理由

三番目は正直くどい
でも説明以外にも値をキャッシュしておきたいケースはあるし、そういう時には避けられない



188 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 22:45:40 ]
二番目は説明というかスレや記事とかでの解説だった

189 名前:186 mailto:sage [2009/08/17(月) 23:03:10 ]
>>187-188
2番めと3番めの説明がわかりやすかったです。ありがとうございます。

190 名前:デフォルトの名無しさん [2009/08/18(火) 00:40:37 ]
>>180
低脳死ね。タイプ量が多い
s/l//

191 名前:デフォルトの名無しさん [2009/08/18(火) 00:54:11 ]
>>190
低脳死ね。置換できてない。
cmplact => cmpact

正しくは
compact
 ^

192 名前:チンパンジー愛ちゃん [2009/08/18(火) 02:24:08 ]
>>191
うきっきーきーきぃっ

193 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 05:15:32 ]
>>185
質問するスレ間違ってね?
まあいいや、ここ行ってみ
ttp://www.archive.org/

194 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 09:49:05 ]
>>175
C:\> dir a.txt
(略)
2009/08/18 09:46 0 a.txt
(略)

C:\> ruby -e "open('a.txt:foo', 'w'){|f| f.write 'abc'}"

C:\> dir a.txt
(略)
2009/08/18 09:46 0 a.txt
(略)

C:\> ruby -e "p IO.read('a.txt:foo')"
"abc"


195 名前:デフォルトの名無しさん [2009/08/18(火) 14:13:54 ]
くだらない質問だと思いますが、文字列
a = "001011"
b = "000111"
から
c = "000011"
を求める(論理積?)にはどうしたら良いのでしょうか?

196 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 14:25:39 ]
irb> a = "001011"
irb> b = "000111"
irb> ax = a.split(//n)
irb> bx = b.split(//n)
irb> p (0..5).to_a.map{|i| ax[i].to_i & bx[i].to_i}.join
"000011"


197 名前:チンパンジー愛ちゃん [2009/08/18(火) 14:30:51 ]
def and_str(a, b)
return (Integer(a) & Integer(b)).to_s(2)
end



198 名前:チンパンジー愛ちゃん [2009/08/18(火) 14:33:05 ]
def and_str(a, b)
return (Integer("0b" + a) & Integer("0b" + b)).to_s(2)
end

199 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 14:38:04 ]
>>196
1.9 だけでいいなら a[i] で分割いらないんだけどな
どっちでも動作させるならまだ split がスレ的に無難か
めんどい負の遺産じゃのう

200 名前:195 mailto:sage [2009/08/18(火) 14:45:00 ]
>>196-199
ありがとうございました! 196が自分には理解しやすい一方、
198の方が速そうに見えるのですが(こちらはpaddingが必要ですね)
大量のデータを処理する際には、違いが出るでしょうか。

201 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 14:56:25 ]
100万桁を0.5秒で処理しないと銃殺されるとかそういう時にはチェックが必要

202 名前:195 mailto:sage [2009/08/18(火) 15:03:24 ]
そこまで深刻じゃないので、また両方試してみます!

203 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 15:21:38 ]
ハッシュがよくわからなくなったので質問させていただきます

h={"ja"=>{"a"=>1,"b"=>1,"c"=>0},
"usa"=>{"a"=>0,"b"=>0,"c"=>0}
}
となって次に
"usa"=>{"a"=>1,"b"=>1,"c"=>0}が出たら

h={"ja"=>{"a"=>1,"b"=>1,"c"=>0},
"usa"=>{"a"=>1,"b"=>1,"c"=>0}
}

となってほしいのですが,どうすればいいでしょうか?

説明が分かり辛いですが・・・
ループ内にハッシュのキーが一致したら加算していってほしいのです

204 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 15:25:02 ]
>>170
1.8.7以降なら Enumerable#count(obj)


205 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 15:29:26 ]
>>203
とりあえず usa = {"a"=>1,"b"=>1,"c"=>0} を h["usa"] に加算する場合
h["usa"].merge!(usa) { |k, s, d| s += d }

{ "usa" => {"a"=>1,"b"=>1,"c"=>0} } でやりたいなら適当にネストさせて

206 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 15:30:16 ]
代入いらねーよorz
h["usa"].merge!(usa) { |k, s, d| s + d }

207 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 15:37:29 ]
>>198
def and_str(a, b)
sprintf("%.*b", [a.length, b.length].max, (a.to_i(2) & b.to_i(2)))
end




208 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 15:43:26 ]
>>203
最初はとにかくやりたいことをそのまま書くといい
多くの場合、そのまま実行しても充分に速い

def add(base, key, val)
if tgt = base[key]
val.each_pair do |k,v|
if tgt[k] then
tgt[k] = tgt[k] + v
else
tgt[k] = v
end
end
else
base[key] = val
end
end

h={"ja"=>{"a"=>1,"b"=>1,"c"=>0},
"usa"=>{"a"=>0,"b"=>0,"c"=>0}
}
add(h, 'usa', {"a"=>1,"b"=>1,"c"=>0})
p h


{"ja"=>{"a"=>1, "b"=>1, "c"=>0}, "usa"=>{"a"=>1, "b"=>1, "c"=>0}}


209 名前:203 mailto:sage [2009/08/18(火) 16:27:26 ]
>>205-206,>>208
ありがとうございます。mergeを使ったりやaddを定義するのですね。

本当は
require 'pp'
ary=%w(w1 w2 w3 w4 w2 w3 w1 w1 w5 w2 w3 w4)
window =6
hout=Hash.new
ary.size.times{ |i|
hin=Hash.new(0)
hc =Hash.new(0)

b= ary[i+1,window].select { |word| word =~ /[^#{ary[i]}]/ }
pp b
b.each {|count| hin[count] +=1}
hout[ary[i]] = hin
puts "@@@"
pp hout
puts "@@@"

}
pp hout

こんなことをやってます。
最後の pp houtが自分の思ったものと違っていて悩んでいます.
完全質問だと悪いと思って203で質問しました。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<180KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef