Rubyがミニツク

あなたのRubyの技術に関するより詳しい知識と理解を増やします。

Ruby入門コース

このコースについて

Rubyのeラーニング研修システムはRailsを使ってWebアプリケーション開発ができる技術者の育成を目指します。 そのため、Railsを扱うことができるだけのRubyの知識を得ることがRuby入門コースの目標となっています。

コンテンツ一覧

ヒント レッスンの名前をクリックすると、その内容を表示します。

次のレッスン ホームへ戻る

Stringクラスレッスンの演習

演習

コンテンツ概要

標準出力へ出力する文字で菱形を描くプログラムを書いてみましょう。

この演習を回答するのに必要と思われる時間は、10分です。

注意事項

この演習は、Rubyに関する情報をインターネットや書籍などで調べながら回答しても構いません。回答は、好きなテキストエディタで作成しておき、入力欄にコピーペーストして投稿することをお薦めします。

  • 難易度:簡単

演習

以下の出力結果と同じように見えるものを標準出力に出力するプログラムを作成してください。
出力結果は、以下のような形をしています。

出力結果

 
      *
     * *
    *   *
   *     *
  *       *
 *         *
*           *
 *         *
  *       *
   *     *
    *   *
     * *
      *

作成するプログラムの出力結果である菱形の横幅は、半角文字で30文字です。
以下のヒントで説明しているメソッドは、作成するプログラムの参考にしてください。

ヒント

Stringクラスの*メソッドは、レシーバに指定した文字列オブジェクトを引数で指定した
数値オブジェクトの回数だけ繰り返した新しい文字列オブジェクトを生成して返します。

str = "foo" * 3
puts(str)  #=> foofoofoo

Stringクラスのcenterメソッドは、第1引数で指定した数値オブジェクトが表す横幅の文字列に対し、レシーバに指定した文字列オブジェクトを中央寄せで配置した新しい文字列オブジェクトを返します。

str = "*"
p str.center(14)  #=> "      *       "

Numericクラスのstepメソッドは、レシーバに指定した数値オブジェクトに第2引数に指定した数値オブジェクトを足しながらブロック内の処理を繰り返し、第1引数に指定した数値オブジェクトが表す限界に達したら処理を終えます。
もしも第2引数に指定した数値オブジェクトの符号が負の場合は、stepメソッドはレシーバに指定した数値オブジェクトを引きながらブロック内の処理を繰り返します。

10.step(50, 10) {|i| print(i) }  #=> 1020304050
10.step(2, -2) {|i| print(i) }   #=> 108642

Stringクラスレッスンの演習

この演習は模範回答があります。模範回答を読む前に演習を解くことをお勧めします。

模範回答を表示する


次のレッスン ホームへ戻る