目的、行いたい事
N(i) = 2017/i
と言う数式があったとき N(i)
が整数のとき、その数を出力したいです。
試した事
すっごい雑ですが以下のような手順で出力できないか考えてみました。
num = 2017 num.times do |i| # (1)div_numに2017/(i+1)にあたる数を代入 # (2)boolにdiv_numが整数かどうか判定しその真偽値を代入 # (3)もし正だったらdiv_numを出力 if bool puts div_num end end
(1) div_numに2017/(i+1)にあたる数を代入
Rubyは割ると切り捨てされてしまうので以下のような書き方をしてココは乗り切りました。
div_num = num.quo(i+1).to_f
こうする事でちゃんと変数 div_num
に小数点も含めた数を代入する事ができました。
問題点
(2),(3)のセットが分からないです。
正規表現のリファレンスを見ると =~
を使って何番目でマッチングするか(素人なので実際は違う可能性アリ)を判定してくれるモノでした。
なので =~ /^[0-9]+$/
を使おうとしてもイマイチ今回の場合に使い勝手が良いとは思いませんでした。
っと言うのも、 =~ /^[0-9]+$/
を使って数値かnilかどうかしか判定できないからです。
a = 2017.quo(i+1).to_f.to_s bool = (a =~ /^[0-9]+$/).nil?
またこんな風に書こうと思ったら以下の部分で詰みました。
9] pry(main)> a = 2017.quo(i+1).to_f.to_s => "672.3333333333334" [10] pry(main)> bool = (a =~ /^[0-9]+$/).nil? => true [11] pry(main)> i = 0 => 0 [12] pry(main)> a = 2017.quo(i+1).to_f.to_s => "2017.0" [13] pry(main)> bool = (a =~ /^[0-9]+$/).nil? => true
ここら辺までやったぐらいで
おそらく、もっと単純にできると思ったの皆さんの知恵をお借りしたいです(っω<。)フキフキ
お願い致します >人<
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/15 05:46