Partial / not complete impl
This commit is contained in:
parent
f22ef7f7ba
commit
6acbdc53f1
1 changed files with 26 additions and 11 deletions
|
@ -1,6 +1,5 @@
|
|||
use std::collections::BTreeSet;
|
||||
use std::fs::File;
|
||||
use std::io::{self, BufRead, BufReader};
|
||||
use std::io;
|
||||
use std::iter::{repeat, successors};
|
||||
|
||||
fn next(c: (i32, i32), direction: &str) -> (i32, i32) {
|
||||
|
@ -14,8 +13,6 @@ fn next(c: (i32, i32), direction: &str) -> (i32, i32) {
|
|||
}
|
||||
|
||||
fn direction_length(entry: String) -> (String, usize) {
|
||||
/// Creates a (direction, length) pair to later produce a string
|
||||
/// on a direction with the given length. E.g. given "R10" the output of
|
||||
(
|
||||
entry.chars().nth(0).unwrap().to_string(),
|
||||
entry[1..].parse().unwrap(),
|
||||
|
@ -46,19 +43,25 @@ fn distance(position: (i32, i32)) -> i32 {
|
|||
position.0.abs() + position.1.abs()
|
||||
}
|
||||
|
||||
pub fn main() -> io::Result<()> {
|
||||
let f = BufReader::new(File::open("day3-input.txt")?);
|
||||
let entries: Vec<BTreeSet<(i32, i32)>> = f
|
||||
.lines()
|
||||
.map(|line| line.unwrap().split(",").map(String::from).collect())
|
||||
fn closest(input: String) -> Option<i32> {
|
||||
let entries: Vec<BTreeSet<(i32, i32)>> = input
|
||||
.trim()
|
||||
.split("\n")
|
||||
.map(|line| line.split(",").map(String::from).collect())
|
||||
.map(to_coordinates)
|
||||
.collect();
|
||||
|
||||
let closest: Option<i32> = entries[0]
|
||||
entries[0]
|
||||
.intersection(&entries[1])
|
||||
.cloned()
|
||||
.map(distance)
|
||||
.min();
|
||||
.min()
|
||||
}
|
||||
|
||||
fn first(input: String) -> Option<i32> {}
|
||||
|
||||
pub fn main() -> io::Result<()> {
|
||||
let closest = closest(std::include_str!("../day3-input.txt").to_owned());
|
||||
println!("{:?}", closest);
|
||||
|
||||
Ok(())
|
||||
|
@ -80,3 +83,15 @@ fn test_coordinates_for_entry() {
|
|||
let input = "R2,U2".to_owned().split(",").map(String::from).collect();
|
||||
assert_eq!(to_coordinates(input), expected);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_part_one() {
|
||||
let input = "R75,D30,R83,U83,L12,D49,R71,U7,L72\n\
|
||||
U62,R66,U55,R34,D71,R55,D58,R83"
|
||||
.to_owned();
|
||||
assert_eq!(closest(input), Some(159));
|
||||
let input = "R98,U47,R26,D63,R33,U87,L62,D20,R33,U53,R51\n\
|
||||
U98,R91,D20,R16,D67,R40,U7,R15,U6,R7"
|
||||
.to_owned();
|
||||
assert_eq!(closest(input), Some(135));
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue