diff options
author | Matias Linares <matias@deprecated.org> | 2023-12-03 15:11:37 -0300 |
---|---|---|
committer | Matias Linares <matias@deprecated.org> | 2023-12-03 15:11:37 -0300 |
commit | d073dcaa66567e58d6f9a36b15c9e54b91ed8c54 (patch) | |
tree | b26480988df75847eba75892bdf33089ec08bcd7 /2022/day3.rb | |
parent | 129ac460f73972097700ad2def6b4c36d6ebe6e1 (diff) | |
download | advent-of-code-d073dcaa66567e58d6f9a36b15c9e54b91ed8c54.tar.gz |
Add 2022 and 2023
Diffstat (limited to '2022/day3.rb')
-rw-r--r-- | 2022/day3.rb | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/2022/day3.rb b/2022/day3.rb new file mode 100644 index 0000000..5b6b0f7 --- /dev/null +++ b/2022/day3.rb @@ -0,0 +1,63 @@ +require 'set' + +def split_in_half(s) + pivot = s.length/2 + return [s[0, pivot], s[pivot, s.length]] +end + +def shared_item(s) + rucksack1, rucksack2 = split_in_half(s) + tmp = (rucksack1.chars.to_set & rucksack2.chars.to_set) + puts tmp + return tmp.first +end + +def scores_hash + a = ('a'..'z').zip((1..26)) + ('A'..'Z').zip((27..52)) + a.to_h +end + +TEST_S = <<-EOC +vJrwpWtwJgWrhcsFMMfFFhFp +jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL +PmmdzqPrVvPwwTWBwg +wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn +ttgJtRGJQctTZtZT +CrZsJsPPZsGzwwsLwLmpwMDw +EOC + +def test_1(s) + s.lines.map do |line| + item = shared_item(line) + scores_hash[item] + end.sum +end + +def day1 + + puts test_1(TEST_S) + + File.open('./day3.txt') do |f| + retval = f.readlines.map do |line| + item = shared_item(line) + scores_hash[item] + end + puts retval.sum + end +end + +require './utils' + +def day2 + badges = [] + File.open('./day3.txt') do |f| + + f.readlines.each_n(3) do |a,b,c| + badge = a.chars.to_set & b.chars.to_set & c.chars.to_set + badges << scores_hash[badge.first] + end + end + puts badges.sum +end + +day2() |