optimize day 18

This commit is contained in:
kageru 2021-12-18 22:50:28 +01:00
parent 74372c1e33
commit 29e0ca1ac9
Signed by: kageru
GPG Key ID: 8282A2BEA4ADA3D2

View File

@ -1,7 +1,7 @@
#![feature(test)] #![feature(test)]
extern crate test; extern crate test;
use aoc2021::common::*; use aoc2021::common::*;
use itertools::iproduct; use itertools::Itertools;
use std::{fmt, ops::Add}; use std::{fmt, ops::Add};
const DAY: usize = 18; const DAY: usize = 18;
@ -137,12 +137,7 @@ fn add_and_reduce(parsed: Parsed) -> Option<Node> {
} }
fn part2(parsed: &Parsed) -> usize { fn part2(parsed: &Parsed) -> usize {
iproduct!(parsed, parsed) parsed.iter().permutations(2).map(|n| (n[0].clone() + n[1].clone()).reduce().magnitude()).max().unwrap()
.filter(|(a, b)| a != b)
.flat_map(|(a, b)| [a.clone() + b.clone(), b.clone() + a.clone()])
.map(|n| n.reduce().magnitude())
.max()
.unwrap()
} }
fn main() { fn main() {