day 7 part 1 done, day6 seems to have an error
parent
c9c3c17302
commit
940ccdedbb
@ -0,0 +1,4 @@
|
||||
[[package]]
|
||||
name = "day6"
|
||||
version = "0.1.0"
|
||||
|
@ -0,0 +1,6 @@
|
||||
[package]
|
||||
name = "day6"
|
||||
version = "0.1.0"
|
||||
authors = ["attila <daf276@gmx.de>"]
|
||||
|
||||
[dependencies]
|
@ -0,0 +1,50 @@
|
||||
135, 127
|
||||
251, 77
|
||||
136, 244
|
||||
123, 169
|
||||
253, 257
|
||||
359, 309
|
||||
100, 247
|
||||
191, 323
|
||||
129, 323
|
||||
76, 284
|
||||
69, 56
|
||||
229, 266
|
||||
74, 216
|
||||
236, 130
|
||||
152, 126
|
||||
174, 319
|
||||
315, 105
|
||||
329, 146
|
||||
288, 51
|
||||
184, 344
|
||||
173, 69
|
||||
293, 80
|
||||
230, 270
|
||||
279, 84
|
||||
107, 163
|
||||
130, 176
|
||||
347, 114
|
||||
133, 331
|
||||
237, 300
|
||||
291, 283
|
||||
246, 297
|
||||
60, 359
|
||||
312, 278
|
||||
242, 76
|
||||
81, 356
|
||||
204, 291
|
||||
187, 335
|
||||
176, 98
|
||||
103, 274
|
||||
357, 144
|
||||
314, 118
|
||||
67, 196
|
||||
156, 265
|
||||
254, 357
|
||||
218, 271
|
||||
118, 94
|
||||
300, 189
|
||||
290, 356
|
||||
354, 91
|
||||
209, 334
|
@ -0,0 +1,66 @@
|
||||
use std::fs;
|
||||
use std::collections::HashSet;
|
||||
use std::collections::HashMap;
|
||||
|
||||
fn main() {
|
||||
let file = fs::read_to_string("input").expect("Unable to read file");
|
||||
let lines = file.split("\n").collect::<Vec<&str>>();
|
||||
|
||||
let mut anchorpoints = HashSet::new();
|
||||
let mut points_nearest_to_anchor = HashMap::new();
|
||||
|
||||
let mut min_x = std::i32::MAX;
|
||||
let mut min_y = std::i32::MAX;
|
||||
let mut max_x = 0;
|
||||
let mut max_y = 0;
|
||||
|
||||
for line in lines {
|
||||
let coords = line.split(|c| c == ',' || c == ' ').collect::<Vec<&str>>();
|
||||
let x = coords[0].parse::<i32>().unwrap();
|
||||
let y = coords[2].parse::<i32>().unwrap();
|
||||
|
||||
anchorpoints.insert((x,y));
|
||||
|
||||
if x < min_x { min_x = x.clone(); }
|
||||
if y < min_y { min_y = y.clone(); }
|
||||
if x > max_x { max_x = x.clone(); }
|
||||
if y > max_y { max_y = y.clone(); }
|
||||
}
|
||||
|
||||
for i in min_x..(max_x+1) {
|
||||
for j in min_y..(max_y+1) {
|
||||
let mut winning_x = 0;
|
||||
let mut winning_y = 0;
|
||||
let mut min_dist = std::i32::MAX;
|
||||
let mut second_min_dist = std::i32::MAX;
|
||||
|
||||
for (x,y) in &anchorpoints{
|
||||
let dist = (x - i + y - j).abs();
|
||||
|
||||
if dist < min_dist{
|
||||
min_dist = dist;
|
||||
winning_x = x.clone();
|
||||
winning_y = y.clone();
|
||||
} else if dist < second_min_dist {
|
||||
second_min_dist = dist;
|
||||
}
|
||||
}
|
||||
|
||||
if min_dist != second_min_dist {
|
||||
*points_nearest_to_anchor.entry((winning_x,winning_y)).or_insert(1) += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let mut largest_area = 0;
|
||||
|
||||
for area in points_nearest_to_anchor.values() {
|
||||
if *area > largest_area {
|
||||
largest_area = *area;
|
||||
}
|
||||
|
||||
println!("{}", *area);
|
||||
}
|
||||
|
||||
println!("{}", largest_area);
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
[[package]]
|
||||
name = "day7"
|
||||
version = "0.1.0"
|
||||
|
@ -0,0 +1,6 @@
|
||||
[package]
|
||||
name = "day7"
|
||||
version = "0.1.0"
|
||||
authors = ["attila <daf276@gmx.de>"]
|
||||
|
||||
[dependencies]
|
@ -0,0 +1,101 @@
|
||||
Step A must be finished before step R can begin.
|
||||
Step J must be finished before step B can begin.
|
||||
Step D must be finished before step B can begin.
|
||||
Step X must be finished before step Z can begin.
|
||||
Step H must be finished before step M can begin.
|
||||
Step B must be finished before step F can begin.
|
||||
Step Q must be finished before step I can begin.
|
||||
Step U must be finished before step O can begin.
|
||||
Step T must be finished before step W can begin.
|
||||
Step V must be finished before step S can begin.
|
||||
Step N must be finished before step P can begin.
|
||||
Step P must be finished before step O can begin.
|
||||
Step E must be finished before step C can begin.
|
||||
Step F must be finished before step O can begin.
|
||||
Step G must be finished before step I can begin.
|
||||
Step Y must be finished before step Z can begin.
|
||||
Step M must be finished before step K can begin.
|
||||
Step C must be finished before step W can begin.
|
||||
Step L must be finished before step W can begin.
|
||||
Step W must be finished before step S can begin.
|
||||
Step Z must be finished before step O can begin.
|
||||
Step K must be finished before step S can begin.
|
||||
Step S must be finished before step R can begin.
|
||||
Step R must be finished before step I can begin.
|
||||
Step O must be finished before step I can begin.
|
||||
Step A must be finished before step Q can begin.
|
||||
Step Z must be finished before step R can begin.
|
||||
Step T must be finished before step R can begin.
|
||||
Step M must be finished before step O can begin.
|
||||
Step Q must be finished before step Z can begin.
|
||||
Step V must be finished before step C can begin.
|
||||
Step Y must be finished before step W can begin.
|
||||
Step N must be finished before step F can begin.
|
||||
Step J must be finished before step D can begin.
|
||||
Step D must be finished before step N can begin.
|
||||
Step B must be finished before step M can begin.
|
||||
Step P must be finished before step I can begin.
|
||||
Step W must be finished before step Z can begin.
|
||||
Step Q must be finished before step V can begin.
|
||||
Step V must be finished before step K can begin.
|
||||
Step B must be finished before step Z can begin.
|
||||
Step M must be finished before step I can begin.
|
||||
Step G must be finished before step C can begin.
|
||||
Step K must be finished before step O can begin.
|
||||
Step E must be finished before step O can begin.
|
||||
Step C must be finished before step I can begin.
|
||||
Step X must be finished before step G can begin.
|
||||
Step B must be finished before step T can begin.
|
||||
Step B must be finished before step I can begin.
|
||||
Step E must be finished before step F can begin.
|
||||
Step N must be finished before step K can begin.
|
||||
Step D must be finished before step W can begin.
|
||||
Step R must be finished before step O can begin.
|
||||
Step V must be finished before step I can begin.
|
||||
Step T must be finished before step O can begin.
|
||||
Step B must be finished before step Q can begin.
|
||||
Step T must be finished before step L can begin.
|
||||
Step M must be finished before step C can begin.
|
||||
Step A must be finished before step M can begin.
|
||||
Step F must be finished before step L can begin.
|
||||
Step X must be finished before step T can begin.
|
||||
Step G must be finished before step K can begin.
|
||||
Step C must be finished before step L can begin.
|
||||
Step D must be finished before step Z can begin.
|
||||
Step H must be finished before step L can begin.
|
||||
Step P must be finished before step Z can begin.
|
||||
Step A must be finished before step V can begin.
|
||||
Step G must be finished before step R can begin.
|
||||
Step E must be finished before step G can begin.
|
||||
Step D must be finished before step P can begin.
|
||||
Step X must be finished before step L can begin.
|
||||
Step U must be finished before step C can begin.
|
||||
Step Z must be finished before step K can begin.
|
||||
Step E must be finished before step W can begin.
|
||||
Step B must be finished before step Y can begin.
|
||||
Step J must be finished before step I can begin.
|
||||
Step U must be finished before step P can begin.
|
||||
Step Y must be finished before step L can begin.
|
||||
Step N must be finished before step L can begin.
|
||||
Step L must be finished before step S can begin.
|
||||
Step H must be finished before step P can begin.
|
||||
Step P must be finished before step S can begin.
|
||||
Step J must be finished before step S can begin.
|
||||
Step J must be finished before step U can begin.
|
||||
Step H must be finished before step T can begin.
|
||||
Step L must be finished before step I can begin.
|
||||
Step N must be finished before step Z can begin.
|
||||
Step A must be finished before step G can begin.
|
||||
Step H must be finished before step S can begin.
|
||||
Step S must be finished before step I can begin.
|
||||
Step H must be finished before step E can begin.
|
||||
Step W must be finished before step R can begin.
|
||||
Step B must be finished before step G can begin.
|
||||
Step U must be finished before step Y can begin.
|
||||
Step J must be finished before step G can begin.
|
||||
Step M must be finished before step L can begin.
|
||||
Step G must be finished before step Z can begin.
|
||||
Step N must be finished before step W can begin.
|
||||
Step D must be finished before step E can begin.
|
||||
Step A must be finished before step W can begin.
|
||||
Step G must be finished before step Y can begin.
|
@ -0,0 +1,35 @@
|
||||
use std::fs;
|
||||
use std::collections::HashSet;
|
||||
use std::collections::HashMap;
|
||||
use std::collections::BTreeSet;
|
||||
|
||||
fn main() {
|
||||
let file = fs::read_to_string("input").expect("Unable to read file");
|
||||
let lines = file.split("\n").collect::<Vec<&str>>();
|
||||
|
||||
let mut prerequisites = HashMap::<char, Vec<char>>::new();
|
||||
let mut queue = Vec::new();
|
||||
|
||||
for line in lines{
|
||||
let words: Vec<char> = line.chars().collect();
|
||||
|
||||
prerequisites.entry(words[36] as char).or_default().push(words[5]);
|
||||
prerequisites.entry(words[5]).or_default();
|
||||
}
|
||||
|
||||
let mut todo = prerequisites.keys().cloned().collect::<BTreeSet<_>>();
|
||||
let mut prereq_done = HashSet::new();
|
||||
|
||||
while !todo.is_empty() {
|
||||
for c in todo.clone().into_iter() {
|
||||
if prerequisites.get(&c).is_none() || prerequisites.get(&c).unwrap().into_iter().all(|prerequisit| prereq_done.contains(prerequisit)){
|
||||
queue.push(c);
|
||||
prereq_done.insert(c);
|
||||
todo.remove(&c);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
println!("{}", queue.into_iter().collect::<String>());
|
||||
}
|
Loading…
Reference in new issue