超入門者向けのRubyサンプルコード記事です。問題と、解答例となるサンプルコードをセットに公開しています。難しい用語の解説は控えめに、まずは動かしてみたい人向けのコンテンツです。
はじめに
どうもMizokeiです。Ruby超入門シリーズです。本記事の実行環境は以下です。
実行環境
- Windows10 64bit
- Ruby 2.5
問題と解答例をセットに公開
問題と解答例としてサンプルコードをセットに公開します。サンプルコードを、コピペして実行し動作を確認してみましょう。
とりあえず、動かしてみることが目的なので、専門用語などの難しい話は、別途参照書などを御覧ください。
問題
辞書内包表記を用いて、以下の仕様の辞書を作成せよ。
- キーは、1から50までの数値を持つ
- 値は、1から50についてFizzBuzz判定結果のいずれかの文字列を持つ
FizzBuzz判定とは以下の仕様を指す。
- カウントアップの値が3の倍数の場合は「Fizz」の文字列を持つ
- カウントアップの値が5の倍数の場合は「Buzz」の文字列を持つ
- カウントアップの値が3と5の倍数の場合は「FizzBuzz」の文字列を持つ
- カウントアップの値が上記以外の場合は「no」の文字列を持つ
作成した辞書を、putsを用いて表示せよ。
※「辞書内包表記」「リスト内包表記」はPythonで表現される用語であるが、Rubyの場合どうなるかを想定してコードを記載しています。
出力結果
0 1 2 |
{1=>"no", 2=>"no", 3=>"Fizz", 4=>"no", 5=>"Buzz", 6=>"Fizz", 7=>"no", 8=>"no", 9=>"Fizz", 10=>"Buzz", 11=>"no", 12=>"Fizz", 13=>"no", 14=>"no", 15=>"FizzBuzz", 16=>"no", 17=>"no", 18=>"Fizz", 19=>"no", 20=>"Buzz", 21=>"Fizz", 22=>"no", 23=>"no", 24=>"Fizz", 25=>"Buzz", 26=>"no", 27=>"Fizz", 28=>"no", 29=>"no", 30=>"FizzBuzz", 31=>"no", 32=>"no", 33=>"Fizz", 34=>"no", 35=>"Buzz", 36=>"Fizz", 37=>"no", 38=>"no", 39=>"Fizz", 40=>"Buzz", 41=>"no", 42=>"Fizz", 43=>"no", 44=>"no", 45=>"FizzBuzz", 46=>"no", 47=>"no", 48=>"Fizz", 49=>"no", 50=>"Buzz"} |
解答例 サンプルコード
0 1 2 3 4 5 6 7 8 9 10 11 12 |
#キーを定義 keys = (1...51) #値を定義 values = (1...51).map {|i| if (i%15).zero? then 'FizzBuzz' elsif (i%3).zero? then 'Fizz' elsif (i%5).zero? then 'Buzz' else 'no' end} #辞書内包表記で動的に辞書を定義 dynamic_dict = Hash[keys.zip(values)] #辞書の中身を表示する puts "#{dynamic_dict}" |
関連記事
【Ruby超入門】クラスを作成してみよう
【Ruby超入門】値の交換を実装してみよう
【Ruby超入門】ヒープソートを実装しよう【アルゴリズム】