this repo has no description
1defmodule Solution do
2 def read(path) do
3 path
4 |> File.stream!()
5 |> Enum.map(&String.trim/1)
6 |> Enum.map(&parse/1)
7 end
8
9 defp parse(input) do
10 [spec, pass] = String.split(input, ": ", parts: 2)
11 [range, <<char>>] = String.split(spec, " ", parts: 2)
12 [min, max] =
13 range
14 |> String.split("-", parts: 2)
15 |> Enum.map(&String.to_integer/1)
16
17 {min..max, char, pass}
18 end
19
20 def validate_1({range, char, pass}) do
21 count = for <<^char <- pass>>, reduce: 0, do: (n -> n + 1)
22
23 count in range
24 end
25
26 def validate_2({a..b, char, pass}) do
27 <<char_1>> = binary_part(pass, a - 1, 1)
28 <<char_2>> = binary_part(pass, b - 1, 1)
29
30 char_1 != char_2 and char in [char_1, char_2]
31 end
32end
33
34data = Solution.read("2/input.txt")
35
36IO.inspect(Enum.count(data, &Solution.validate_1/1), label: "task 1")
37IO.inspect(Enum.count(data, &Solution.validate_2/1), label: "task 2")