From df944f69f261cd3a2ff06ea45b211f7e891e3d8d Mon Sep 17 00:00:00 2001 From: onyx-and-iris Date: Wed, 3 Dec 2025 16:33:08 +0000 Subject: [PATCH] add day_03 --- day_03/1.rb | 19 +++++++++++++++++++ day_03/2.rb | 27 +++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100755 day_03/1.rb create mode 100755 day_03/2.rb diff --git a/day_03/1.rb b/day_03/1.rb new file mode 100755 index 0000000..bd16fdb --- /dev/null +++ b/day_03/1.rb @@ -0,0 +1,19 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +class Main + def run + @sum = 0 + + $stdin.each_line do |line| + nums = line.chomp.each_char.map(&:to_i) + first_digit = nums[0..-2].sort.reverse[0] + second_digit = nums[nums.find_index(first_digit) + 1..].sort.reverse[0] + @sum += "#{first_digit}#{second_digit}".to_i + end + + puts @sum + end +end + +Main.new.run diff --git a/day_03/2.rb b/day_03/2.rb new file mode 100755 index 0000000..486041a --- /dev/null +++ b/day_03/2.rb @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +class Main + def run + @sum = 0 + + $stdin.each_line do |line| + nums = line.chomp.each_char.map(&:to_i) + largest_joltage = recurse(12, nums, []) + @sum += largest_joltage.join.to_i + end + + puts @sum + end + + def recurse(i, nums, largest_joltage) + return largest_joltage if i == 0 + + max = nums[..-i].max + largest_joltage << max + + recurse(i - 1, nums[nums.find_index(max) + 1..], largest_joltage) + end +end + +Main.new.run