aboutsummaryrefslogtreecommitdiff
path: root/2022/day4.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/day4.rb
parent129ac460f73972097700ad2def6b4c36d6ebe6e1 (diff)
downloadadvent-of-code-d073dcaa66567e58d6f9a36b15c9e54b91ed8c54.tar.gz
Add 2022 and 2023
Diffstat (limited to '2022/day4.rb')
-rw-r--r--2022/day4.rb36
1 files changed, 36 insertions, 0 deletions
diff --git a/2022/day4.rb b/2022/day4.rb
new file mode 100644
index 0000000..a700986
--- /dev/null
+++ b/2022/day4.rb
@@ -0,0 +1,36 @@
+def range(s)
+ n1, n2 = s.split('-')
+ return n1.to_i .. n2.to_i
+end
+
+def read_pairs(filename)
+ retval = []
+ File.open(filename) do |file|
+ file.readlines.each do |line|
+ elf1, elf2 = line.split(',')
+ retval << [range(elf1), range(elf2)]
+ end
+ end
+ return retval
+end
+
+def range_included(r1, r2)
+ return (r2.include?(r1.first) && r2.include?(r1.last)) || (r1.include?(r2.first) && r1.include?(r2.last))
+end
+
+def range_overlaps(r1, r2)
+ return (r2.include?(r1.first) || r2.include?(r1.last)) || (r1.include?(r2.first) || r1.include?(r2.last))
+end
+
+def part1(filename)
+ read_pairs(filename).map { |pairs|
+ range_included(pairs[0], pairs[1])
+ }.select { |x| x }.count
+end
+
+def part2(filename)
+ read_pairs(filename).map { |pairs|
+ range_overlaps(pairs[0], pairs[1])
+ }.select { |x| x }.count
+
+end