読者です 読者をやめる 読者になる 読者になる

ちくわ

ちくわにきゅうりを入れるとうまい

AtCoder ABC #035 の A 「テレビ」をやってみた

AtCoder を書く日、それはネタが無い日。半分冗談です。

問題はこちら

abc035.contest.atcoder.jp

今回は、なるべく前回と違う書き方を意識しました。 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 の勉強会で聞いてへ~となった。 このコードスタイルガイドはだいぶ指針になる。覚えきれ無さそうだけど...