A small Ruby problem for Rails developers meetup December 2017.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
test
LICENSE.txt
README.md

README.md

ruby-problem-201702

A small Ruby problem for Rails developers meetup December 2017.

シナリオ

あなたは小さな開発チームの上級Rubyプログラマです。

ある日、後輩メンバーのタケシ(24歳、入社2年目)が現在進行中のプロジェクトで使用する、次のようなRubyプログラムを書いてきました。

プログラムの要件

プレーンテキストで書かれた行列の転置行列を、プレーンテキストとして返すメソッドを作成する。

例1

1 2 3
4 5 6
7 8 9

上の行列を下の行列に変換する。

1 4 7
2 5 8
3 6 9

例2

1 2 3
4 5 6
7 8 9
10 11 12

上の行列を下の行列に変換する。

1 4 7 10
2 5 8 11
3 6 9 12

タケシが書いたコード

タケシの書いてきたコードは以下の2つです。

  • lib/transport.rb
  • test/transport_test.rb

あなたがすること

タケシが書いてきたコードを、上級プログラマであるあなたにレビューしてもらいます。
ここがわかりづらい、ここは改善できそう、といったフィードバックをタケシに返してあげましょう。

回答手順

実際のコードレビューではpull requestにコメントを付けることが多いですが、今回はコメントを返すのではなく、タケシのコードを直接書き換えてpull requestを送ってください。

具体的には以下のような手順になります。

  1. このリポジトリを自分のアカウントにフォークする
  2. testディレクトリのテストがパスすることを確認する
  3. レビュアーになったつもりでタケシの書いたコードをレビューし、「ここはこうした方が良い」と思う部分をリファクタリングする
  4. リファクタリングが終わったら、GitHubにpushし、このリポジトリへpull requestを作成する

pull requestのdescriptionにはタケシが納得するように自分の変更点の意図を説明してあげてください。

備考

  • この問題は「プロを目指す人のためのRuby入門」の読者を想定して作った問題です。
  • 「プロを目指す人のためのRuby入門」は基本的にgemをインストールしたりしない「素のRuby」を説明の対象としているため、この問題でもBundler(Gemfile)等は使っていません。
  • この問題に解答するために必要な前提知識は「プロを目指す人のためのRuby入門」の第4章(配列や繰り返し処理を理解する)までの内容です。
  • Rubyのバージョンも「プロを目指す人のためのRuby入門」にあわせて2.4系を推奨しますが、多少前後しても構いません。
  • 考慮すべき入力パターンは例1と例2の2パターンだけでOKです。(異常な入力値をサポートしようとすると、コード量やテストが増えてしまうため)

お問い合わせ

何か不明な点があれば、@jnchitoまでご連絡ください。

License

MIT License.