Compare commits

...

2 Commits

Author SHA1 Message Date
Johannes
6d4bdccc6e day10 part 2 2018-12-11 09:35:19 +01:00
Johannes
4eb90ac047 day10 part 1 2018-12-10 20:51:13 +01:00
4 changed files with 457 additions and 2 deletions

357
input/day10.txt Normal file
View File

@@ -0,0 +1,357 @@
position=< 50769, -40375> velocity=<-5, 4>
position=< 40697, 10253> velocity=<-4, -1>
position=<-40315, -50495> velocity=< 4, 5>
position=<-40296, -20123> velocity=< 4, 2>
position=< 50760, -50499> velocity=<-5, 5>
position=< 30569, -40366> velocity=<-3, 4>
position=< 10313, 30502> velocity=<-1, -3>
position=<-50447, -10003> velocity=< 5, 1>
position=<-20073, 20369> velocity=< 2, -2>
position=<-40340, 30499> velocity=< 4, -3>
position=< 40673, 10253> velocity=<-4, -1>
position=<-50455, -50492> velocity=< 5, 5>
position=<-50472, -10001> velocity=< 5, 1>
position=< 10280, 30501> velocity=<-1, -3>
position=< -9975, -9994> velocity=< 1, 1>
position=< 10267, -30247> velocity=<-1, 3>
position=<-30171, 20374> velocity=< 3, -2>
position=< 40692, 30497> velocity=<-4, -3>
position=< 50776, -40374> velocity=<-5, 4>
position=< 10269, 20378> velocity=<-1, -2>
position=< -9950, 50741> velocity=< 1, -5>
position=< 30531, -40366> velocity=<-3, 4>
position=< 30571, -50490> velocity=<-3, 5>
position=< 40647, -40375> velocity=<-4, 4>
position=< 30539, -30247> velocity=<-3, 3>
position=< 30568, -30246> velocity=<-3, 3>
position=<-20092, 20374> velocity=< 2, -2>
position=< -9976, -9999> velocity=< 1, 1>
position=< 10320, 20377> velocity=<-1, -2>
position=< 30547, 10254> velocity=<-3, -1>
position=< 40676, 40623> velocity=<-4, -4>
position=< 50769, 40621> velocity=<-5, -4>
position=<-30188, -40371> velocity=< 3, 4>
position=< 30565, -20125> velocity=<-3, 2>
position=<-40329, -20123> velocity=< 4, 2>
position=<-20079, 30501> velocity=< 2, -3>
position=< 50788, 30495> velocity=<-5, -3>
position=<-20075, 10254> velocity=< 2, -1>
position=< 20408, 20378> velocity=<-2, -2>
position=<-20052, 30496> velocity=< 2, -3>
position=<-40344, 40617> velocity=< 4, -4>
position=< 10280, 50744> velocity=<-1, -5>
position=< 40640, -9996> velocity=<-4, 1>
position=< -9974, 50750> velocity=< 1, -5>
position=<-20095, -30242> velocity=< 2, 3>
position=< 20438, 30493> velocity=<-2, -3>
position=< 50796, 10249> velocity=<-5, -1>
position=< -9928, 40620> velocity=< 1, -4>
position=< -9956, 10251> velocity=< 1, -1>
position=< -9968, 30499> velocity=< 1, -3>
position=< 50765, 50749> velocity=<-5, -5>
position=< -9947, -40369> velocity=< 1, 4>
position=< 40676, 20378> velocity=<-4, -2>
position=<-30211, -20126> velocity=< 3, 2>
position=<-50456, -9994> velocity=< 5, 1>
position=<-20092, -30249> velocity=< 2, 3>
position=< 10304, -30247> velocity=<-1, 3>
position=< 50776, 50748> velocity=<-5, -5>
position=<-40295, 10252> velocity=< 4, -1>
position=< -9952, -20119> velocity=< 1, 2>
position=< 50797, 40623> velocity=<-5, -4>
position=<-40300, 20377> velocity=< 4, -2>
position=< 10296, 30493> velocity=<-1, -3>
position=< 50821, 30495> velocity=<-5, -3>
position=<-40355, 30499> velocity=< 4, -3>
position=<-20100, -9999> velocity=< 2, 1>
position=< 50770, 50750> velocity=<-5, -5>
position=<-40311, 50744> velocity=< 4, -5>
position=<-30204, 10248> velocity=< 3, -1>
position=<-50421, -50499> velocity=< 5, 5>
position=< 30552, -10003> velocity=<-3, 1>
position=< 30533, -40367> velocity=<-3, 4>
position=< 30549, 40618> velocity=<-3, -4>
position=< 50802, 50741> velocity=<-5, -5>
position=< 50784, 30494> velocity=<-5, -3>
position=< 40696, -20123> velocity=<-4, 2>
position=<-30205, 30497> velocity=< 3, -3>
position=< 10324, 40621> velocity=<-1, -4>
position=< -9940, 40621> velocity=< 1, -4>
position=<-30179, -50499> velocity=< 3, 5>
position=< 20421, -40371> velocity=<-2, 4>
position=< 50760, 20378> velocity=<-5, -2>
position=< 30538, 50746> velocity=<-3, -5>
position=< -9959, -20120> velocity=< 1, 2>
position=< -9944, -50497> velocity=< 1, 5>
position=< 20420, 40622> velocity=<-2, -4>
position=<-40305, -30242> velocity=< 4, 3>
position=< 20390, 30497> velocity=<-2, -3>
position=<-50428, -40372> velocity=< 5, 4>
position=<-50467, -9994> velocity=< 5, 1>
position=<-20071, -50494> velocity=< 2, 5>
position=< -9965, -9994> velocity=< 1, 1>
position=< 40692, -40374> velocity=<-4, 4>
position=< -9952, -20124> velocity=< 1, 2>
position=< 20396, -10000> velocity=<-2, 1>
position=< 20404, 10250> velocity=<-2, -1>
position=< 10301, -50492> velocity=<-1, 5>
position=< -9968, -9995> velocity=< 1, 1>
position=< 20436, 30501> velocity=<-2, -3>
position=<-20084, 40618> velocity=< 2, -4>
position=< 20428, -20125> velocity=<-2, 2>
position=< -9958, 50745> velocity=< 1, -5>
position=< 40660, 40618> velocity=<-4, -4>
position=< 30522, -40375> velocity=<-3, 4>
position=<-40319, -40372> velocity=< 4, 4>
position=< 40697, 40624> velocity=<-4, -4>
position=<-40295, -30248> velocity=< 4, 3>
position=<-40344, -30247> velocity=< 4, 3>
position=< 30536, 10254> velocity=<-3, -1>
position=< -9952, 10249> velocity=< 1, -1>
position=< -9923, 50747> velocity=< 1, -5>
position=< 40641, 10253> velocity=<-4, -1>
position=<-50452, -50492> velocity=< 5, 5>
position=<-40316, 20373> velocity=< 4, -2>
position=< 10296, -50493> velocity=<-1, 5>
position=< 10313, 40623> velocity=<-1, -4>
position=< 50785, 50747> velocity=<-5, -5>
position=< 20406, -20118> velocity=<-2, 2>
position=<-40313, -20123> velocity=< 4, 2>
position=< 50771, -20123> velocity=<-5, 2>
position=<-20097, -10003> velocity=< 2, 1>
position=< 50792, 30500> velocity=<-5, -3>
position=< -9949, -9999> velocity=< 1, 1>
position=< -9976, 40619> velocity=< 1, -4>
position=<-30195, 50749> velocity=< 3, -5>
position=<-50464, -30246> velocity=< 5, 3>
position=< 30544, -30243> velocity=<-3, 3>
position=< 50792, -40366> velocity=<-5, 4>
position=<-20083, -10000> velocity=< 2, 1>
position=< 50810, 50746> velocity=<-5, -5>
position=<-30180, -20118> velocity=< 3, 2>
position=< 20424, -50495> velocity=<-2, 5>
position=< 20422, 50741> velocity=<-2, -5>
position=<-40304, 40617> velocity=< 4, -4>
position=<-30192, -40372> velocity=< 3, 4>
position=< -9947, 10246> velocity=< 1, -1>
position=<-50464, -9999> velocity=< 5, 1>
position=<-40328, 10248> velocity=< 4, -1>
position=< 50795, -9994> velocity=<-5, 1>
position=<-20107, 40624> velocity=< 2, -4>
position=<-50451, -40375> velocity=< 5, 4>
position=<-40322, -20118> velocity=< 4, 2>
position=< 40653, 10245> velocity=<-4, -1>
position=< 20412, 30502> velocity=<-2, -3>
position=< -9936, -30251> velocity=< 1, 3>
position=< 40665, 20370> velocity=<-4, -2>
position=< 10268, -40369> velocity=<-1, 4>
position=< -9973, -30251> velocity=< 1, 3>
position=< 50813, -40366> velocity=<-5, 4>
position=< 50763, -40370> velocity=<-5, 4>
position=< 10298, -40366> velocity=<-1, 4>
position=<-20087, -20119> velocity=< 2, 2>
position=< 10317, -30249> velocity=<-1, 3>
position=< 30520, -30242> velocity=<-3, 3>
position=<-20057, -20123> velocity=< 2, 2>
position=< 10323, 20369> velocity=<-1, -2>
position=<-50430, 50750> velocity=< 5, -5>
position=< 10324, 40617> velocity=<-1, -4>
position=<-50451, -40374> velocity=< 5, 4>
position=<-20049, -30247> velocity=< 2, 3>
position=<-40295, 10250> velocity=< 4, -1>
position=<-40348, -50499> velocity=< 4, 5>
position=< 50818, -30242> velocity=<-5, 3>
position=< 50795, -10003> velocity=<-5, 1>
position=< -9955, 50742> velocity=< 1, -5>
position=< 10300, 50750> velocity=<-1, -5>
position=<-40324, 40623> velocity=< 4, -4>
position=<-40297, -50495> velocity=< 4, 5>
position=< 50816, 10251> velocity=<-5, -1>
position=<-30207, -20125> velocity=< 3, 2>
position=<-50472, 50741> velocity=< 5, -5>
position=<-30213, 10254> velocity=< 3, -1>
position=<-50460, -50499> velocity=< 5, 5>
position=<-20103, 20369> velocity=< 2, -2>
position=< -9966, 10254> velocity=< 1, -1>
position=< 50808, -50492> velocity=<-5, 5>
position=<-30219, -20127> velocity=< 3, 2>
position=<-40307, -20121> velocity=< 4, 2>
position=< -9951, 40626> velocity=< 1, -4>
position=< 40637, 40619> velocity=<-4, -4>
position=< 30537, 40620> velocity=<-3, -4>
position=<-50432, 50749> velocity=< 5, -5>
position=< 30561, -50490> velocity=<-3, 5>
position=< 50818, 10245> velocity=<-5, -1>
position=< 10317, -40373> velocity=<-1, 4>
position=<-30223, 10245> velocity=< 3, -1>
position=< 30541, -30242> velocity=<-3, 3>
position=< -9935, -30242> velocity=< 1, 3>
position=< -9952, -40373> velocity=< 1, 4>
position=<-30172, 20369> velocity=< 3, -2>
position=<-40300, 50748> velocity=< 4, -5>
position=<-50468, -50495> velocity=< 5, 5>
position=<-50445, 10254> velocity=< 5, -1>
position=<-40348, -20122> velocity=< 4, 2>
position=< 10309, 20371> velocity=<-1, -2>
position=< 50793, -30242> velocity=<-5, 3>
position=< -9983, 30499> velocity=< 1, -3>
position=< 30544, -50492> velocity=<-3, 5>
position=< 20404, 20376> velocity=<-2, -2>
position=< -9976, 30500> velocity=< 1, -3>
position=< 40676, 10254> velocity=<-4, -1>
position=< 40693, -9999> velocity=<-4, 1>
position=<-50420, 40626> velocity=< 5, -4>
position=<-50444, 20373> velocity=< 5, -2>
position=< -9935, -10003> velocity=< 1, 1>
position=<-20065, 50741> velocity=< 2, -5>
position=<-40356, 30502> velocity=< 4, -3>
position=<-20105, 20373> velocity=< 2, -2>
position=< 20440, 10248> velocity=<-2, -1>
position=<-20104, -40369> velocity=< 2, 4>
position=<-30200, 40620> velocity=< 3, -4>
position=< 40660, 20369> velocity=<-4, -2>
position=< 50800, 30500> velocity=<-5, -3>
position=<-50468, -50490> velocity=< 5, 5>
position=< 40676, -9998> velocity=<-4, 1>
position=<-30176, -50493> velocity=< 3, 5>
position=< 40692, 40626> velocity=<-4, -4>
position=<-30228, 50743> velocity=< 3, -5>
position=< 30560, -9996> velocity=<-3, 1>
position=< 30546, 30497> velocity=<-3, -3>
position=<-30200, 20370> velocity=< 3, -2>
position=< 30544, -9999> velocity=<-3, 1>
position=<-20066, 40621> velocity=< 2, -4>
position=<-50472, 50749> velocity=< 5, -5>
position=<-50440, 50750> velocity=< 5, -5>
position=<-30200, -50490> velocity=< 3, 5>
position=< -9939, -50497> velocity=< 1, 5>
position=< 20425, -20122> velocity=<-2, 2>
position=< -9979, 30494> velocity=< 1, -3>
position=<-30222, 30497> velocity=< 3, -3>
position=< 30521, 20378> velocity=<-3, -2>
position=<-40314, 40617> velocity=< 4, -4>
position=< -9959, -50497> velocity=< 1, 5>
position=< 20398, 40617> velocity=<-2, -4>
position=< 50821, -10001> velocity=<-5, 1>
position=< 50811, -9994> velocity=<-5, 1>
position=<-50469, 10249> velocity=< 5, -1>
position=<-40307, 30499> velocity=< 4, -3>
position=<-20107, -9996> velocity=< 2, 1>
position=< -9968, -50492> velocity=< 1, 5>
position=< 40653, 30493> velocity=<-4, -3>
position=<-40316, -50491> velocity=< 4, 5>
position=< -9926, 20373> velocity=< 1, -2>
position=< -9949, -30247> velocity=< 1, 3>
position=< 40668, -30242> velocity=<-4, 3>
position=<-40295, -40368> velocity=< 4, 4>
position=<-20066, -40371> velocity=< 2, 4>
position=<-20084, -40367> velocity=< 2, 4>
position=<-20068, 10245> velocity=< 2, -1>
position=< 20391, 30498> velocity=<-2, -3>
position=< 10298, -20118> velocity=<-1, 2>
position=<-50428, -40372> velocity=< 5, 4>
position=< 50780, 40626> velocity=<-5, -4>
position=< 40688, -40366> velocity=<-4, 4>
position=< 10304, 30495> velocity=<-1, -3>
position=< -9956, 40620> velocity=< 1, -4>
position=<-40298, 30497> velocity=< 4, -3>
position=<-40300, 20377> velocity=< 4, -2>
position=< 10301, -10001> velocity=<-1, 1>
position=< 10304, 10250> velocity=<-1, -1>
position=<-20052, -40369> velocity=< 2, 4>
position=< 20436, 40617> velocity=<-2, -4>
position=<-30191, 20373> velocity=< 3, -2>
position=< 50810, -30251> velocity=<-5, 3>
position=< 40664, -20125> velocity=<-4, 2>
position=< 20400, -30251> velocity=<-2, 3>
position=<-50443, -9997> velocity=< 5, 1>
position=< 40668, 50743> velocity=<-4, -5>
position=<-50419, -50496> velocity=< 5, 5>
position=< 50785, -40368> velocity=<-5, 4>
position=<-30184, 50750> velocity=< 3, -5>
position=< -9931, -40374> velocity=< 1, 4>
position=<-50461, -10003> velocity=< 5, 1>
position=< 30562, -40366> velocity=<-3, 4>
position=< 30571, 10245> velocity=<-3, -1>
position=< 20389, -30248> velocity=<-2, 3>
position=<-40316, 50747> velocity=< 4, -5>
position=<-20064, 40617> velocity=< 2, -4>
position=< -9979, 40626> velocity=< 1, -4>
position=<-40345, -20118> velocity=< 4, 2>
position=< 10264, -50491> velocity=<-1, 5>
position=< 20420, 50746> velocity=<-2, -5>
position=<-50444, -10003> velocity=< 5, 1>
position=< 30544, -50495> velocity=<-3, 5>
position=< -9939, 10246> velocity=< 1, -1>
position=<-20081, -9998> velocity=< 2, 1>
position=< 20404, -9999> velocity=<-2, 1>
position=< 10267, -30247> velocity=<-1, 3>
position=< 20444, -50497> velocity=<-2, 5>
position=< -9952, 10250> velocity=< 1, -1>
position=< 10317, -50498> velocity=<-1, 5>
position=<-20068, 10253> velocity=< 2, -1>
position=< 30544, -30249> velocity=<-3, 3>
position=< -9976, -10002> velocity=< 1, 1>
position=< -9926, 50750> velocity=< 1, -5>
position=<-20107, -20125> velocity=< 2, 2>
position=< 50772, 20378> velocity=<-5, -2>
position=< -9976, 40620> velocity=< 1, -4>
position=<-40338, -20127> velocity=< 4, 2>
position=<-20099, -9999> velocity=< 2, 1>
position=< 40673, 30501> velocity=<-4, -3>
position=< -9984, -30250> velocity=< 1, 3>
position=< 40640, -20124> velocity=<-4, 2>
position=< 10280, -40373> velocity=<-1, 4>
position=< 20417, -20127> velocity=<-2, 2>
position=<-20052, 10250> velocity=< 2, -1>
position=< 10312, -50499> velocity=<-1, 5>
position=< -9963, -20119> velocity=< 1, 2>
position=< 30573, 40623> velocity=<-3, -4>
position=< 10277, -20118> velocity=<-1, 2>
position=< 50778, -50499> velocity=<-5, 5>
position=< 10301, 10247> velocity=<-1, -1>
position=< 50764, -50492> velocity=<-5, 5>
position=< 30520, 50742> velocity=<-3, -5>
position=<-40312, -9999> velocity=< 4, 1>
position=<-50419, 40620> velocity=< 5, -4>
position=< 10321, -20123> velocity=<-1, 2>
position=<-40295, 10246> velocity=< 4, -1>
position=<-20060, -20119> velocity=< 2, 2>
position=<-50439, -10003> velocity=< 5, 1>
position=<-40351, -30250> velocity=< 4, 3>
position=< -9942, 50745> velocity=< 1, -5>
position=< 10304, -40374> velocity=<-1, 4>
position=<-50440, 10248> velocity=< 5, -1>
position=< 20433, -30249> velocity=<-2, 3>
position=<-40299, -20127> velocity=< 4, 2>
position=< 20432, -20127> velocity=<-2, 2>
position=< 10290, -9998> velocity=<-1, 1>
position=<-30200, 20377> velocity=< 3, -2>
position=< 20400, -40375> velocity=<-2, 4>
position=< 30516, 10251> velocity=<-3, -1>
position=< 30517, 20378> velocity=<-3, -2>
position=< 20438, -9998> velocity=<-2, 1>
position=< 40686, -50490> velocity=<-4, 5>
position=< 40638, -50494> velocity=<-4, 5>
position=<-50448, -9996> velocity=< 5, 1>
position=<-40305, 40617> velocity=< 4, -4>
position=<-40340, 30499> velocity=< 4, -3>
position=<-50456, -50499> velocity=< 5, 5>
position=< -9965, -20127> velocity=< 1, 2>
position=<-30176, 40617> velocity=< 3, -4>
position=< -9947, 30496> velocity=< 1, -3>
position=<-50430, -9998> velocity=< 5, 1>
position=< 30529, 50750> velocity=<-3, -5>
position=< 50812, -20127> velocity=<-5, 2>
position=< 10317, 10254> velocity=<-1, -1>
position=< 40644, 30499> velocity=<-4, -3>
position=<-20067, 40617> velocity=< 2, -4>
position=<-40351, -50491> velocity=< 4, 5>
position=< 50816, -30242> velocity=<-5, 3>
position=< 20445, -20118> velocity=<-2, 2>
position=< 20414, -30246> velocity=<-2, 3>
position=< 20439, -10003> velocity=<-2, 1>
position=<-50472, 50747> velocity=< 5, -5>
position=<-20108, -30242> velocity=< 2, 3>
position=<-30195, 10248> velocity=< 3, -1>
position=<-30175, 10254> velocity=< 3, -1>

View File

@@ -1,4 +1,4 @@
fn main() { fn main() {
// aoc_2018::tasks::day09::task1(); aoc_2018::tasks::day10::task1();
aoc_2018::tasks::day09::task2(); // aoc_2018::tasks::day09::task2();
} }

97
src/tasks/day10.rs Normal file
View File

@@ -0,0 +1,97 @@
use crate::utils;
use regex::Regex;
pub fn task1() {
let input = utils::read_file("input/day10.txt");
// position=<-4, 3> velocity=< 2, 0>
let regex = Regex::new(
r"position=<\s*(?P<x>-?\d+),\s*(?P<y>-?\d+)> velocity=<\s*(?P<vx>-?\d+),\s*(?P<vy>-?\d+)>",
)
.unwrap();
let mut lights: Vec<Light> = input
.lines()
//.inspect(|line| println!("{}", line))
.map(|line| {
let cap = regex.captures(line).unwrap();
Light {
x: cap["x"].parse::<i32>().unwrap(),
y: cap["y"].parse::<i32>().unwrap(),
vx: cap["vx"].parse::<i32>().unwrap(),
vy: cap["vy"].parse::<i32>().unwrap(),
}
})
.collect();
// for light in lights.iter() {
// println!("{:?}", light);
// }
let mut old_area = get_area(&lights);
let mut time = 0;
loop {
time += 1;
let new_lights = lights.iter().map(|light| light.move_copy()).collect();
// print_lights(&new_lights);
let new_area = get_area(&new_lights);
// println!("Area: {} ", new_area);
if new_area > old_area {
break;
} else {
lights = new_lights;
old_area = new_area;
}
}
println!("Found a minimum after {} seconds", time - 1);
print_lights(&lights);
}
fn get_area(lights: &Vec<Light>) -> usize {
let xmin = lights.iter().map(|it| it.x).min().unwrap();
let xmax = lights.iter().map(|it| it.x).max().unwrap();
let ymin = lights.iter().map(|it| it.y).min().unwrap();
let ymax = lights.iter().map(|it| it.y).max().unwrap();
(xmax - xmin) as usize * (ymax - ymin) as usize
}
fn print_lights(lights: &Vec<Light>) {
let xmin = lights.iter().map(|it| it.x).min().unwrap();
let xmax = lights.iter().map(|it| it.x).max().unwrap();
let ymin = lights.iter().map(|it| it.y).min().unwrap();
let ymax = lights.iter().map(|it| it.y).max().unwrap();
let width = xmax - xmin + 1;
let height = ymax - ymin + 1;
let mut screen: Vec<Vec<u8>> = Vec::with_capacity(height as usize);
for _ in 0..=height {
let mut chars = Vec::with_capacity(width as usize);
for _ in 0..=width {
chars.push('.' as u8);
}
screen.push(chars);
}
lights
.iter()
.for_each(|light| screen[(light.y - ymin) as usize][(light.x - xmin) as usize] = '#' as u8);
for line in screen.iter() {
println!("{}", String::from_utf8(line.clone()).unwrap());
}
}
#[derive(Debug)]
struct Light {
x: i32,
y: i32,
vx: i32,
vy: i32,
}
impl Light {
fn move_copy(&self) -> Self {
Light {
x: self.x + self.vx,
y: self.y + self.vy,
vx: self.vx,
vy: self.vy,
}
}
}

View File

@@ -7,3 +7,4 @@ pub mod day06;
pub mod day07; pub mod day07;
pub mod day08; pub mod day08;
pub mod day09; pub mod day09;
pub mod day10;