sugulogの日記

あなたは読み解ける?Ruby問題集、コードを読み解こう!!No.2

スポンサードリンク

f:id:sugulog:20200928154624p:plain
こんにちは、すぐるです!

sugulogをお読みいただきありがとうございます!!

このブログは、「 過去の無知な自分に向けてわかりやすく説明するなら?? 」を基準に書いています。

少しでもお役に立てれば幸いです。

 

今回は、あなたは読み解ける?ということで

  • Ruby問題集 No.2

を記述していきます!!

その為このブログを読むことで、Rubyのコード力が上がるのはもちろん、全体的なレベルアップに繋がります。

また、新しいRubyの問題に出会うたびに追記していきます!!

是非最後までご愛読ください。

※解説で示しているのは1例のため、ご了承ください。

 

Ruby問題集 No.2

Rubyの問題に出会った順に書いてます。

制限時間のない謎解き地獄にはまりながら学習した思い出順なのでご了承ください。

1.税込価格(1.08%)を返すメソッドを定義しなさい。

解説

f:id:sugulog:20201024175341p:plain

メソッドを定義する際は、def〜end間に処理を記述します。

まずは5行目で、入力された値をnumに代入しています。

8行目でメソッドtaxを呼び出し、その際に引数としてnumを渡しています。

1行目で引数numを受け取り、2行目でそのnumをもとに税込価格の計算を行っています。

後は3行目でその結果を表示させることで、関数のが定義できました。

2.入力された数を1から順に出力するメソッドを定義し、その関数の中で3の倍数なら「sugu」 5の倍数なら「log」 両方の倍数なら「sugulog」と出力されるようにしなさい。

例)15と入力された場合は以下のように表示される。

f:id:sugulog:20201024181620p:plain

解説

f:id:sugulog:20201024181746p:plain

まずは16行目で数を入力させ、nに代入しています。

18行目でメソッドを呼び出し引数nを渡し、1行目で受け取っています。

入力された数に対し1から順に表示させるので、今回はtimesメソッドを使いました。

入力された値、つまり引数で受け取ったn回数分繰り返し実行されます。

3行目ではtimesメソッドのブロック変数は繰り返す回数に対し1ずつ値が増えていくので、それを利用しnumに代入しています。

ただし0から数えるため+1しています。

次に倍数はある数をある数で割った時に余りのない状態、つまりnum % 3 == 0のように表すことができます。

後はif文を使い条件が厳しいnum % 15 == 0から記述し、それぞれの処理を記述していくことで関数が定義できます。

3.配列内に1、2、3が全て入っていればTrue、それ以外はFalseと出力されるメソッドを定義しなさい。

解説

f:id:sugulog:20201024202715p:plain

引数のarrayは配列を表していることにします。

今回の条件としては配列の中に1、2、3を全て含んでいるかどうか、つまりinclude?と&&を使いif文を定義してあげることによって条件を記述することができます。

4.2桁の整数を入力すると十の位と一の位の数字の足し算、十の位と一の位の数字の掛け算をそれぞれ行い、最後に2つの結果を足し合わせて出力するメソッドを定義しなさい。

解説

f:id:sugulog:20201025135230p:plain

まず13行目で値を入力してもらい、numに代入しています。

14行目ではメソッドを呼び出すと同時に引数numを渡し、1行目で受け取っています。

次に2行目ですが、十の位を取り出し方法としてはある数を10で割り、その値をさらに10で割った時に出る余りの値で取得することができます。

一の位の場合はある数を1で割り、その値をさらに10で割った時に出る余りの値で取得することができます。

※解説画像の例)を参照してください。

後は処理させたい条件に従い、5行目で十の位と一の位を足し、6行目では掛けています。

最後に足して出た値と掛けて出た値を足して出力することで、メソッドが定義できます。

5.任意の2つの文字列があり、どちらかの文字列がもう一方の文字列の最後にある場合はTrueを、ない場合はFalseを出力するメソッドを定義しなさい。

例)"log"と"sugulog"ならTure、"sugu"と"sugulog"ならFalse

解説

f:id:sugulog:20201025153444p:plain

今回引数a、bは任意の2つの文字列を表しています。

まず2行目、3行目でそれぞれの文字数を数えています。

そして4 行目ですが、sliceメソッドを使い互いの文字列の中に互いの文字列が含まれているかを確認しています。

※解説画像の例)を参照してください。

またsliceメソッドで(-3..-1)のように指定することで、文字列の後ろから1〜3文字目までを取得することができます。

この結果、どちらかの文字列がもう一方の文字列の最後にある場合はTureを、ない場合はFalseを出力するif文を記述しています。

 

以上、今回のブログでした。

Rubyのコード力が上がり、全体的なレベルアップに繋がりましたか??

これからもどんどん知識を蓄えていきますね(≧∀≦)/

sugulog.hatenadiary.jp

 

最後に!!

今後も、「 過去の無知な自分に向けてわかりやすく説明するなら?? 」を基準にブログを書いていきます。

少しでも気になった方はお試しでもいいので1度、読者登録お願いします!

またTwitterでもプログラミングに関することを中心に情報を発信してます。

宜しければそちらのフォローもお願いします。

最後までご愛読いただきありがとうございました!!