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

毎度いつものatcoderです。

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

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

コードはこちら。

[code]
S = gets.chomp.to_s
puts S[-1] == ‘T’ ? ‘YES’ : ‘NO’
[/code]

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

次にb問題。

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

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

[code lang=”ruby”]
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
[/code]

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

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

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

以上。

カテゴリー: ProgramRubyTech