# Day2
## Untitled
<!-- livebook:{"livebook_object":"cell_input","name":"input","type":"textarea","value":"forward 8\nforward 9\nforward 9\ndown 3\nforward 9\ndown 1\ndown 7\ndown 7\ndown 4\ndown 2\ndown 6\ndown 6\ndown 2\nforward 6\nforward 6\nforward 2\nforward 2\nforward 7\nforward 6\nup 6\nup 8\nforward 5\nforward 4\ndown 6\nforward 7\ndown 5\nforward 5\ndown 8\ndown 8\ndown 7\nforward 4\ndown 2\nforward 7\nup 8\nforward 3\ndown 2\nforward 1\nup 3\nforward 3\nup 1\ndown 3\nup 7\nup 2\ndown 4\ndown 2\nforward 9\nforward 3\ndown 8\nforward 5\nup 9\nup 4\nforward 9\ndown 1\nforward 6\ndown 3\nforward 8\nup 2\nforward 3\nup 7\ndown 4\nforward 2\nforward 7\nforward 3\ndown 1\ndown 3\nup 5\nforward 6\ndown 5\ndown 4\ndown 8\ndown 2\nup 5\nforward 7\nup 8\nforward 2\ndown 5\nforward 3\nup 1\nup 5\ndown 8\ndown 3\nforward 4\nforward 4\nforward 1\nup 8\ndown 9\nforward 7\nforward 9\ndown 5\nup 3\ndown 9\nup 6\nforward 1\nforward 3\nforward 5\ndown 5\nforward 6\ndown 3\ndown 8\nforward 3\nforward 5\nforward 7\nforward 6\ndown 9\ndown 5\ndown 6\ndown 5\ndown 1\ndown 8\nforward 3\ndown 9\ndown 5\ndown 5\nforward 9\nforward 2\ndown 7\nforward 9\nforward 9\nup 1\nforward 3\nup 9\nforward 5\nforward 7\ndown 7\nforward 2\nup 8\nup 6\ndown 7\ndown 3\ndown 5\ndown 2\nforward 6\nforward 6\nup 6\nup 2\nforward 4\nforward 7\nforward 1\ndown 4\nup 8\ndown 3\nup 1\ndown 2\nforward 4\nforward 7\nup 1\ndown 7\nforward 8\nup 2\ndown 8\nup 4\nup 4\nup 2\ndown 8\nup 4\ndown 6\nup 8\ndown 5\nup 5\ndown 8\nforward 9\ndown 1\ndown 5\nforward 3\nforward 3\nup 9\ndown 2\nforward 3\ndown 6\nforward 1\nforward 9\nforward 3\ndown 8\nup 4\ndown 1\ndown 8\nup 1\nforward 2\ndown 7\nup 3\nup 8\ndown 2\nup 6\nforward 6\ndown 9\nforward 4\nforward 7\nup 9\nforward 3\nforward 2\ndown 8\ndown 2\ndown 5\ndown 5\ndown 1\nup 7\ndown 4\nforward 5\ndown 9\ndown 5\ndown 1\ndown 6\nforward 9\ndown 6\nforward 3\ndown 3\nup 6\nforward 2\nforward 6\ndown 2\ndown 9\ndown 6\ndown 1\ndown 7\ndown 6\ndown 6\nup 1\nforward 8\ndown 9\ndown 6\ndown 8\ndown 8\ndown 6\ndown 3\nforward 9\nforward 6\ndown 9\nforward 5\ndown 6\ndown 6\ndown 9\ndown 7\ndown 3\nforward 1\nup 9\nforward 9\ndown 7\nforward 4\ndown 1\nforward 9\nup 9\ndown 7\nforward 5\ndown 3\nup 7\nforward 9\nforward 6\nforward 3\nforward 8\ndown 4\ndown 1\ndown 7\ndown 7\nup 4\ndown 9\nforward 6\nforward 7\ndown 8\nforward 2\nforward 2\nforward 9\nforward 6\nforward 9\nup 6\nup 8\nforward 2\nup 3\nforward 9\nforward 1\ndown 4\nforward 8\ndown 4\nforward 5\nforward 7\nup 2\nforward 5\ndown 4\nforward 3\ndown 5\nforward 9\nup 3\nforward 8\ndown 7\ndown 7\ndown 9\nforward 2\ndown 1\ndown 6\nup 8\ndown 2\ndown 1\nup 3\ndown 3\nforward 2\nforward 6\nup 6\ndown 3\nup 9\nup 3\ndown 8\nup 6\ndown 2\nforward 4\nup 1\ndown 5\ndown 4\nup 9\nup 7\nforward 7\ndown 9\nforward 9\nforward 5\nforward 3\ndown 4\nup 6\nup 7\ndown 7\ndown 6\nup 9\nup 4\ndown 7\nforward 7\nforward 8\ndown 9\nforward 5\nforward 4\ndown 5\nforward 8\nforward 5\nup 3\ndown 9\nforward 1\nforward 2\nup 3\ndown 2\ndown 1\nforward 5\nforward 5\nforward 6\nup 2\nforward 3\ndown 7\ndown 6\nup 3\ndown 4\ndown 4\nforward 5\ndown 3\nup 6\nforward 1\nup 8\nforward 7\nforward 1\nforward 9\ndown 2\nup 8\nup 1\nup 4\nforward 9\nforward 3\nforward 5\ndown 1\nup 9\ndown 1\nforward 3\ndown 6\ndown 8\nup 4\nforward 6\nup 7\ndown 8\nforward 9\nup 2\ndown 7\ndown 1\nforward 9\nup 7\nforward 3\nforward 9\nforward 1\nforward 1\ndown 9\nforward 1\nup 4\ndown 5\nforward 4\ndown 1\nforward 4\nforward 9\nup 4\ndown 3\ndown 6\nup 2\ndown 6\ndown 5\nforward 5\nup 1\nup 9\nforward 8\nup 3\ndown 1\nforward 3\nforward 7\nup 6\nup 3\ndown 6\nforward 7\nup 6\ndown 7\nforward 8\nup 4\ndown 8\nup 9\nup 3\ndown 3\nforward 8\ndown 4\ndown 9\nforward 2\ndown 7\nup 1\nforward 9\nforward 5\nup 8\nforward 9\nforward 4\nforward 9\nforward 7\ndown 4\nup 4\ndown 7\ndown 4\ndown 4\ndown 1\nforward 5\nforward 4\ndown 1\ndown 4\ndown 8\ndown 3\nforward 7\nforward 4\ndown 1\ndown 9\nup 3\nforward 2\ndown 8\ndown 9\ndown 2\ndown 5\nup 9\ndown 9\nup 9\nforward 5\nforward 8\nforward 9\ndown 5\nforward 6\ndown 8\ndown 9\nforward 8\nup 5\nup 9\nup 7\nup 8\nforward 9\nforward 1\nup 6\ndown 8\ndown 8\nforward 1\nup 1\nforward 8\nforward 6\ndown 4\nforward 1\ndown 7\nforward 8\nforward 3\nup 3\ndown 4\ndown 2\nforward 2\nforward 3\nup 4\ndown 3\nforward 2\ndown 8\nforward 7\nup 3\ndown 2\nforward 2\ndown 5\nup 6\nup 6\nforward 4\nup 4\ndown 8\nforward 8\ndown 9\ndown 9\ndown 6\ndown 2\nforward 2\nup 6\nup 5\nforward 3\nforward 3\nup 9\ndown 3\nforward 8\ndown 5\nforward 5\nforward 7\ndown 3\ndown 4\ndown 1\ndown 8\ndown 1\ndown 1\nforward 9\nforward 3\ndown 8\ndown 6\nup 9\nforward 1\nforward 5\nup 9\nup 8\nforward 2\nup 8\ndown 9\nup 2\nforward 5\nforward 1\nforward 8\ndown 3\nforward 4\ndown 5\nup 6\nforward 8\nforward 9\nforward 3\ndown 1\ndown 3\ndown 3\nup 4\nforward 9\ndown 3\ndown 6\nforward 3\nforward 2\ndown 6\ndown 8\nforward 6\nup 8\nup 3\nup 4\nforward 2\nforward 4\nforward 4\nforward 7\ndown 6\nup 8\ndown 3\nforward 8\nforward 4\ndown 7\ndown 5\nforward 6\nforward 4\nforward 6\ndown 3\nforward 3\ndown 1\ndown 7\nforward 3\nforward 2\nforward 7\ndown 5\nup 4\ndown 6\ndown 9\nforward 3\nforward 5\nforward 3\ndown 1\nforward 2\nup 5\nup 6\nforward 2\ndown 4\nforward 3\ndown 4\ndown 1\nforward 8\nup 2\ndown 3\ndown 6\nup 5\nforward 3\nforward 6\ndown 3\nforward 1\ndown 7\nforward 2\nforward 1\nforward 6\nforward 5\nforward 3\ndown 4\ndown 8\nforward 1\nup 2\nup 8\ndown 4\nforward 9\nup 6\nforward 5\nforward 7\ndown 5\nforward 5\ndown 1\nforward 4\nforward 5\nup 2\nforward 5\nup 8\nup 1\nforward 2\ndown 4\ndown 6\nforward 4\ndown 2\ndown 3\nforward 2\nup 3\nup 4\nforward 2\ndown 6\nforward 1\nforward 4\ndown 6\nforward 7\nup 2\nforward 7\nforward 6\nup 2\nforward 8\nforward 4\nforward 9\ndown 1\ndown 8\nforward 3\nforward 2\ndown 8\nup 1\nforward 4\ndown 8\nforward 2\nforward 8\nup 2\ndown 1\nforward 4\nforward 2\nup 4\nup 2\ndown 3\nup 8\nforward 3\nup 8\nforward 9\nup 1\nup 5\ndown 5\ndown 6\nforward 1\nup 5\nup 8\nforward 7\ndown 5\nup 4\nforward 2\nup 4\nup 4\ndown 2\nforward 6\nforward 2\ndown 7\ndown 5\nforward 1\ndown 2\ndown 5\ndown 7\nup 8\ndown 8\nup 5\ndown 1\nforward 5\ndown 2\nforward 5\ndown 1\nup 7\nup 2\nforward 2\nforward 3\nforward 6\nforward 3\ndown 8\nup 8\nforward 8\nforward 1\nforward 7\nup 2\nforward 9\ndown 1\nforward 5\nup 9\nforward 3\nforward 7\nforward 8\nup 1\ndown 3\nforward 5\ndown 2\nforward 6\nforward 3\ndown 9\nup 5\nforward 2\ndown 4\nup 1\nforward 4\nup 4\ndown 8\ndown 8\nforward 3\nforward 8\ndown 7\nup 3\nforward 1\nup 3\nforward 9\nforward 7\nforward 1\ndown 6\nforward 3\ndown 1\ndown 8\nforward 5\nforward 3\nup 6\nforward 5\nforward 4\nforward 3\nforward 9\nforward 8\ndown 6\ndown 2\nforward 7\nforward 6\nup 6\ndown 6\ndown 4\ndown 3\nforward 8\ndown 9\nup 5\nforward 3\nforward 2\ndown 5\nup 4\ndown 6\ndown 3\nforward 9\ndown 2\nforward 9\nforward 8\nup 1\ndown 2\nforward 7\nup 5\nup 6\ndown 8\nup 9\nup 8\nforward 1\nforward 5\ndown 9\nforward 8\ndown 8\nup 1\ndown 7\nforward 7\nup 3\ndown 3\ndown 1\nforward 2\ndown 3\nforward 9\nforward 2\ndown 8\ndown 2\nforward 5\ndown 9\ndown 1\ndown 5\ndown 6\nup 4\nup 3\ndown 1\nup 7\nforward 6\ndown 3\ndown 6\nup 5\nforward 8\nup 8\ndown 1\ndown 2\nup 8\ndown 7\nforward 7\nforward 4\ndown 8\ndown 3\nforward 3\ndown 4\nforward 3\ndown 6\nforward 4\nforward 7\nforward 9\nup 7\nforward 1\ndown 7\ndown 8\ndown 8\nup 6\ndown 3\nforward 5\nforward 5\nforward 9\nforward 4\ndown 4\ndown 8\ndown 7\ndown 1\nforward 2\nforward 4\ndown 3\ndown 6\ndown 7\nforward 5\ndown 8\ndown 1\nforward 4\nforward 3\nforward 1\ndown 6\ndown 7\ndown 1\nforward 6\ndown 4\nup 2\nforward 4\ndown 2\nup 5\ndown 2\ndown 6\nup 7\nforward 4\nforward 7\nforward 9\nup 5\ndown 9\nup 5\nforward 6\ndown 2\nup 8\nup 9\nup 9\nforward 5\ndown 2\nforward 2\ndown 7\nforward 5\nforward 9\nup 8\ndown 8\nforward 1\ndown 2\nup 3\nforward 3\ndown 5\nforward 4\ndown 3\nforward 4\nforward 9\nforward 3\ndown 5\nforward 4\ndown 2\nforward 5\nforward 8\nup 6\nup 2\ndown 3\nforward 6\ndown 5\ndown 4\ndown 4\ndown 4\nup 2\nup 2\nforward 6\nforward 2\nforward 9\ndown 2\ndown 9\ndown 8\nforward 2\ndown 3\nup 3\nforward 5\ndown 4\nup 3\nforward 3\ndown 1\nforward 7\nforward 5\nforward 6\ndown 8\ndown 5\ndown 5\ndown 9\nup 2\nforward 3\ndown 4\ndown 9\nforward 3\nforward 9\nforward 2\nforward 4\nup 6\ndown 6\nup 9\nforward 8\ndown 7\nforward 1\nforward 4\nup 1\nup 2\ndown 9\nforward 6\ndown 6\ndown 1\ndown 4\ndown 7\ndown 6\nforward 5\nup 1\nup 7\ndown 2\ndown 8\ndown 2\ndown 7\ndown 3\nup 9\ndown 7\ndown 5\ndown 6\nforward 9\nup 3\nforward 2\ndown 8\nforward 4\ndown 6\nforward 3\nup 3\ndown 5\nup 4\nforward 6\nforward 7\nforward 9\ndown 3\nforward 7\nforward 3\ndown 4\nup 4\ndown 8\nforward 6\nforward 7\nforward 9\nforward 4\ndown 3\nup 5\ndown 7\ndown 7\nforward 9"} -->
<!-- livebook:{"reevaluate_automatically":true} -->
```elixir
data =
"input"
|> IO.getn(1_000_000)
|> String.split(["\r\n", "\n"], trim: true)
|> Enum.map(&String.split/1)
|> Enum.map(fn [m, u] -> {m, String.to_integer(u)} end)
|> tap(&IO.puts(length(&1)))
```
<!-- livebook:{"reevaluate_automatically":true} -->
```elixir
defmodule P1 do
def move(data) do
data
|> Enum.reduce({0, 0}, fn
{"forward", unit}, {depth, position} -> {depth, position + unit}
{"down", unit}, {depth, position} -> {depth + unit, position}
{"up", unit}, {depth, position} -> {depth - unit, position}
end)
end
end
```
<!-- livebook:{"reevaluate_automatically":true} -->
```elixir
{depth, position} = P1.move(data)
```
<!-- livebook:{"reevaluate_automatically":true} -->
```elixir
depth * position
```
<!-- livebook:{"reevaluate_automatically":true} -->
```elixir
defmodule P2 do
def move(data) do
data
|> Enum.reduce({0, 0, 0}, fn
{"forward", unit}, {depth, aim, position} -> {depth + aim * unit, aim, position + unit}
{"down", unit}, {depth, aim, position} -> {depth, aim + unit, position}
{"up", unit}, {depth, aim, position} -> {depth, aim - unit, position}
end)
end
end
```
<!-- livebook:{"reevaluate_automatically":true} -->
```elixir
{depth, _aim, position} = P2.move(data)
```
<!-- livebook:{"reevaluate_automatically":true} -->
```elixir
depth * position
```