Run this notebook

Use Livebook to open this notebook and explore new ideas.

It is easy to get started, on your machine or the cloud.

Click below to open and run it in your Livebook at .

(or change your Livebook location)

# 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 ```
See source

Have you already installed Livebook?

If you already installed Livebook, you can configure the default Livebook location where you want to open notebooks.
Livebook up Checking status We can't reach this Livebook (but we saved your preference anyway)
Run notebook

Not yet? Install Livebook in just a minute

Livebook is open source, free, and ready to run anywhere.

Run on your machine

with Livebook Desktop

Run in the cloud

on select platforms

To run on Linux, Docker, embedded devices, or Elixir’s Mix, check our README.

PLATINUM SPONSORS
SPONSORS
Code navigation with go to definition of modules and functions Read More ×