Skip to content

A small Ruby problem for Rails developers meetup December 2017.

License

Notifications You must be signed in to change notification settings

JunichiIto/ruby-problem-201712

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

A small Ruby problem for Rails developers meetup December 2017.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages