[rs] Solve 2022_13 part 2
This commit is contained in:
parent
9e22fa5e08
commit
80f228ca8d
3 changed files with 27 additions and 3 deletions
|
|
@ -1,2 +1,2 @@
|
|||
Part 1: 5003
|
||||
Part 2: ???
|
||||
Part 2: 20280
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
use std::cmp::Ordering;
|
||||
use std::fmt;
|
||||
use std::iter::Peekable;
|
||||
use std::str::Chars;
|
||||
use std::{fmt, iter};
|
||||
|
||||
#[derive(Clone)]
|
||||
enum Message {
|
||||
Int(u32),
|
||||
List(Vec<Message>),
|
||||
|
|
@ -97,4 +98,27 @@ pub fn solve(input: String) {
|
|||
.map(|(i, _)| i + 1)
|
||||
.sum::<usize>();
|
||||
println!("Part 1: {part1}");
|
||||
|
||||
let divp1 = vec![Message::List(vec![Message::Int(2)])];
|
||||
let divp2 = vec![Message::List(vec![Message::Int(6)])];
|
||||
let mut packets = pairs
|
||||
.into_iter()
|
||||
.flat_map(|(a, b)| iter::once(a).chain(iter::once(b)))
|
||||
.chain(iter::once(divp1.clone()))
|
||||
.chain(iter::once(divp2.clone()))
|
||||
.collect::<Vec<_>>();
|
||||
packets.sort();
|
||||
let divp1i = packets
|
||||
.iter()
|
||||
.enumerate()
|
||||
.find(|(_, p)| *p == &divp1)
|
||||
.unwrap()
|
||||
.0;
|
||||
let divp2i = packets
|
||||
.iter()
|
||||
.enumerate()
|
||||
.find(|(_, p)| *p == &divp2)
|
||||
.unwrap()
|
||||
.0;
|
||||
println!("Part 2: {}", (divp1i + 1) * (divp2i + 1));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
Part 1: 13
|
||||
Part 2: ???
|
||||
Part 2: 140
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue