Day 12 wip
parent
083636f274
commit
e7f95fc243
|
@ -0,0 +1,5 @@
|
||||||
|
Sabqponm
|
||||||
|
abcryxxl
|
||||||
|
accszExk
|
||||||
|
acctuvwj
|
||||||
|
abdefghi
|
|
@ -0,0 +1,41 @@
|
||||||
|
abcccccccaaaaaaaaccccccccccaaaaaaccccccaccaaaaaaaccccccaacccccccccaaaaaaaaaaccccccccccccccccccccccccccccccccaaaaa
|
||||||
|
abcccccccaaaaaaaaacccccccccaaaaaacccccaaacaaaaaaaaaaaccaacccccccccccaaaaaaccccccccccccccccccccccccccccccccccaaaaa
|
||||||
|
abcccccccaaaaaaaaaaccccccccaaaaaacaaacaaaaaaaaaaaaaaaaaaccccccccccccaaaaaaccccccccccccccaaacccccccccccccccccaaaaa
|
||||||
|
abaaacccccccaaaaaaacccccccccaaacccaaaaaaaaaaaaaaaaaaaaaaaaacccccccccaaaaaaccccccccccccccaaacccccccccccccccccaaaaa
|
||||||
|
abaaaaccccccaaaccccccccccccccccccccaaaaaaaaacaaaacacaaaaaacccccccccaaaaaaaacccccccccccccaaaaccaaacccccccccccaccaa
|
||||||
|
abaaaaccccccaaccccaaccccccccccccccccaaaaaaacaaaaccccaaaaaccccccccccccccccacccccccccccccccaaaaaaaaacccccccccccccca
|
||||||
|
abaaaaccccccccccccaaaacccccccccaacaaaaaaaacccaaacccaaacaacccccccccccccccccccccccccccciiiiaaaaaaaacccccccccccccccc
|
||||||
|
abaaacccccccccccaaaaaacccccccccaaaaaaaaaaacccaaacccccccaacccccccccccaacccccccccccccciiiiiiijaaaaccccccccaaccccccc
|
||||||
|
abaaaccccccccccccaaaacccccccccaaaaaaaacaaacccaaaccccccccccccccccccccaaacaaacccccccciiiiiiiijjjacccccccccaaacccccc
|
||||||
|
abcccccaacaacccccaaaaaccccccccaaaaaacccccacaacccccccccccccccccccccccaaaaaaaccccccciiiinnnoijjjjjjjjkkkaaaaaaacccc
|
||||||
|
abcccccaaaaacccccaacaaccccccccccaaaacccaaaaaaccccccccccccccccccccccccaaaaaaccccccciiinnnnooojjjjjjjkkkkaaaaaacccc
|
||||||
|
abccccaaaaacccccccccccccccccccccaccccccaaaaaaaccccccccccccccccccccaaaaaaaaccccccchhinnnnnoooojjooopkkkkkaaaaccccc
|
||||||
|
abccccaaaaaaccccccccccccccccccccccccccccaaaaaaacccccccccccccccccccaaaaaaaaacccccchhhnnntttuooooooopppkkkaaaaccccc
|
||||||
|
abccccccaaaaccccccccccacccccccccccccccccaaaaaaacccaaccccccccccccccaaaaaaaaaaccccchhhnnttttuuoooooppppkkkaaaaccccc
|
||||||
|
abccccccaccccccccccccaaaacaaaccccccccccaaaaaacaaccaacccaaccccccccccccaaacaaacccchhhnnnttttuuuuuuuuupppkkccaaccccc
|
||||||
|
abccccccccccccccaaccccaaaaaaaccccccccccaaaaaacaaaaaacccaaaaaaccccccccaaacccccccchhhnnntttxxxuuuuuuupppkkccccccccc
|
||||||
|
abcccccccccccccaaaacccaaaaaaacccaccccccccccaaccaaaaaaacaaaaaaccccccccaacccaaccchhhhnnnttxxxxuuyyyuupppkkccccccccc
|
||||||
|
abcccccccccccccaaaaccaaaaaaaaacaaacccccccccccccaaaaaaaaaaaaaccccccccccccccaaachhhhmnnnttxxxxxxyyyuvppkkkccccccccc
|
||||||
|
abcccccccccccccaaaacaaaaaaaaaaaaaaccccccccccccaaaaaacaaaaaaaccccccccccccccaaaghhhmmmttttxxxxxyyyyvvpplllccccccccc
|
||||||
|
abccacccccccccccccccaaaaaaaaaaaaaaccccccccccccaaaaaacccaaaaaacccaacaacccaaaaagggmmmttttxxxxxyyyyvvppplllccccccccc
|
||||||
|
SbaaaccccccccccccccccccaaacaaaaaaaacccccccccccccccaacccaaccaacccaaaaacccaaaagggmmmsttxxxEzzzzyyvvvppplllccccccccc
|
||||||
|
abaaaccccccccccccccccccaaaaaaaaaaaaacaaccccccccccccccccaaccccccccaaaaaccccaagggmmmsssxxxxxyyyyyyvvvqqqlllcccccccc
|
||||||
|
abaaacccccccccccccccccccaaaaaaaaaaaaaaaaacccccccccccccccccccccccaaaaaaccccaagggmmmsssxxxwywyyyyyyvvvqqlllcccccccc
|
||||||
|
abaaaaacccccccccccccccccccaacaaaccaaaaaaacccccccccccccccccccccccaaaaccccccaagggmmmssswwwwwyyyyyyyvvvqqqllcccccccc
|
||||||
|
abaaaaaccccccccccccccccccccccaaaccccaaaacccccccccccccccccaaccaacccaaccccccccgggmmmmssssswwyywwvvvvvvqqqlllccccccc
|
||||||
|
abaaaaacccccccccccccaccacccccaaaccccaaaacccccccccccccccccaaaaaacccccccccccaaggggmllllsssswwywwwvvvvqqqqlllccccccc
|
||||||
|
abaaccccccccccccccccaaaaccccccccccccaccaccccccccccccccccccaaaaacccccccccccaaagggglllllssswwwwwrrqqqqqqmmllccccccc
|
||||||
|
abaaccccccccccccccccaaaaaccccccaaccaaccccccccccccccccccccaaaaaaccaacccccccaaaaggfffllllsswwwwrrrrqqqqqmmmcccccccc
|
||||||
|
abacaaaccccccccccccaaaaaaccccccaaaaaaccccccaacccccccccccaaaaaaaacaaacaaccccaaaaffffflllsrrwwwrrrmmmmmmmmmcccccccc
|
||||||
|
abaaaaaccccccccccccaaaaaaccccccaaaaaccccccaaaaccccccccccaaaaaaaacaaaaaaccccaaaaccfffflllrrrrrrkkmmmmmmmccccaccccc
|
||||||
|
abaaaacccccccccccccccaaccccccccaaaaaacccccaaaacccccccccccccaaccaaaaaaaccccccccccccffflllrrrrrkkkmmmmmccccccaccccc
|
||||||
|
abaaacccccccccccccccccccccccccaaaaaaaaccccaaaacccccccccccccaaccaaaaaaacccccccccccccfffllkrrrkkkkmddddcccccaaacccc
|
||||||
|
abaaacccccccccccccccccccccccccaaaaaaaacccccccccccccccccccccccccccaaaaaaccccccccccccfffllkkkkkkkdddddddcaaaaaacccc
|
||||||
|
abaaaacccccccccccccccccccccccccccaaccccccccccccccccccccccccccccccaacaaacccccccccccccfeekkkkkkkddddddcccaaaccccccc
|
||||||
|
abcaaacccccccccccaaaccccccccaacccaaccccaaaaaccccaaaccccccccccccccaaccccccccccccccccceeeeekkkkdddddccccccaaccccccc
|
||||||
|
abccccccccccccccaaaaaaccccccaaacaaccacaaaaaaaccaaaaccccccccccaccaaccccccccccccccccccceeeeeeeedddacccccccccccccccc
|
||||||
|
abccccccccccccccaaaaaacccccccaaaaacaaaaaccaaaaaaaacccccccccccaaaaacccccccccccccccccccceeeeeeedaaacccccccccccccaaa
|
||||||
|
abccccccaaacccccaaaaacccccccaaaaaacaaaaaaaaaaaaaaaccccccccccccaaaaaccccccccccccccccccccceeeeecaaacccccccccccccaaa
|
||||||
|
abccccccaaaccccccaaaaacccccaaaaaaaaccaaaaacaaaaaaccccccccccccaaaaaacccccccccccccccccccccaaaccccaccccccccccccccaaa
|
||||||
|
abccccaacaaaaacccaaaaacccccaaaaaaaacaaaaaaaaaaaaaaaccccaaaaccaaaacccccccccccccccccccccccaccccccccccccccccccaaaaaa
|
||||||
|
abccccaaaaaaaaccccccccccccccccaaccccaacaaaaaaaaaaaaaaccaaaaccccaaacccccccccccccccccccccccccccccccccccccccccaaaaaa
|
85
src/main.rs
85
src/main.rs
|
@ -274,9 +274,94 @@ solutions! {
|
||||||
let monkeys = input.split("\n\n").map(|s| Monkey::from_str(s, true)).collect();
|
let monkeys = input.split("\n\n").map(|s| Monkey::from_str(s, true)).collect();
|
||||||
run_rounds(monkeys, 10000).into()
|
run_rounds(monkeys, 10000).into()
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
// day 12 part 1
|
||||||
|
|input| {
|
||||||
|
let map = Map::from_string(input);
|
||||||
|
map.navigate().into()
|
||||||
|
},
|
||||||
|
// day 12 part 1
|
||||||
|
|input| {
|
||||||
|
todo!()
|
||||||
|
},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
struct Map {
|
||||||
|
map: Vec<Vec<isize>>,
|
||||||
|
start: (usize, usize),
|
||||||
|
end: (usize, usize),
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Map {
|
||||||
|
fn navigate(self) -> u64 {
|
||||||
|
// this is fuckin buggy
|
||||||
|
let (mut x, mut y) = self.start;
|
||||||
|
let mut last = (x, y);
|
||||||
|
let mut prior = (x, y);
|
||||||
|
let mut steps = 0;
|
||||||
|
while (x, y) != self.end {
|
||||||
|
let level = self.map[x][y];
|
||||||
|
print!("moving from ({x},{y}) to ");
|
||||||
|
prior = last;
|
||||||
|
last = (x, y);
|
||||||
|
(x, y, _) = self
|
||||||
|
.neighbors(x, y)
|
||||||
|
.filter(|(_, _, neighbor)| (level..=level + 1).contains(neighbor))
|
||||||
|
.filter(|(nx, ny, _)| (*nx, *ny) != prior)
|
||||||
|
.max_by_key(|(_, _, neighbor)| *neighbor)
|
||||||
|
.unwrap();
|
||||||
|
println!("({x},{y})");
|
||||||
|
steps += 1;
|
||||||
|
}
|
||||||
|
steps
|
||||||
|
}
|
||||||
|
|
||||||
|
fn neighbors(&self, x: usize, y: usize) -> impl Iterator<Item = (usize, usize, isize)> {
|
||||||
|
let mut ns = vec![];
|
||||||
|
if x > 0 {
|
||||||
|
ns.push((x - 1, y, self.map[x - 1][y]))
|
||||||
|
}
|
||||||
|
if x < self.map.len() - 1 {
|
||||||
|
ns.push((x + 1, y, self.map[x + 1][y]))
|
||||||
|
}
|
||||||
|
if y > 0 {
|
||||||
|
ns.push((x, y - 1, self.map[x][y - 1]))
|
||||||
|
}
|
||||||
|
if y < self.map[0].len() - 1 {
|
||||||
|
ns.push((x, y + 1, self.map[x][y + 1]))
|
||||||
|
}
|
||||||
|
ns.into_iter()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn from_string(input: String) -> Self {
|
||||||
|
let mut map = vec![];
|
||||||
|
let mut start = (0, 0);
|
||||||
|
let mut end = (0, 0);
|
||||||
|
for (row, line) in input.trim().lines().enumerate() {
|
||||||
|
let new_row = line
|
||||||
|
.chars()
|
||||||
|
.enumerate()
|
||||||
|
.map(|(col, c)| match c {
|
||||||
|
'S' => {
|
||||||
|
start = (row, col);
|
||||||
|
0
|
||||||
|
}
|
||||||
|
'E' => {
|
||||||
|
end = (row, col);
|
||||||
|
25
|
||||||
|
}
|
||||||
|
_ => c as isize - 'a' as isize,
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
map.push(new_row);
|
||||||
|
}
|
||||||
|
Map { map, start, end }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn run_rounds(mut monkeys: Vec<Monkey>, n: usize) -> u64 {
|
fn run_rounds(mut monkeys: Vec<Monkey>, n: usize) -> u64 {
|
||||||
let mod_factor: usize = monkeys.iter().map(|m| m.test).product();
|
let mod_factor: usize = monkeys.iter().map(|m| m.test).product();
|
||||||
let mut counts = vec![0; monkeys.len()];
|
let mut counts = vec![0; monkeys.len()];
|
||||||
|
|
Loading…
Reference in New Issue