もし次の常駐先が女子エンジニアばっかりだったら「緑川つばめを窮地から救え」解説(Ruby)
masarumasuです。
今回はPaizaにて行われているプログラミング問題が解ける「もし次の常駐先が女子エンジニアばっかりだったら」から「緑川つばめを窮地から救え」の解説をしたいと思います。使用言語はRubyです。
ほんとは問題を載せたかったけど、正解した後じゃみれないっぽいので回答だけ公開します。問題の概要は「1から10000000までの適当な数値が入力されるから、それを四捨五入を繰り返して、出来るだけ大きな値にして」という感じです。
a = gets.chomp.to_i
if a<5
puts a
elsif a<10
puts "10"
elsif a<100
b=a.round(-1)
c=b.round(-2)
numbers=[a,b,c]
puts numbers.max
elsif a<1000
b=a.round(-1)
c=b.round(-2)
d=c.round(-3)
numbers=[a,b,c,d]
puts numbers.max
elsif a<10000
b=a.round(-1)
c=b.round(-2)
d=c.round(-3)
e=d.round(-4)
numbers=[a,b,c,d,e]
puts numbers.max
elsif a<100000
b=a.round(-1)
c=b.round(-2)
d=c.round(-3)
e=d.round(-4)
f=e.round(-5)
numbers=[a,b,c,d,e,f]
puts numbers.max
elsif a<1000000
b=a.round(-1)
c=b.round(-2)
d=c.round(-3)
e=d.round(-4)
f=e.round(-5)
g=f.round(-6)
numbers=[a,b,c,d,e,f,g]
puts numbers.max
elsif a<10000000
b=a.round(-1)
c=b.round(-2)
d=c.round(-3)
e=d.round(-4)
f=e.round(-5)
g=f.round(-6)
h=g.round(-7)
numbers=[a,b,c,d,e,f,g,h]
puts numbers.max
end
ロジックとしては1から入力された値が取る最大の位まで四捨五入して、その中で一番大きな値を出力するといった感じです。いろいろなパターンを想定して試行錯誤しましたが、結局はシンプルなロジックに落ち着くんやなと思いました。
今回は
if文
roundメソッド
maxメソッド
の知識があれば解けます。