#' Day 23: Amphipod
#'
#' [Amphipod](https://adventofcode.com/2021/day/23)
#'
#' @name day23
#' @rdname day23
#' @details
#'
#' **Part One**
#'
#' A group of [amphipods](https://en.wikipedia.org/wiki/Amphipoda) notice
#' your fancy submarine and flag you down. \"With such an impressive
#' shell,\" one amphipod
#' [says]{title="What? You didn't know amphipods can talk?"}, \"surely you
#' can help us with a question that has stumped our best scientists.\"
#'
#' They go on to explain that a group of timid, stubborn amphipods live in
#' a nearby burrow. Four types of amphipods live there: *Amber* (`A`),
#' *Bronze* (`B`), *Copper* (`C`), and *Desert* (`D`). They live in a
#' burrow that consists of a *hallway* and four *side rooms*. The side
#' rooms are initially full of amphipods, and the hallway is initially
#' empty.
#'
#' They give you a *diagram of the situation* (your puzzle input),
#' including locations of each amphipod (`A`, `B`, `C`, or `D`, each of
#' which is occupying an otherwise open space), walls (`#`), and open space
#' (`.`).
#'
#' For example:
#'
#' #############
#' #...........#
#' ###B#C#B#D###
#' #A#D#C#A#
#' #########
#'
#' The amphipods would like a method to organize every amphipod into side
#' rooms so that each side room contains one type of amphipod and the types
#' are sorted `A`-`D` going left to right, like this:
#'
#' #############
#' #...........#
#' ###A#B#C#D###
#' #A#B#C#D#
#' #########
#'
#' Amphipods can move up, down, left, or right so long as they are moving
#' into an unoccupied open space. Each type of amphipod requires a
#' different amount of *energy* to move one step: Amber amphipods require
#' `1` energy per step, Bronze amphipods require `10` energy, Copper
#' amphipods require `100`, and Desert ones require `1000`. The amphipods
#' would like you to find a way to organize the amphipods that requires the
#' *least total energy*.
#'
#' However, because they are timid and stubborn, the amphipods have some
#' extra rules:
#'
#' - Amphipods will never *stop on the space immediately outside any
#' room*. They can move into that space so long as they immediately
#' continue moving. (Specifically, this refers to the four open spaces
#' in the hallway that are directly above an amphipod starting
#' position.)
#' - Amphipods will never *move from the hallway into a room* unless that
#' room is their destination room *and* that room contains no amphipods
#' which do not also have that room as their own destination. If an
#' amphipod\'s starting room is not its destination room, it can stay
#' in that room until it leaves the room. (For example, an Amber
#' amphipod will not move from the hallway into the right three rooms,
#' and will only move into the leftmost room if that room is empty or
#' if it only contains other Amber amphipods.)
#' - Once an amphipod stops moving in the hallway, *it will stay in that
#' spot until it can move into a room*. (That is, once any amphipod
#' starts moving, any other amphipods currently in the hallway are
#' locked in place and will not move again until they can move fully
#' into a room.)
#'
#' In the above example, the amphipods can be organized using a minimum of
#' `12521` energy. One way to do this is shown below.
#'
#' Starting configuration:
#'
#' #############
#' #...........#
#' ###B#C#B#D###
#' #A#D#C#A#
#' #########
#'
#' One Bronze amphipod moves into the hallway, taking 4 steps and using
#' `40` energy:
#'
#' #############
#' #...B.......#
#' ###B#C#.#D###
#' #A#D#C#A#
#' #########
#'
#' The only Copper amphipod not in its side room moves there, taking 4
#' steps and using `400` energy:
#'
#' #############
#' #...B.......#
#' ###B#.#C#D###
#' #A#D#C#A#
#' #########
#'
#' A Desert amphipod moves out of the way, taking 3 steps and using `3000`
#' energy, and then the Bronze amphipod takes its place, taking 3 steps and
#' using `30` energy:
#'
#' #############
#' #.....D.....#
#' ###B#.#C#D###
#' #A#B#C#A#
#' #########
#'
#' The leftmost Bronze amphipod moves to its room using `40` energy:
#'
#' #############
#' #.....D.....#
#' ###.#B#C#D###
#' #A#B#C#A#
#' #########
#'
#' Both amphipods in the rightmost room move into the hallway, using `2003`
#' energy in total:
#'
#' #############
#' #.....D.D.A.#
#' ###.#B#C#.###
#' #A#B#C#.#
#' #########
#'
#' Both Desert amphipods move into the rightmost room using `7000` energy:
#'
#' #############
#' #.........A.#
#' ###.#B#C#D###
#' #A#B#C#D#
#' #########
#'
#' Finally, the last Amber amphipod moves into its room, using `8` energy:
#'
#' #############
#' #...........#
#' ###A#B#C#D###
#' #A#B#C#D#
#' #########
#'
#' *What is the least energy required to organize the amphipods?*
#'
#' **Part Two**
#'
#' *(Use have to manually add this yourself.)*
#'
#' *(Try using `convert_clipboard_html_to_roxygen_md()`)*
#'
#' @param x some data
#' @return For Part One, `f23a(x)` returns .... For Part Two,
#' `f23b(x)` returns ....
#' @export
#' @examples
#' f23a(example_data_23())
#' f23b()
f23a <- function(x) {
}
#' @rdname day23
#' @export
f23b <- function(x) {
}
f23_helper <- function(x) {
}
#' @param example Which example data to use (by position or name). Defaults to
#' 1.
#' @rdname day23
#' @export
example_data_23 <- function(example = 1) {
l <- list(
a = c(
)
)
l[[example]]
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.