abc038のaとbを解いた

こんにちは、いなむーです。

毎度いつものatcoderです。

今回はabc038のaとbを解きました。
早速aの問題。

[blogcard url=http://abc038.contest.atcoder.jp/submissions/748589]

コードはこちら。

S = gets.chomp.to_s
puts S[-1] == 'T' ? 'YES' : 'NO'

ここでのポイントはStringメソッドを使用しているところです。
S[-1]とすることで最後から1文字目を抽出して、チェックしてます。

次にb問題。

問題はこちら。
[blogcard url=http://abc038.contest.atcoder.jp/tasks/abc038_b]
巨大ディスプレイの話ですね笑
一瞬解像度かな?と思うのですが、1920mmとかでているので、1.92m幅のディスプレイを使っているようなので、会議でもするのでしょうか。

実際に書いたコードはこちら。

class ABC038b
  def setvar
    array = Array[]
    STDIN.read.each_line do | var |
      array << var
    end
    @H1, @W1 = array[0].split(' ').map { | v | v.to_i }
    @H2, @W2 = array[1].split(' ').map { | v | v.to_i }
  end
  def checkvar
    self.setvar
    if @H1 == @H2 or @H1 == @W2
      "YES"
    else
      if @W1 == @H2 or @W1 == @W2
        "YES"
      else
        "NO"
      end
    end
  end
end
 
x = ABC038b.new
puts x.checkvar

ここでのポイントはeach_lineを使用して、値を配列に入れている所です。
縦にも横にも値がある場合にどのように変数に入れれば良いのかがわからなかったので、とりあえず1行づつ取り出して、arrayの配列に保存。
その後、2行しかないので、それぞれを抽出して、変数にいれてます。

あとは変数にいれた値同士を比較して、YESかNOを返すようにしています。

この配列に入れた後で、それぞれを分割するなどしていく方法が一般的なのかわからなかったので、あとで会社のRubyistに聞いてみようと思いました。

以上。