paiza でコードを書くときのコツ(Rubyで標準入出力に関するテストのやり方のメモ)

ふと、自分のプログラミング力を測りたくて、 paiza の問題を解いてみました。

paiza とは

IT/Webプログラマー 転職のpaiza [パイザ] http://paiza.jp/

詳しくはリンク先を読んでもらえれば分かるかと。要約すると

  • web上で出題された問題に対して、コードを書く
  • プログラミング力のスコアが出る
  • スコアを元に自己PRして、転職しよう!

みたいなサイト。

web上でコードは書けるけど・・・・

実際の入力画面はこんな感じ。

f:id:sinsoku:20131130000648j:plain

書けなくはないけど、ローカルでテストして、書き終わってから提出した方が良い。

問題にも「複数のテストケースでテスト致しますので、サンプル入力だけでなく入力値を可変させてデバッグしていただく事をお勧めいたします。」と注意書きもありますので。

という訳で、paizaの紹介は終わり。ここから本編。

標準入出力のテストについて

標準入出力のテストは慣れていないとテストが書きにくい。

そこで、標準入出力のテストをrspecで書く例を書いてみた。

参考にしたページ

RSpecで標準入力を扱う処理のテストを書く - Umeyashikiの日記 http://d.hatena.ne.jp/Umeyashiki/20120115/1326584363

サンプルコード

gist7707168

入出力の値を配列で設定しているので、問題によってinput, outputだけ書き換えれば、他の所は同じままで動くはず。

練習問題のうるう年の例

練習問題の入出力例はこんな感じ。

f:id:sinsoku:20131130003840j:plain

これをテストコードに書いた例は gist7707412 です。

※注意) 自分で練習問題を解いてみたい人はリンク先のコードを見ないように気をつけて下さい。


実際の問題や解答例を書くのは禁止されているけど、練習問題やテストコードは問題ないと思ってブログに書いてみました。paizaに提出しないですし。

ただ、テストコード書かないのに"実務に近いコーディング形式"とか書かれていると、それどうなの?とか少し思ったりはしましたが。