Add day 4 solutions
This commit is contained in:
parent
e37472384b
commit
6e6d652858
14
day4.chpl
Normal file
14
day4.chpl
Normal file
|
@ -0,0 +1,14 @@
|
|||
use IO;
|
||||
|
||||
iter pairs() {
|
||||
var low1, low2, high1, high2 : int;
|
||||
while readf("%i-%i,%i-%i", low1, high1, low2, high2) do
|
||||
yield (low1..high1, low2..high2);
|
||||
}
|
||||
|
||||
proc anyContains((r1, r2): 2*range) { return r1.contains(r2) || r2.contains(r1); }
|
||||
proc overlap((r1, r2): 2*range) { return !r1[r2].isEmpty(); }
|
||||
|
||||
var thePairs = pairs();
|
||||
writeln(+ reduce anyContains(thePairs));
|
||||
writeln(+ reduce overlap(thePairs));
|
38
day4.cr
Normal file
38
day4.cr
Normal file
|
@ -0,0 +1,38 @@
|
|||
require "advent"
|
||||
|
||||
struct Range(B, E)
|
||||
def contains?(other)
|
||||
other.begin >= self.begin && other.end <= self.end
|
||||
end
|
||||
|
||||
def overlaps?(other)
|
||||
these = self.to_a
|
||||
others = other.to_a
|
||||
these.any? { |i| others.includes? i }
|
||||
end
|
||||
end
|
||||
|
||||
INPUT = input(2022, 4).lines.map do |line|
|
||||
first, second = line.split(",").map do |str|
|
||||
left, right = str.split("-").map &.to_i64
|
||||
left..right
|
||||
end
|
||||
{first, second}
|
||||
end
|
||||
|
||||
def part1(input)
|
||||
input.count do |pair|
|
||||
l, r = pair
|
||||
l.contains?(r) || r.contains?(l)
|
||||
end
|
||||
end
|
||||
|
||||
def part2(input)
|
||||
input.count do |pair|
|
||||
l, r = pair
|
||||
l.overlaps?(r)
|
||||
end
|
||||
end
|
||||
|
||||
puts part1(INPUT.clone)
|
||||
puts part2(INPUT.clone)
|
Loading…
Reference in New Issue
Block a user