質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

679閲覧

Rails ハッシュの絞り処理

t.s_k

総合スコア61

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2018/10/18 01:43

以下はdivmodを使い、変数xを7で割った商と余りを出力させるソースです。
ここに、divmodで返された配列[(商),(余り)]に処理を加えたい(余りが0でないかつ最小のハッシュ要素のみを残したい)のですが、どのように書けばよろしいでしょうか。

rb

1hash = Hash.new(0) 2 3for x in 1 .. 10 4 if 7/x != 0 5 p ("#{7.divmod(x)} when x = #{x}") 6 hash[x] = 7.divmod(x) 7 end 8end 9 10puts hash 11 12# "[7, 0] when x = 1" 13# "[3, 1] when x = 2" 14# "[2, 1] when x = 3" 15# "[1, 3] when x = 4" 16# "[1, 2] when x = 5" 17# "[1, 1] when x = 6" 18# "[1, 0] when x = 7" 19# {1=>[7, 0], 2=>[3, 1], 3=>[2, 1], 4=>[1, 3], 5=>[1, 2], 6=>[1, 1], 7=>[1, 0]}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

質問の意味がよくわかりませんが、
最終的なhashから余りが0でなく且つ最小のものを絞り込むのであれば

ruby

1hash.select{ |k,v| v[1] != 0 && v[1] == hash.map{ |x,y| y[1] if y[1] != 0 }.compact.min } 2#=> {2=>[3, 1], 3=>[2, 1], 6=>[1, 1]}

divmodで返された配列の余りが0でないもののみを集めたいのであれば

ruby

1for x in 1 .. 10 2 if 7/x != 0 3 next if 7.divmod(x)[1] == 0 # 追加 4 hash[x] = 7.divmod(x) 5 end 6end 7 8# rubyっぽく書くなら ----- 9(1..10).each do |x| 10 next if 7/x == 0 || 7.divmod(x)[1] == 0 11 hash[x] = 7.divmod(x) 12 end 13end 14# -------------------- 15 16hash 17#=> {2=>[3, 1], 3=>[2, 1], 4=>[1, 3], 5=>[1, 2], 6=>[1, 1]}

といったところですかね?

投稿2018/10/18 04:57

編集2018/10/18 05:27
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問