From d073dcaa66567e58d6f9a36b15c9e54b91ed8c54 Mon Sep 17 00:00:00 2001 From: Matias Linares Date: Sun, 3 Dec 2023 15:11:37 -0300 Subject: Add 2022 and 2023 --- 2022/day4.rb | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 2022/day4.rb (limited to '2022/day4.rb') 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 -- cgit v1.2.3-70-g09d2