Skip to content

Instantly share code, notes, and snippets.

View neofight78's full-sized avatar

William Hoggarth neofight78

View GitHub Profile
@neofight78
neofight78 / passport_processing.rs
Created January 24, 2022 09:59
Advent of Code 2020 - Day 4: Passport Processing
fn main() {
let part1 = count_valid_passports(INPUT, part1_filter);
let part2 = count_valid_passports(INPUT, part2_filter);
println!("Part 1: {}", part1);
println!("Part 2: {}", part2);
}
fn count_valid_passports(batch: &str, filter: fn(&str, &str) -> bool) -> usize {
batch
@neofight78
neofight78 / toboggan_trajectory.rs
Created January 23, 2022 06:04
Advent of Code 2020 - Day 3: Toboggan Trajectory
struct Map {
trees: Vec<Vec<bool>>,
width: usize,
height: usize,
}
impl From<&str> for Map {
fn from(grid: &str) -> Self {
let width = grid.lines().next().unwrap().len();
let height = grid.lines().count();
@neofight78
neofight78 / password_philosophy.rs
Created January 22, 2022 05:51
Advent of Code 2020 - Day 2: Password Philosophy
struct Line<'a> {
lower: usize,
upper: usize,
letter: char,
password: &'a str,
}
impl<'a> From<&'a str> for Line<'a> {
fn from(l: &'a str) -> Self {
let (policy, password) = l.split_once(": ").unwrap();
@neofight78
neofight78 / report_repair.rs
Created January 5, 2022 16:46
Advent of Code 2020 - Day 1: Report Repair
fn part_1(values: &HashSet<i64>) -> i64 {
values
.iter()
.find_map(|&v| {
if values.contains(&(2020 - v)) {
Some(v * (2020 - v))
} else {
None
}
})
@neofight78
neofight78 / sea_cucumber.rs
Created December 25, 2021 05:53
Advent of Code 2021 - Day 25: Sea Cucumber
fn main() {
let mut sea_floor = SeaFloor::from(INPUT);
let mut step = 0;
loop {
step += 1;
if !sea_floor.step() {
println!("The sea cucumbers stop moving after step: {}", step);
@neofight78
neofight78 / arithmetic_logic_unit.rs
Created December 24, 2021 17:11
Advent of Code 2021 - Day 24: Arithmetic Logic Unit
fn main() {
let program = Program::from(MONAD);
let (largest, smallest) = find_max_and_min_model_numbers(&program);
println!("The largest model number is: {}", largest);
println!("The smallest model number is: {}", smallest);
}
fn find_max_and_min_model_numbers(program: &Program) -> (i64, i64) {
@neofight78
neofight78 / amphipod.rs
Created December 23, 2021 20:01
Advent of Code 2021 - Day 23: Amphipod
fn main() {
let burrow = Burrow::<8>::from(PART1);
let result = burrow.energy_to_organise().unwrap();
println!("Energy required to organise partial map: {:?}", result);
let burrow = Burrow::<16>::from(PART2);
let result = burrow.energy_to_organise().unwrap();
println!("Energy required to organise full map: {:?}", result);
}
@neofight78
neofight78 / reactor_reboot.rs
Created December 22, 2021 11:13
Advent of Code 2021 - Day 22: Reactor Reboot
fn main() {
let steps = parse_steps(INPUT);
let regions = execute_steps(&steps);
let total = regions.iter().map(|c| c.count_cubes()).sum::<i64>();
let inner_region = Cuboid::new(Vector::new(-50, -50, -50), Vector::new(50, 50, 50));
let steps = once((true, inner_region))
.chain(regions.iter().map(|&r| (false, r)))
.collect::<Vec<_>>();
@neofight78
neofight78 / dirac_dice.rs
Last active December 21, 2021 09:39
Advent of Code 2021 - Day 21: Dirac Dice
fn part1() {
let mut player_a = Player {
position: 1,
score: 0,
};
let mut player_b = Player {
position: 5,
score: 0,
};
@neofight78
neofight78 / trench_map.rs
Last active December 20, 2021 09:27
Advent of Code 2021 - Day 20: Trench Map
fn main() {
let (algorithm, mut image) = parse_input(INPUT);
let mut infinite_pixels = false;
for _ in 0..50 {
image = step(&algorithm, &image, &mut infinite_pixels);
}
println!("Pixels lit: {}", image.len());
}