AtCoder を書く日、それはネタが無い日。半分冗談です。
問題はこちら
今回は、なるべく前回と違う書き方を意識しました。 AtCoder をやる理由は、少なくとも今のところ、課題をクリアすることではなく Ruby を覚えること、なれること、なので。
こんな遠回りしないだろうなと思いつつ、ゲッターを無理やり使ってみました。
class Set attr_reader :width, :hight def initialize width , hight = STDIN.gets.split.map{|arg| arg.to_f } raise 'error' unless width >= 1 raise 'error' unless hight <= 1_000_000 @width = width @hight = hight end end class A def self.aspect value = Set.new value.width / 4 == value.hight / 3 ? '4:3' : '16:9' end end puts A.aspect
Submission #732167 - AtCoder Beginner Contest 035 | AtCoder
Status は Clear になっています。
書き方で意識した点を KPT 風に書くとこんな感じです。
Keep
- class を用意して呼び出すように
- raise と unless を使ってエラーハンドル
Problem
- self. のところがよくわかっておらず使っている
- これかかないとうまく動かない
- そもそもこの書き方で汎用性が高まったかわかっていない
- 引数の数チェック、4:3, 16:9 以外の比率が来た時のエラーチェック
Try
- map 使ってみた
- 初期値と呼び出しに分けてみた
- getter 使ってみた
- 3項演算子使ってみた
- イテレータの書き方を意識した ※
※ 部分
イテレータは
一行におさめるときは {....} で、二行以上のときは do....end、が基本。
refs. Ruby のコーディングスタイル
とのこと。 今日 Ruby の勉強会で聞いてへ~となった。 このコードスタイルガイドはだいぶ指針になる。覚えきれ無さそうだけど...