defmodule Solver do def to_interval(range) do [left, right] = String.split(range, "-") {left, ""} = Integer.parse(left) {right, ""} = Integer.parse(right) {left, right} end def contained({a0, a1}, {b0, b1}) do (a0 - b0) * (a1 - b1) <= 0 end def overlap({a0, a1}, {b0, b1}) do a0 <= b1 && b0 <= a1 end end {:ok, input} = File.read("input") parsed = input |> String.split("\n", trim: true) |> Enum.map(&String.split(&1, ",")) |> Enum.map(fn [left, right] -> {Solver.to_interval(left), Solver.to_interval(right)} end) parsed |> Enum.map(fn {left, right} -> Solver.contained(left, right) end) |> Enum.filter(& &1) |> length |> IO.puts() parsed |> Enum.map(fn {left, right} -> Solver.overlap(left, right) end) |> Enum.filter(& &1) |> length |> IO.puts() 'this.form.submit();'> Short Software projects to try things out
aboutsummaryrefslogtreecommitdiffstats
path: root/AoC2022/07/solver.lisp
blob: 497b6f647b312bbda6efcc81d841bdec047305b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54