• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ruby inject)

ruby injectでエラーが発生し、ハッシュを作れない理由は何ですか?

このQ&Aのポイント
  • rubyのinjectメソッドを使用してハッシュを作成しようとしたところ、エラーが発生しました。
  • エラーメッセージによると、string not matched (IndexError)というエラーが発生しています。
  • 正しい形式のハッシュが作成されなかったため、エラーが発生しているようです。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4857/10273)
回答No.1

injectはブロックの結果つまりv[:b]が、次のhになります。それは意図と違いますよね。 ~.inject(Hash.new(0)){|h,v| h[v[:a]]=v[:b]; h} と、ブロックの結果が h になるようにしてください。

kingfruits
質問者

お礼

有難うございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Rubyのルンゲクッタ法がうまくいきません

    Rubyでルンゲクッタ法でy=exp(x**2)と比較しようという問題で、下のようなプログラムを組むとyの値がかなり大きくなってしまいます。どこが間違っているのでしょうか。教えてください。 #! ruby -Ks #ルンゲックッタ def df(a,b) z=2*a*b return z end n=10 x=Array.new(n) y=Array.new(n) x[0]=0.0 y[0]=1.0 h=1.0/n #任意で変更 fw=File.open("output2.txt","w") for i in 0..n k1=df(x[i],y[i])*h k2=df(x[i]+h/2,y[i]+k1/2)*h k3=df(x[i]+h/2,y[i]+k2/2)*h k4=df(x[i]+h,y[i]+k3) k=(k1+2*k2+2*k3+k4)/6 x[i+1]=x[i]+h y[i+1]=y[i]+k fw.print x[i]," ",y[i]," ","\n" end fw.close()

    • ベストアンサー
    • Ruby
  • ruby 1.9.3のrequireについて

    はじめまして。 私は今初めてrubyの勉強をしています。 使用している参考書はたのしいruby第3です。 ruby 1.9.3-P1.9.4でのrequireについて 今回質問させていただく内容としては requireを使用し外部ファイルを読み込もうとするとエラーになってしま.います。 同じディレクトリにファイルを置いています。 ディレクトリ構造として c:\workspaceの中にscopetest.rbとsub.rbをおいております。 scopetest.rb $x = 0 x = 0 require "sub" p $x p x sub.rb $x = 1 x = 1 実行コマンド ruby scopetestr.rb エラー C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- sub (LoadError) from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:i n `require' from scopetest.rb:4:in `<main>' 参考書と同じにやっているのですがエラーがでてしまいます。 初歩的な質問かもしれませんがよろしくおねがいいたします。

    • ベストアンサー
    • Ruby
  • 副問い合わせの不可解な問題

    情報処理試験を受験しようと思いますが、前提知識の補強に今苦戦しています。SQLの問題で以下の出題趣旨と解答の理由がわかりませんでした。どなたか解釈いただければ幸いです。 問)次の表1と表2に対するSQL文のうち、適切なものはどれか 表1        表2 X | Y |Z |   X | Y |Z | a1 | b1|1|  d1 | e1|1| a2 | b2|1|  d2 | e2|1| a3 | b3|2|  d3 | e3|2| ア.Select X FROM 表1  WHERE ( SELECT Y FROM 表2 ) = Y イ.Select X FROM 表1  WHERE Y IN( SELECT * FROM 表2 WHERE Z = 1) ウ.Select X、Y FROM 表1  WHERE Y IN( SELECT Y FROM 表2 WHERE Z = 1) エ.Select X、Y FROM 表1  WHERE Y =( SELECT Y FROM 表2 WHERE Z = 1) 正解はウですが。ウではどのような表が最終的にできるのかわかりません。副問い合わせの仕組みはおぼろげに他の本でわかりましたが、本設問については何度考えてもわかりません。 どなたか助けてください。、。

  • 重積分の問題

    (1)∫∫∫_v dxdydz (V={(x,y,z)| x^2/a^2+y^2/b^2+z^2/c^2≦1}) (2)sin(x+y+z)の三重積分で領域Vは、V={(x,y,z)|0≦x,y,z≦π} (3)平面z=0上に面積確定の有開閉領域Dがあり、その面積をSとする。点Q=(a,b,h)(h>0)をとり、PをDの点として動かすとき、線分QP上の点全体の集合を、Dを底面、Qを頂点とする錐体と呼ぶ。この錐体の体積はSh/3であることを示せ。 上の三問なんですが、(1)は、xを固定して、領域Dとして、D={(y、z)|y^2/b^2+z^2/c^2≦1-x^2/a^2}として解こうとするのですがこれからどうすればわかりません。 (2)は答えは8なのですが、自分は-8になります。 (3)はさっぱりわかりません。 どうかよろしくお願いします。

  • 二次元配列のハッシュ版の記述方法?

    二次元配列のハッシュ版を実現させたいのですが、 以下の記述で正しいでしょうか? 構文に疎いので教えてください。 #!/usr/bin/perl %HASH_TEST = ( 'あ'=>{'A'=>'1', 'B'=>'2', 'C'=>'3'}, 'い'=>{'A'=>'4', 'B'=>'5', 'C'=>'6'}, ); print $HASH_TEST{'い'}{'B'}; #=> 5が表示されます。 exit; __END__

    • ベストアンサー
    • Perl
  • 重積分の計算

    次の三重積分を計算せよ。 (1)∫V x dxdydz V={(x,y,z)|z^2+y^2+z^2≦1、x^2+y^2≦z^2、z>0} (2)∫V xyzdxdydz/√(a^2x^2+b^2y^2+c^2z^2) V={(x,y,z)|x^2+y^2+z^2≦1、0≦x,y,z} ただしa>b>c>0 両方とも極座標変換を試みたのですが上手くいきませんでした。 どのような変換をすれば累次積分に帰着出来るのでしょうか? ちなみに答えは(1)がπ/8、(2)が(ab+bc+ca)/15(a+b)(b+c)(c+a)でした。

  • 【初歩的質問】重複データがある時のハッシュへの代入について

    perl5.8です。すごくしようもない質問で申し訳ないのですが、次のようなファイルfile.txtの内容を、ハッシュ%hashに入れていくとします。 --- file.txtの中身 --- a,1 c,3 a,1 b,2 c,3 ----------------------- --- ソース(抜粋) ----- open(IN, "file.txt"); @data = <IN>; close(IN); %hash = (); foreach(@data){ chomp $_; @out = split(/,/, $_); $hash{$out[0]} = $out[1]; } ----------------------- 上記の結果は当然ながら、$hash{a}=1,$hash{c}=3,$hash{b}=2となるのですが、重複したデータを読み込んでハッシュに入れようとした時に、ワーニングなりエラーがなにも出なかったのがちょっと気持ち悪いです。重複したキーを読み込んだ時は、内部的には黙ってはじいてくれていると解釈してよいのでしょうか?そうだとすると、こういう書き方は、重複した行を排除するテクニックとなりえるのでしょうか?

  • f(x)+g(y)+h(z)=C それぞれ定数

    f(x)+g(y)+h(z)=C (C:定数) が任意のx,y,zに対して成立するとき、f(x),g(y),h(z)はそれぞれ定数であることを示し、 それらの3つの定数の間の満たすべき関係式を求めよ。 という問題があるのですが、自分は 定数a,b,cについて、f(a),g(b),h(c)はそれぞれ定数となる。 f(x)+g(y)+h(z)=Cが任意のx,y,zに対して成立するので、 f(x)=C-g(b)-h(c) g(y)=C-h(c)-f(a) h(z)=C-f(a)-g(b) も成立するので、f(x),g(y),h(z)はそれぞれ定数である。 さらにこれらの辺々を加えると、 f(x)+g(y)+h(z)=3C-2(f(a)+g(b)+h(c)) となる。 という回答を考えたのですが、これでいいのでしょうか? よろしくお願いします。

  • 体心立方格子の逆ベクトルの最短

    G=v1b1+v2b2+v3b3=(2π/a)[(v2+v3)x+(v1+v3)y+(v1+v2)z] v1が1でそれ以外が0 v1が-1でそれ以外が0 v2が1でそれ以外が0 と計算していくと (2π/a)(y+z) (2π/a)(-y-z)… のように表すことができますがキッテルの個体物理学によると (2π/a)(y-z)や(2π/a)(-y+z)のような場合も正しいと書いてあります この理由を教えて下さい 注vはスカラー bは逆格子の基本並進ベクトル Gは逆格子ベクトル x,y,zは単位ベクトル aは陵の長さです

  • 数学(ベクトル)の問題

    三次元空間中の問題です 三次元空間中にある重ならない二点A(x1,y1,z1)とB(x2.y2,z2)があって、Aを通り、方向ベクトルV1=(v1x,v1y,v1z)である直線Y1とBを通り、方向ベクトルV2=(v2x,v2y,v2z)である直線Y2が交わらないとする。,A,B,V1,V2が分かっているとき、直線Y1とY2の最短距離と、その時のY1上の点A1,Y2上の点B1を求めなさい。また、どのような条件のもとで距離が最小になるかを考えなさい。 という問題があって分かりません。導出過程もお願いします。

このQ&Aのポイント
  • ファームウェアアップデートをしようとした際、ログインが必要とされましたが、IDとパスワードを持っていないため困っています。
  • 使用している環境はiOSで、接続は無線LANを使用しています。
  • 電話回線の種類はひかり回線です。
回答を見る