1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
//! # Day 21: RPG Simulator 20XX
//!
//! Little Henry Case got a new video game for Christmas. It's an [RPG], and he's stuck on a boss.
//! He needs to know what equipment to buy at the shop. He hands you the [controller].
//!
//! In this game, the player (you) and the enemy (the boss) take turns attacking. The player always
//! goes first. Each attack reduces the opponent's hit points by at least `1`. The first character
//! at or below `0` hit points loses.
//!
//! Damage dealt by an attacker each turn is equal to the attacker's damage score minus the
//! defender's armor score. An attacker always does at least `1` damage. So, if the attacker has a
//! damage score of `8`, and the defender has an armor score of `3`, the defender loses `5` hit
//! points. If the defender had an armor score of `300`, the defender would still lose `1` hit
//! point.
//!
//! Your damage score and armor score both start at zero. They can be increased by buying items in
//! exchange for gold. You start with no items and have as much gold as you need. Your total damage
//! or armor is equal to the sum of those stats from all of your items. You have **100 hit points**.
//!
//! Here is what the item shop is selling:
//!
//! ```txt
//! Weapons: Cost Damage Armor
//! Dagger 8 4 0
//! Shortsword 10 5 0
//! Warhammer 25 6 0
//! Longsword 40 7 0
//! Greataxe 74 8 0
//!
//! Armor: Cost Damage Armor
//! Leather 13 0 1
//! Chainmail 31 0 2
//! Splintmail 53 0 3
//! Bandedmail 75 0 4
//! Platemail 102 0 5
//!
//! Rings: Cost Damage Armor
//! Damage +1 25 1 0
//! Damage +2 50 2 0
//! Damage +3 100 3 0
//! Defense +1 20 0 1
//! Defense +2 40 0 2
//! Defense +3 80 0 3
//! ```
//!
//! You must buy exactly one weapon; no dual-wielding. Armor is optional, but you can't use more
//! than one. You can buy 0-2 rings (at most one for each hand). You must use any items you buy. The
//! shop only has one of each item, so you can't buy, for example, two rings of Damage +3.
//!
//! For example, suppose you have `8` hit points, `5` damage, and `5` armor, and that the boss has
//! `12` hit points, `7` damage, and `2` armor:
//!
//! - The player deals `5-2 = 3` damage; the boss goes down to 9 hit points.
//! - The boss deals `7-5 = 2` damage; the player goes down to 6 hit points.
//! - The player deals `5-2 = 3` damage; the boss goes down to 6 hit points.
//! - The boss deals `7-5 = 2` damage; the player goes down to 4 hit points.
//! - The player deals `5-2 = 3` damage; the boss goes down to 3 hit points.
//! - The boss deals `7-5 = 2` damage; the player goes down to 2 hit points.
//! - The player deals `5-2 = 3` damage; the boss goes down to 0 hit points.
//!
//! In this scenario, the player wins! (Barely.)
//!
//! You have **100 hit points**. The boss's actual stats are in your puzzle input. What is **the
//! least amount of gold you can spend** and still win the fight?
//!
//! [RPG]: https://en.wikipedia.org/wiki/Role-playing_video_game
//! [controller]: https://en.wikipedia.org/wiki/Game_controller
use anyhow::Result;
pub const INPUT: &str = include_str!("d21.txt");
pub fn solve_part_one(input: &str) -> Result<i64> {
Ok(0)
}
pub fn solve_part_two(input: &str) -> Result<i64> {
Ok(0)
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn part_one() {}
#[test]
fn part_two() {}
}