Skip to content

Instantly share code, notes, and snippets.

@saolsen
saolsen / day09.rs
Created December 9, 2022 18:56
aoc 2022 day09
use std::collections::HashSet;
fn parse<'a>(input: &'a str) -> impl Iterator<Item = (&'a str, u32)> + 'a {
input.split("\n").map(|line| {
let mut split = line.split(" ");
let dir = split.next().unwrap();
let steps = split.next().unwrap().parse::<u32>().unwrap();
(dir, steps)
})
}
@saolsen
saolsen / day08.rs
Created December 8, 2022 14:09
aoc 2022 day08
use core::num;
fn parse(input: &str) -> Vec<Vec<u32>> {
let mut grid = vec![];
for line in input.split("\n") {
let mut row = vec![];
for c in line.chars() {
let i = c.to_digit(10).unwrap();
row.push(i);
}
@saolsen
saolsen / day07.rs
Created December 7, 2022 18:38
aoc 2022 day07
use std::{collections::HashMap, iter::Peekable, str::Split};
#[derive(Debug)]
struct Dir<'a> {
path: Vec<&'a str>,
files: HashMap<&'a str, File<'a>>,
}
#[derive(Debug)]
struct File<'a> {
@saolsen
saolsen / day06.rs
Created December 6, 2022 13:20
aoc 2022 day06
use std::collections::HashSet;
fn main() {
let input = include_str!("day06_input.txt");
let data: Vec<char> = input.chars().collect();
// just let HashSet do all the work
let mut message_set = HashSet::new();
for i in 0..data.len() {
if i >= 13 {
@saolsen
saolsen / day05.rs
Created December 5, 2022 13:41
aoc 2022 day05
fn main() {
let input = include_str!("day05_input.txt");
let lines = input.split("\n").collect::<Vec<&str>>();
// find where the file switches from stacks to instructions
let mut split = 0;
for (i, line) in lines.iter().enumerate() {
if line.is_empty() {
split = i;
}
@saolsen
saolsen / day04.rs
Created December 4, 2022 16:09
aoc 2022 day04
fn parse_line(line: &str) -> (i32, i32, i32, i32) {
let mut split = line.split(",");
let left = split.next().unwrap();
let mut ls = left.split("-");
let left_from: i32 = ls.next().unwrap().parse().unwrap();
let left_to: i32 = ls.next().unwrap().parse().unwrap();
let right = split.next().unwrap();
let mut rs = right.split("-");
let right_from: i32 = rs.next().unwrap().parse().unwrap();
let right_to: i32 = rs.next().unwrap().parse().unwrap();
@saolsen
saolsen / day02.rs
Created December 2, 2022 13:40
aoc 2022 day02
#[derive(Clone, Copy)]
enum Move {
Rock,
Paper,
Scissors
}
impl Move {
pub fn from(s: &str) -> Move{
use Move::*;
@saolsen
saolsen / day01.rs
Created December 1, 2022 12:01
aoc 2022 day01
fn main() {
let input = include_str!("day01_input.txt");
let mut elf_totals = vec![];
let mut total = 0;
for line in input.split('\n') {
if line == "" {
elf_totals.push(total);
total = 0;
} else {
@saolsen
saolsen / polar.h
Created September 7, 2021 14:02
polar include file for 0.20.0-beta
/**
* We use the convention of zero as an error term,
* since we also use `null_ptr()` to indicate an error.
* So for consistency, a zero term is an error in both cases.
*/
#define polar_POLAR_FAILURE 0
#define polar_POLAR_SUCCESS 1
typedef struct polar_Polar polar_Polar;
@saolsen
saolsen / .clang-format
Created October 7, 2020 17:59
clang format
BasedOnStyle: LLVM
IndentWidth: 4