Advent of Code 2021が始まった。Eric Wastlが2015年から毎年12月に開催している、プログラミングコンテストとアドベントカレンダーを融合したようなイベントで、北米エリアを中心に世界中から多くのプログラマが参加している。RedditやTwitter界隈で盛り上がりを見せている。

私も会社のイベントのいっかんとして参加することになった。やるからには、コーディングの復習も兼ねて、最後まで答えを見ないで25日間やり通すことを目標とする。

問題形式は一日二問、アウトプットだけを入力して正解を判定するタイプ。答えを求める過程、何を使うか一切自由。自分は今復習しているRubyでコードを書いていこうと思う。

コーディングが好きな人もそうじゃない人も、是非一緒にトライしてみませんか。

Day 1: Sonar Sweep

1-1

# Adbent Calendar Day1a

array = [];
File.foreach("1_input.dat").with_index do |line, line_num|
  array.push(line.to_i)
end

counter = 0;
array.each_with_index do |line, index|
  if array[index+1] == nil
    break
  end
  if array[index+1] > array[index]
    counter = counter + 1;
  end
end
puts counter #answer

1-2

# Adbent Calendar Day1-2

array = [];
File.foreach("1_input.dat").with_index do |line, line_num|
  array.push(line.to_i)
end

counter = 0;
array.each_with_index do |line, index|
  if array[index+3] == nil
    break
  end
  a = array[index] + array[index+1] + array[index+2]
  b = array[index+1] + array[index+2] + array[index+3]
  if b > a
    counter = counter + 1;
  end
end
puts counter #answer