Watch
1
0
Fork
You've already forked advent-of-code
0

Day 2 Part 2

This commit is contained in:
Jeremy Kaplan 2020-12-01 23:59:19 -08:00
commit 424cd48fea

View file

@ -22,7 +22,7 @@ defmodule Day2 do
end)
end
defp valid?(policy, password) do
defp valid_sled?(policy, password) do
count =
Enum.reduce(String.codepoints(password), 0, fn char, count ->
if char == policy.letter do
@ -35,12 +35,31 @@ defmodule Day2 do
policy.min <= count and count <= policy.max
end
defp valid_toboggan?(policy, password) do
chars = String.codepoints(password)
l1 = Enum.at(chars, policy.min - 1)
l2 = Enum.at(chars, policy.max - 1)
(l1 == policy.letter or l2 == policy.letter) and l1 != l2
end
defp xor(a, b) do
(a or b) and a != b
end
def part1 do
parse(read_input())
|> Enum.filter(fn %{policy: policy, password: password} -> valid?(policy, password) end)
|> Enum.filter(fn %{policy: policy, password: password} -> valid_sled?(policy, password) end)
|> length()
end
def part2 do
parse(read_input())
|> Enum.filter(fn %{policy: policy, password: password} ->
valid_toboggan?(policy, password)
end)
|> length()
|> IO.inspect()
end
end
Day2.part1()
Day2.part1() |> IO.inspect()
Day2.part2() |> IO.inspect()