Untitled
Section
input =
"addx 15\naddx -11\naddx 6\naddx -3\naddx 5\naddx -1\naddx -8\naddx 13\naddx 4\nnoop\naddx -1\naddx 5\naddx -1\naddx 5\naddx -1\naddx 5\naddx -1\naddx 5\naddx -1\naddx -35\naddx 1\naddx 24\naddx -19\naddx 1\naddx 16\naddx -11\nnoop\nnoop\naddx 21\naddx -15\nnoop\nnoop\naddx -3\naddx 9\naddx 1\naddx -3\naddx 8\naddx 1\naddx 5\nnoop\nnoop\nnoop\nnoop\nnoop\naddx -36\nnoop\naddx 1\naddx 7\nnoop\nnoop\nnoop\naddx 2\naddx 6\nnoop\nnoop\nnoop\nnoop\nnoop\naddx 1\nnoop\nnoop\naddx 7\naddx 1\nnoop\naddx -13\naddx 13\naddx 7\nnoop\naddx 1\naddx -33\nnoop\nnoop\nnoop\naddx 2\nnoop\nnoop\nnoop\naddx 8\nnoop\naddx -1\naddx 2\naddx 1\nnoop\naddx 17\naddx -9\naddx 1\naddx 1\naddx -3\naddx 11\nnoop\nnoop\naddx 1\nnoop\naddx 1\nnoop\nnoop\naddx -13\naddx -19\naddx 1\naddx 3\naddx 26\naddx -30\naddx 12\naddx -1\naddx 3\naddx 1\nnoop\nnoop\nnoop\naddx -9\naddx 18\naddx 1\naddx 2\nnoop\nnoop\naddx 9\nnoop\nnoop\nnoop\naddx -1\naddx 2\naddx -37\naddx 1\naddx 3\nnoop\naddx 15\naddx -21\naddx 22\naddx -6\naddx 1\nnoop\naddx 2\naddx 1\nnoop\naddx -10\nnoop\nnoop\naddx 20\naddx 1\naddx 2\naddx 2\naddx -6\naddx -11\nnoop\nnoop\nnoop\n"
input =
"addx 1\nnoop\naddx 4\nnoop\nnoop\nnoop\naddx 6\naddx -1\naddx 5\nnoop\nnoop\nnoop\naddx 5\naddx -14\nnoop\naddx 19\nnoop\naddx 1\naddx 4\naddx 1\nnoop\nnoop\naddx 2\naddx 5\naddx -27\naddx 20\naddx -30\naddx 2\naddx 5\naddx 2\naddx 4\naddx -3\naddx 2\naddx 5\naddx 2\naddx -9\naddx 1\naddx 11\nnoop\naddx -20\naddx 7\naddx 23\naddx 2\naddx 3\naddx -2\naddx -34\naddx -2\nnoop\naddx 3\nnoop\naddx 3\naddx 2\nnoop\naddx 3\naddx 2\naddx 5\naddx 2\naddx -9\naddx -7\naddx 21\nnoop\naddx 8\nnoop\naddx -1\naddx 3\naddx -2\naddx 5\naddx -37\nnoop\naddx 35\naddx -31\naddx 1\naddx 4\naddx -1\naddx 2\nnoop\naddx 3\naddx 1\naddx 5\naddx -2\naddx 7\naddx -2\naddx -2\naddx 10\nnoop\naddx 4\nnoop\nnoop\naddx -19\naddx 20\naddx -38\nnoop\nnoop\naddx 7\naddx 2\naddx 3\nnoop\naddx 4\naddx -3\naddx 2\naddx 2\nnoop\naddx 3\nnoop\nnoop\nnoop\naddx 5\nnoop\naddx 7\naddx -2\naddx 7\nnoop\nnoop\naddx -5\naddx 6\naddx -36\nnoop\naddx 1\naddx 2\naddx 5\naddx 2\naddx 3\naddx -2\naddx 2\naddx 5\naddx 2\naddx 1\nnoop\naddx 4\naddx -16\naddx 21\nnoop\nnoop\naddx 1\naddx -8\naddx 12\nnoop\nnoop\nnoop\nnoop\n"
defmodule D10 do
def signal_strength(instructions, cycle) do
instructions
|> Enum.take(cycle - 1)
|> Enum.sum()
|> Kernel.+(1)
|> Kernel.*(cycle)
end
def sprite_position(cycle, instructions) do
IO.inspect(cycle, label: "cycle")
instructions
|> Enum.take(cycle)
|> Enum.sum()
|> Kernel.+(1)
|> then(&[&1 - 1, &1, &1 + 1])
|> IO.inspect(label: "position")
end
def display(cycle, instructions) do
cycle
|> Enum.map(&(&1 in sprite_position(&1, instructions)))
|> Enum.map(&if(&1, do: "#", else: "."))
end
def transform_instruction(["addx", value]), do: [0, String.to_integer(value)]
def transform_instruction(["noop"]), do: [0]
end
import D10
# Part 1
instructions =
input
|> String.split("\n", trim: true)
|> Enum.map(&String.split(&1, " "))
|> Enum.flat_map(&D10.transform_instruction/1)
Enum.to_list(20..220//40)
|> Enum.map(&D10.signal_strength(instructions, &1))
|> Enum.sum()
# Part 2
Enum.to_list(0..239)
|> Enum.map(fn x ->
rem(x, 40) in sprite_position(x, instructions)
end)
|> Enum.map(&if(&1, do: "◼︎", else: " "))
|> Enum.chunk_every(40)
|> Enum.intersperse("\n")
|> Enum.join()
|> IO.puts()
# Enum.to_list(0..220)
# |> Enum.map(&D10.signal_strength(instructions, &1))
# |> Enum.sum()