Powered by AppSignal & Oban Pro

Advent of Code 2015 Day 20 Part 1

2015_day20_part1.livemd

Advent of Code 2015 Day 20 Part 1

Mix.install([
  {:kino_aoc, "~> 0.1"}
])

Get Inputs

{:ok, puzzle_input} =
  KinoAOC.download_puzzle("2015", "20", System.fetch_env!("LB_SESSION"))

My answer

1..9
|> Enum.map(fn house_number ->
  1..house_number
  |> Enum.filter(fn x ->
    rem(house_number, x) == 0
  end)
end)
1..9
|> Enum.map(fn house_number ->
  limit = :math.sqrt(house_number) |> floor()

  1..limit
  |> Enum.filter(fn x ->
    rem(house_number, x) == 0
  end)
  |> Enum.flat_map(fn x ->
    [x, div(house_number, x)]
  end)
  |> Enum.uniq()
  |> Enum.sort()
end)
target_number = String.to_integer(puzzle_input)
1..1000000
|> Enum.find(fn house_number ->
  limit = house_number |> :math.sqrt() |> floor()

  1..limit
  |> Enum.filter(fn x ->
    rem(house_number, x) == 0
  end)
  |> Enum.flat_map(fn x ->
    [x, div(house_number, x)]
  end)
  |> Enum.uniq()
  |> Enum.map(fn num -> num * 10 end)
  |> Enum.sum()
  |> Kernel.>=(target_number)
end)