aboutsummaryrefslogtreecommitdiff
path: root/2022/day3.rb
diff options
context:
space:
mode:
authorMatias Linares <matias@deprecated.org>2023-12-03 15:11:37 -0300
committerMatias Linares <matias@deprecated.org>2023-12-03 15:11:37 -0300
commitd073dcaa66567e58d6f9a36b15c9e54b91ed8c54 (patch)
treeb26480988df75847eba75892bdf33089ec08bcd7 /2022/day3.rb
parent129ac460f73972097700ad2def6b4c36d6ebe6e1 (diff)
downloadadvent-of-code-d073dcaa66567e58d6f9a36b15c9e54b91ed8c54.tar.gz
Add 2022 and 2023
Diffstat (limited to '2022/day3.rb')
-rw-r--r--2022/day3.rb63
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()