solve 2015 day 20
This commit is contained in:
parent
46f3ae87dc
commit
9b99d9446a
3 changed files with 59 additions and 2 deletions
|
@ -17,7 +17,7 @@
|
|||
| | | [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 | |
|
||||
| [20] | 21 | 22 | 23 | 24 | 25 | |
|
||||
|
||||
[1]: ./lib/2015/1.ex
|
||||
[2]: ./lib/2015/2.ex
|
||||
|
@ -38,3 +38,4 @@
|
|||
[17]: ./lib/2015/17.ex
|
||||
[18]: ./lib/2015/18.ex
|
||||
[19]: ./lib/2015/19.ex
|
||||
[20]: ./lib/2015/20.ex
|
||||
|
|
56
2015/lib/2015/20.ex
Normal file
56
2015/lib/2015/20.ex
Normal file
|
@ -0,0 +1,56 @@
|
|||
import AOC
|
||||
|
||||
aoc 2015, 20 do
|
||||
def p1 do
|
||||
goal = input()
|
||||
|
||||
Stream.iterate(1, &(&1 + 1))
|
||||
|> Enum.find(fn house ->
|
||||
gifts_for_house_1(house) >= goal
|
||||
end)
|
||||
end
|
||||
|
||||
def p2 do
|
||||
goal = input()
|
||||
|
||||
Stream.iterate(1, &(&1 + 1))
|
||||
|> Enum.find(fn house ->
|
||||
gifts_for_house_2(house) >= goal
|
||||
end)
|
||||
end
|
||||
|
||||
def gifts_for_house_1(house) do
|
||||
elves =
|
||||
house
|
||||
|> divisors()
|
||||
|> Enum.sum()
|
||||
|
||||
elves * 10
|
||||
end
|
||||
|
||||
defp gifts_for_house_2(house) do
|
||||
elves =
|
||||
house
|
||||
|> divisors()
|
||||
|> Enum.filter(&(div(house, &1) <= 50))
|
||||
|> Enum.sum()
|
||||
|
||||
elves * 11
|
||||
end
|
||||
|
||||
defp divisors(n) do
|
||||
e = n |> :math.sqrt() |> trunc
|
||||
|
||||
Enum.flat_map(1..e, fn
|
||||
x when rem(n, x) != 0 -> []
|
||||
x when x != div(n, x) -> [x, div(n, x)]
|
||||
x -> [x]
|
||||
end)
|
||||
end
|
||||
|
||||
defp input do
|
||||
input_string()
|
||||
|> String.trim()
|
||||
|> String.to_integer()
|
||||
end
|
||||
end
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
| Year | Stars | Languages |
|
||||
| - | - | - |
|
||||
| [2015] | **38/50** 🌟 | Elixir |
|
||||
| [2015] | **40/50** 🌟 | Elixir |
|
||||
| 2016 | | |
|
||||
| [2017] | **18/50** 🌟 | Haskell |
|
||||
| 2018 | | |
|
||||
|
|
Loading…
Reference in a new issue