Skip to content

Commit 8dd0e62

Browse files
committed
πŸŽ‰ Day one finished
1 parent a792723 commit 8dd0e62

File tree

10 files changed

+79
-76
lines changed

10 files changed

+79
-76
lines changed

β€Ž.vscode/settings.json

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
// Based on Elixir formatter's style
3+
"editor.insertSpaces": true,
4+
// Note: While it is possible to override this in your VSCode configuration, the Elixir Formatter
5+
// does not support a configurable tab size, so if you override this then you should not use the
6+
// formatter.
7+
"editor.tabSize": 2,
8+
"files.trimTrailingWhitespace": true,
9+
"files.insertFinalNewline": true,
10+
"files.trimFinalNewlines": true,
11+
// Provides smart completion for "do" and "fn ->" blocks. Does not run the Elixir formatter.
12+
"editor.formatOnType": true,
13+
// Misc
14+
"editor.wordBasedSuggestions": false,
15+
"editor.trimAutoWhitespace": false,
16+
"elixirLS.projectDir": "${workspaceFolder}/elixir_puzzles/mix.exs",
17+
"elixirLS.enableTestLenses": true
18+
}

β€Želixir/day_01/lib/day01.ex

-61
This file was deleted.

β€Želixir/day_01/test/day01_test.exs

-8
This file was deleted.
File renamed without changes.

β€Želixir/day_01/.gitignore β€Želixir_puzzles/.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ erl_crash.dump
2020
*.ez
2121

2222
# Ignore package tarball (built via "mix hex.build").
23-
day_01-*.tar
23+
elixir_puzzles-*.tar
2424

2525
# Temporary files, for example, from tests.
2626
/tmp/
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
# Day01
1+
# ElixirPuzzles
22

33
**TODO: Add description**
44

55
## Installation
66

77
If [available in Hex](https://hex.pm/docs/publish), the package can be installed
8-
by adding `day_01` to your list of dependencies in `mix.exs`:
8+
by adding `elixir_puzzles` to your list of dependencies in `mix.exs`:
99

1010
```elixir
1111
def deps do
1212
[
13-
{:day_01, "~> 0.1.0"}
13+
{:elixir_puzzles, "~> 0.1.0"}
1414
]
1515
end
1616
```
1717

1818
Documentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)
1919
and published on [HexDocs](https://hexdocs.pm). Once published, the docs can
20-
be found at <https://hexdocs.pm/day_01>.
20+
be found at <https://hexdocs.pm/elixir_puzzles>.
2121

β€Želixir_puzzles/lib/day01/day_01.ex

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
defmodule AdventOfCode.Day01 do
2+
@moduledoc """
3+
Documentation for `Day01`.
4+
"""
5+
6+
def part_one() do
7+
input = File.read!("./lib/day01/input.txt")
8+
9+
input
10+
|> input_to_list
11+
|> Enum.map(&remove_alphanumerics/1)
12+
|> Enum.map(fn x ->
13+
(x |> String.first()) <> (x |> String.last())
14+
end)
15+
|> Enum.map(&String.to_integer/1)
16+
|> Enum.sum()
17+
end
18+
19+
def part_two() do
20+
input = File.read!("./lib/day01/input.txt")
21+
22+
only_numbers = input
23+
|> input_to_list
24+
|> Enum.map(fn x -> x |> convert_text_to_number |> remove_alphanumerics end)
25+
26+
27+
only_numbers
28+
|> Enum.map(fn x ->
29+
(x |> String.first()) <> (x |> String.last())
30+
end)
31+
|> IO.inspect
32+
|> Enum.map(&String.to_integer/1)
33+
|> Enum.sum()
34+
end
35+
36+
def remove_alphanumerics(line), do: String.replace(line, ~r/[^\d]/, "")
37+
def input_to_list(input), do: String.split(input, "\n", trim: true)
38+
39+
# Elixir always check from up to down which pattern to match
40+
def convert_text_to_number("one" <> rest), do: "1" <> convert_text_to_number("e" <> rest)
41+
def convert_text_to_number("two" <> rest), do: "2" <> convert_text_to_number("o" <> rest)
42+
def convert_text_to_number("three" <> rest), do: "3" <> convert_text_to_number("e" <> rest)
43+
def convert_text_to_number("four" <> rest), do: "4" <> convert_text_to_number("r" <> rest)
44+
def convert_text_to_number("five" <> rest), do: "5" <> convert_text_to_number("e" <> rest)
45+
def convert_text_to_number("six" <> rest), do: "6" <> convert_text_to_number("x" <> rest)
46+
def convert_text_to_number("seven" <> rest), do: "7" <> convert_text_to_number("n" <> rest)
47+
def convert_text_to_number("eight" <> rest), do: "8" <> convert_text_to_number("t" <> rest)
48+
def convert_text_to_number("nine" <> rest), do: "9" <> convert_text_to_number("e" <> rest)
49+
def convert_text_to_number(<<char, rest::binary>>), do: <<char>> <> convert_text_to_number(rest)
50+
# For some reason the operations are leaving an empty char thats why I had to made this pattern
51+
def convert_text_to_number(""), do: ""
52+
53+
54+
end
File renamed without changes.

β€Želixir/day_01/mix.exs β€Želixir_puzzles/mix.exs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
defmodule Day01.MixProject do
1+
defmodule ElixirPuzzles.MixProject do
22
use Mix.Project
33

44
def project do
55
[
6-
app: :day_01,
6+
app: :elixir_puzzles,
77
version: "0.1.0",
88
elixir: "~> 1.15",
99
start_permanent: Mix.env() == :prod,
File renamed without changes.

0 commit comments

Comments
Β (0)