A small Ruby problem for Rails developers meetup December 2017.
あなたは小さな開発チームの上級Rubyプログラマです。
ある日、後輩メンバーのタケシ(24歳、入社2年目)が現在進行中のプロジェクトで使用する、次のようなRubyプログラムを書いてきました。
プレーンテキストで書かれた行列の転置行列を、プレーンテキストとして返すメソッドを作成する。
1 2 3
4 5 6
7 8 9
上の行列を下の行列に変換する。
1 4 7
2 5 8
3 6 9
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を送ってください。
具体的には以下のような手順になります。
- このリポジトリを自分のアカウントにフォークする
- testディレクトリのテストがパスすることを確認する
- レビュアーになったつもりでタケシの書いたコードをレビューし、「ここはこうした方が良い」と思う部分をリファクタリングする
- リファクタリングが終わったら、GitHubにpushし、このリポジトリへpull requestを作成する
pull requestのdescriptionにはタケシが納得するように自分の変更点の意図を説明してあげてください。
- この問題は「プロを目指す人のためのRuby入門」の読者を想定して作った問題です。
- 「プロを目指す人のためのRuby入門」は基本的にgemをインストールしたりしない「素のRuby」を説明の対象としているため、この問題でもBundler(Gemfile)等は使っていません。
- この問題に解答するために必要な前提知識は「プロを目指す人のためのRuby入門」の第4章(配列や繰り返し処理を理解する)までの内容です。
- Rubyのバージョンも「プロを目指す人のためのRuby入門」にあわせて2.4系を推奨しますが、多少前後しても構いません。
- 考慮すべき入力パターンは例1と例2の2パターンだけでOKです。(異常な入力値をサポートしようとすると、コード量やテストが増えてしまうため)
何か不明な点があれば、@jnchitoまでご連絡ください。