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/day4.rb | |
parent | 129ac460f73972097700ad2def6b4c36d6ebe6e1 (diff) | |
download | advent-of-code-d073dcaa66567e58d6f9a36b15c9e54b91ed8c54.tar.gz |
Add 2022 and 2023
Diffstat (limited to '2022/day4.rb')
-rw-r--r-- | 2022/day4.rb | 36 |
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 |