- 1 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 00:26:33 ]
- プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
【Ruby1.9 は不安定な開発版であり初心者には全く向きません】 【最新安定版の Ruby1.8.6 の使用を強くお勧めします】 関連スレや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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
- 484 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 14:54:50 ]
- >>482
def sum(n);n*(n+1)/2;end
- 485 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 15:58:44 ]
- >>484 が良い解だと思うけど、Ruby的には
def sum(n); (1..n).inject{|a,b|a+b}; end という風にできることを知っていると後で役に立つかも。 立たないかも。
- 486 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 18:37:59 ]
- 似たような演算を多数作るなら、以下のように。
ただし>485の5倍程度の時間がかかる。(毎回evalのため) def fn_maker(fn,lst);lst.inject{|r,i|eval("r"+fn+"i")};end def summerise(x);fn_maker("+",x);end def multiple(x);fn_maker("*",x);end def divide(x);fn_maker("/",x);end def subtract(x);fn_maker("-",x);end def sum_1_to_n(n);summerise(1..n);end p sum_1_to_n(10) a=[3.0,5,2] p summerise(a) p multiple(a) p divide(a) p subtract(a)
|

|