From 424cd48fea580176a1cac5543d9d7639ac30c3fa Mon Sep 17 00:00:00 2001 From: Jeremy Kaplan Date: Tue, 1 Dec 2020 23:59:19 -0800 Subject: [PATCH] Day 2 Part 2 --- 2020/day2/day2.ex | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/2020/day2/day2.ex b/2020/day2/day2.ex index 6775b06..1b5e9e8 100644 --- a/2020/day2/day2.ex +++ b/2020/day2/day2.ex @@ -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()