[AtCoder]AtCoder過去問を解く⑤[Ruby]

プログラミング

過去問http://atcoder-scores.herokuapp.com/を解きます。

ABC060A_Shiritori

問題

文字列 A, B, Cが与えられます。これがしりとりになっているか判定してください。

つまり、

  • Aの最後の文字とBの最初の文字が同じ
  • Bの最後の文字とCの最初の文字が同じ

この2つが正しいか判定してください。

両方とも正しいならば YES、そうでないならば NO を出力してください。

自分の回答

def shiritori(a, b, c)
  puts a[a.length-1] == b[0] && b[b.length-1] == c[0] ? "YES" : "NO"
end

a, b, c= gets.chomp.split(" ")
shiritori(a, b, c)

aの最後の文字とbの最初の文字が等しい、かつ、bの最後の文字とcの最初の文字が等しい時は”YES”を出力します。最後のもじはlengthで文字列の大きさから-1をすれば、求めることができます。

ABC061A_Between Two Integers

問題

3つの整数 A,B,Cが与えられます。
整数 CがA以上 かつ B以下であるかを判定してください。

自分の回答

def between(a, b, c)
  puts a <= c && c <= b ? "Yes" : "No"
end

a, b, c= gets.chomp.split(" ").map(&:to_i)
between(a, b, c)

そのままですね。rubyだと、a <= c <= b と一つの式で書けないところが不便ですね。

ABC062A_Grouping

問題

すぬけ君は、1から12までの整数を下図のようにグループ分けしました。 整数x, y(1≤x<y≤12) が与えられるので、x,yが同一のグループに属しているか判定してください。

自分の回答

def grouping(a, b)
  group_a = [1, 3, 5, 7, 8, 10, 12]
  group_b = [4, 6, 9, 11]
  if (group_a.include?(a) && group_a.include?(b)) || (group_b.include?(a) && group_b.include?(b)) || (a == b)
    puts "Yes"
  else
    puts "No"
  end
end

a, b= gets.chomp.split(" ").map(&:to_i)
grouping(a, b)

配列を用意してあげて、include?で同じグループに属しているかを確かめれば良いですね。

ワンライナーで書けばもう少し短くなりますが、あんまり横長になると見づらいのでこのままにしました。

ABC063A_Restricted

問題

二つの整数A,Bが入力されます。A+Bの値を出力してください。

ただし、A+B が10以上の場合は、代わりに error と出力してください。

自分の回答

def restricted(a, b)
  puts a + b < 10 ? a + b : "error"
end

a, b= gets.chomp.split(" ").map(&:to_i)
restricted(a, b)

与えられた二つの値を足して、10未満、その数字を、10以上なら”error”を出力しましょう。

ABC064A_RGB Cards

問題

AtCoDeer君は、赤、緑、青色のカードを持っています。
それぞれのカードには 1以上 9以下の整数が書かれており、赤色のカードには r、緑色のカードにg、青色のカードにはbが書かれています。
3つのカードを左から順に赤、緑、青色の順に並べ、左から整数を読んだときにこれが4の倍数であるか判定しなさい。

自分の回答

def rgb(r, g, b)
  number = r * 100 + g * 10 + b
  puts number % 4 == 0 ? "YES" : "NO"
end

r, g, b = gets.chomp.split(" ").map(&:to_i)
rgb(r, g, b)

rが100の位、gが10の位、bが一の位となるので、r * 100 + g * 10 + bとして、三桁の数字を求めましょう。そしてその三桁の数字が4の倍数かどうかを確かめます。4の倍数か確かめるには、4で割って余りが0であれば、その数字は4の倍数になります。

タイトルとURLをコピーしました