Giter Site home page Giter Site logo

ruby-problem-201712's Introduction

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.

ruby-problem-201712's People

Contributors

junichiito avatar

Watchers

James Cloos avatar sinamon129 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.