From 6fbf18f8048d4197d289767ea5c3aaa70f451a11 Mon Sep 17 00:00:00 2001 From: onyx-and-iris Date: Tue, 2 Dec 2025 07:10:01 +0000 Subject: [PATCH] add day_02 --- day_02/1.rb | 24 ++++++++++++++++++++++++ day_02/2.rb | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100755 day_02/1.rb create mode 100755 day_02/2.rb diff --git a/day_02/1.rb b/day_02/1.rb new file mode 100755 index 0000000..0159e7d --- /dev/null +++ b/day_02/1.rb @@ -0,0 +1,24 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +class Main + def run + @sum = 0 + + line = $stdin.gets.chomp + line.split(",").each do |range| + lo, hi = range.split("-") + (lo..hi).each do |num| + if num.length.even? + if num[0..(num.length / 2) - 1] == num[(num.length / 2)..] + @sum += num.to_i + end + end + end + end + + puts @sum + end +end + +Main.new.run diff --git a/day_02/2.rb b/day_02/2.rb new file mode 100755 index 0000000..26af9c4 --- /dev/null +++ b/day_02/2.rb @@ -0,0 +1,34 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +class Main + def run + @sum = 0 + + line = $stdin.gets.chomp + line.split(",").each do |range| + lo, hi = range.split("-") + (lo..hi).each do |num| + (1..num.length / 2).each do |n| + if num.length % n != 0 + next + end + + parts = num.scan(/(\d{#{n}})/).map { _1[0] } + if all_equal? parts + @sum += num.to_i + break + end + end + end + end + + puts @sum + end + + def all_equal?(arr) + arr.uniq.size <= 1 + end +end + +Main.new.run