AtCoderのABCのA問題のみRubyでひたすら解いていく。
ポリシー
- 短く
- 可読性高く
- 無駄なことをしない
問題と回答
001 積雪深差
puts readlines.map(&:to_i).reduce(:-)
002 正直者
puts gets.split.map(&:to_i).max
003 AtCoder社の給料
puts (gets.to_i + 1) * 5000
004 流行
puts gets.to_i * 2
005 おいしいたこ焼きの作り方
x, y = gets.split.map(&:to_i)
puts y / x
006 世界のFizzBuzz
puts gets.to_i % 3 == 0 ? :YES : :NO
007 植木算
puts gets.to_i - 1
008 アルバム
s, t = gets.split.map(&:to_i)
puts t - s + 1
009 引越し作業
puts (gets.to_i / 2.0).ceil
010 ハンドルネーム
puts gets.chomp + "pp"
011 来月は何月?
puts gets.to_i % 12 + 1
012 スワップ
puts gets.split.reverse.join(" ")
013 A
puts "ABCDE".index(gets.chomp) + 1
014 けんしょう先生のお菓子配り
a, b = readlines.map(&:to_i)
puts (a / b.to_f).ceil * b - a
015 高橋くんの研修
puts readlines.max_by(&:length)
016 12月6日
m, d = gets.split.map(&:to_i)
puts m % d == 0 ? :YES : :NO
017 プロコン
puts readlines.map { |l| l.split.map(&:to_i).inject(:*) }.inject(:+) / 10
018 豆まき
ss = readlines.map(&:to_i)
puts ss.map { |s| ss.sort.reverse.index(s) + 1 }
019 高橋くんと年齢
puts gets.split.map(&:to_i).sort[1]
020 クイズ
puts %w(ABC chokudai)[gets.to_i - 1]
021 足し算
a = []
[8, 4, 2, 1].inject(gets.to_i) do |r, n|
(r / n).times do
a << n
r -= n
end
r
end
puts a.length, a
n = gets.to_i
puts n, [1] * n
022 Best Body
_, s, t = gets.split.map(&:to_i)
w = gets.to_i
as = readlines.map(&:to_i)
cnt = as.count do |a|
w += a
s <= w && w <= t
end
puts cnt
as.count do ~ end
は直接 puts
できなかった
023 加算王
x = gets.to_i
puts x / 10 + x % 10
024 動物園
a, b, c, k = gets.split.map(&:to_i)
s, t = gets.split.map(&:to_i)
puts a * s + b * t - (s + t < k ? 0 : c * (s + t))
025 25個の文字列
s = gets.chomp
n = gets.to_i
puts s[(n - 1) / 5] + s[n % 5 - 1]
026 掛け算の最大値
puts (gets.to_i / 2) ** 2
027 長方形
ls = gets.split.map(&:to_i)
puts (ls - [ls.sort[1]])[0] || ls[0]
028 テスト評価
puts [[:Bad] * 60, [:Good] * 30, [:Great] * 10, :Perfect].flatten[gets.to_i]
029 複数形
puts gets.chomp + "s"
030 勝率計算
a, b, c, d = gets.split.map(&:to_f)
puts [:DRAW, :TAKAHASHI, :AOKI][b / a <=> d / c]
031 ゲーム
a, d = gets.split.map(&:to_i).sort
puts (a + 1) * d
032 高橋君と青木君の好きな数
a, b, n = readlines.map(&:to_i)
l = a.lcm(b)
r = l
while r < n
r += l
end
puts r
最小公倍数のメソッド 初耳学
033 暗証番号
puts gets.chomp.chars.uniq.length == 1 ? :SAME : :DIFFERENT
034 テスト
x, y = gets.split.map(&:to_i)
puts x < y ? :Better : :Worse
035 テレビ
w, h = gets.split.map(&:to_f)
puts w / h == 4 / 3.0 ? "4:3" : "16:9"
036 お茶
a, b = gets.split.map(&:to_f)
puts (b / a).ceil
037 饅頭
a, b, c = gets.split.map(&:to_i)
puts c / [a, b].min
038 お茶
puts gets.chomp[-1] == "T" ? :YES : :NO
039 高橋直体
a, b, c = gets.split.map(&:to_i)
puts (a * b + b * c + c * a) * 2
040 赤赤赤赤青
n, x = gets.split.map(&:to_i)
puts [n - x, x - 1].min
041 添字
s, i = readlines
puts s[i.to_i - 1]
042 和風いろはちゃんイージー / Iroha and Haiku (ABC Edition)
puts gets.split.map(&:to_i).sort == [5,5,7] ? :YES : :NO
043 キャンディーとN人の子供イージー / Children and Candies (ABC Edit)
puts (1..gets.to_i).inject(:+)
044 高橋君とホテルイージー / Tak and Hotels (ABC Edit)
n, k, x, y = readlines.map(&:to_i)
puts x * n - (x - y) * [n - k, 0].max
045 台形 / Trapezoids
a, b, h = readlines.map(&:to_i)
puts (a + b) * h / 2
046 AtCoDeerくんとペンキ / AtCoDeer and Paint Cans
puts gets.chomp.split.uniq.size
047 キャンディーと2人の子供 / Fighting over Candies
a, b, c = gets.split.map(&:to_i).sort
puts a + b == c ? :Yes : :No
048 AtCoder *** Contest
puts gets.split.map { |s| s[0] }.join
049 居合を終え、青い絵を覆う / UOIAUAI
puts "aiueo".include?(gets.chomp) ? :vowel : :consonant
050 Addition and Subtraction Easy
puts eval(gets)
所感
途中から短さ重視になってきている感も否めない、気をつけねば
51~はまた今度