Skip to content

Latest commit

 

History

History
68 lines (58 loc) · 1.02 KB

aoc_trebuchet.livemd

File metadata and controls

68 lines (58 loc) · 1.02 KB

Untitled notebook

Section

defmodule Advent do
  @nums [
    "0",
    "1",
    "2",
    "3",
    "4",
    "5",
    "6",
    "7",
    "8",
    "9"
  ]
  @nums_str [
    "one",
    "two",
    "three",
    "four",
    "five",
    "six",
    "seven",
    "eight",
    "nine"
  ]
  def trebuchete(str) do
    str
    |> mult_str_to_list
    |> get_sums
  end

  def get_sums([]), do: 0

  def get_sums([h | t]), do: get_number(h |> to_list()) + get_sums(t)

  def mult_str_to_list(str), do: str |> String.split("\n", trim: true)
  def to_list(str), do: str |> String.split("", trim: true)

  def get_number(list) do
    list = list |> Enum.filter(&Enum.member?(@nums, &1))
    rev_list = list |> Enum.reverse()
    first = list |> Enum.at(0)
    last = rev_list |> Enum.at(0)
    num_str = "#{first}#{last}"

    case num_str do
      "" ->
        0

      _ ->
        String.to_integer(num_str)
    end
  end
end

"""
"""
|> Advent.trebuchete()

"2ddonetwo4four"
|> String.split("", trim: true)
# |> String.
|> Enum.chunk_every(2)