Day 2 Part 2
This commit is contained in:
parent
e8c6100649
commit
424cd48fea
1 changed files with 23 additions and 4 deletions
|
|
@ -22,7 +22,7 @@ defmodule Day2 do
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
defp valid?(policy, password) do
|
defp valid_sled?(policy, password) do
|
||||||
count =
|
count =
|
||||||
Enum.reduce(String.codepoints(password), 0, fn char, count ->
|
Enum.reduce(String.codepoints(password), 0, fn char, count ->
|
||||||
if char == policy.letter do
|
if char == policy.letter do
|
||||||
|
|
@ -35,12 +35,31 @@ defmodule Day2 do
|
||||||
policy.min <= count and count <= policy.max
|
policy.min <= count and count <= policy.max
|
||||||
end
|
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
|
def part1 do
|
||||||
parse(read_input())
|
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()
|
|> length()
|
||||||
|> IO.inspect()
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Day2.part1()
|
Day2.part1() |> IO.inspect()
|
||||||
|
Day2.part2() |> IO.inspect()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue