init
This commit is contained in:
7
d09/Cargo.lock
generated
Normal file
7
d09/Cargo.lock
generated
Normal file
@ -0,0 +1,7 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "d05"
|
||||
version = "0.1.0"
|
8
d09/Cargo.toml
Normal file
8
d09/Cargo.toml
Normal file
@ -0,0 +1,8 @@
|
||||
[package]
|
||||
name = "d05"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
2000
d09/input.txt
Normal file
2000
d09/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
72
d09/src/a1.rs
Normal file
72
d09/src/a1.rs
Normal file
@ -0,0 +1,72 @@
|
||||
|
||||
fn move_tail(head :&(i32, i32), tail :&mut (i32, i32)) {
|
||||
|
||||
let dx = head.0 - tail.0;
|
||||
let dy = head.1 - tail.1;
|
||||
|
||||
if dx.abs() > 1 || dy.abs() > 1{
|
||||
tail.0 += dx.signum();
|
||||
tail.1 += dy.signum();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fn execute_move(head :&mut (i32, i32), tail :&mut (i32, i32), cmd :&char) {
|
||||
|
||||
match cmd {
|
||||
|
||||
'U' => {
|
||||
head.1 += 1;
|
||||
}
|
||||
|
||||
'D' => {
|
||||
head.1 -= 1;
|
||||
}
|
||||
|
||||
'L' => {
|
||||
head.0 -= 1;
|
||||
}
|
||||
|
||||
'R' => {
|
||||
head.0 += 1;
|
||||
}
|
||||
|
||||
_ => {}
|
||||
}
|
||||
|
||||
move_tail(head, tail);
|
||||
|
||||
}
|
||||
|
||||
fn parse_command(inp :&String) -> (char, i32) {
|
||||
|
||||
let split = inp.split(' ').collect::<Vec<&str>>();
|
||||
return (split[0].chars().nth(0).unwrap(), split[1].parse::<i32>().unwrap());
|
||||
}
|
||||
|
||||
pub fn run(inp :Vec<String>) {
|
||||
|
||||
let mut visited_coordinates :Vec<(i32, i32)> = vec![];
|
||||
let mut head_pos = (0, 0);
|
||||
let mut tail_pos = (0, 0);
|
||||
|
||||
visited_coordinates.push(tail_pos.clone());
|
||||
|
||||
for curr_move in inp {
|
||||
let commands = parse_command(&curr_move);
|
||||
|
||||
for _ in 0..commands.1 {
|
||||
|
||||
execute_move(&mut head_pos, &mut tail_pos, &commands.0);
|
||||
|
||||
if !visited_coordinates.contains(&tail_pos) {
|
||||
visited_coordinates.push(tail_pos.clone());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
println!("a1: {}", visited_coordinates.len());
|
||||
}
|
83
d09/src/a2.rs
Normal file
83
d09/src/a2.rs
Normal file
@ -0,0 +1,83 @@
|
||||
|
||||
#[derive(Copy, Clone, PartialEq)]
|
||||
struct Pos {
|
||||
x :i32,
|
||||
y :i32
|
||||
}
|
||||
|
||||
fn move_tail(head :&Pos, tail :&mut Pos) {
|
||||
|
||||
let dx = head.x - tail.x;
|
||||
let dy = head.y - tail.y;
|
||||
|
||||
if dx.abs() > 1 || dy.abs() > 1{
|
||||
tail.x += dx.signum();
|
||||
tail.y += dy.signum();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fn execute_move(head :&mut Pos, tails :&mut Vec<Pos>, cmd :&char) {
|
||||
|
||||
match cmd {
|
||||
|
||||
'U' => {
|
||||
head.y += 1;
|
||||
}
|
||||
|
||||
'D' => {
|
||||
head.y -= 1;
|
||||
}
|
||||
|
||||
'L' => {
|
||||
head.x -= 1;
|
||||
}
|
||||
|
||||
'R' => {
|
||||
head.x += 1;
|
||||
}
|
||||
|
||||
_ => {}
|
||||
}
|
||||
|
||||
move_tail(head, &mut tails.first_mut().unwrap());
|
||||
|
||||
for i in 1..tails.len() {
|
||||
|
||||
move_tail(&tails[i-1].clone(), &mut tails[i]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fn parse_command(inp :&String) -> (char, i32) {
|
||||
|
||||
let split = inp.split(' ').collect::<Vec<&str>>();
|
||||
return (split[0].chars().nth(0).unwrap(), split[1].parse::<i32>().unwrap());
|
||||
}
|
||||
|
||||
pub fn run(inp :Vec<String>) {
|
||||
|
||||
let mut visited_coordinates :Vec<Pos> = vec![];
|
||||
let mut head_pos = Pos {x: 0, y: 0} ;
|
||||
let mut tails :Vec<Pos> = vec![Pos {x: 0, y: 0}; 9];
|
||||
|
||||
visited_coordinates.push(head_pos.clone());
|
||||
|
||||
for curr_move in inp {
|
||||
let commands = parse_command(&curr_move);
|
||||
|
||||
for _ in 0..commands.1 {
|
||||
|
||||
execute_move(&mut head_pos, &mut tails, &commands.0);
|
||||
|
||||
if !visited_coordinates.contains(&tails.last().unwrap()) {
|
||||
visited_coordinates.push(tails.last().unwrap().clone());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
println!("a2: {}", visited_coordinates.len());
|
||||
}
|
41
d09/src/main.rs
Normal file
41
d09/src/main.rs
Normal file
@ -0,0 +1,41 @@
|
||||
use std::io::BufRead;
|
||||
|
||||
mod a1;
|
||||
mod a2;
|
||||
|
||||
fn read_file(path :&str) -> Vec<String> {
|
||||
|
||||
let file = std::fs::File::open(path);
|
||||
|
||||
return match file {
|
||||
|
||||
Ok(handle) => {
|
||||
|
||||
let reader = std::io::BufReader::new(handle);
|
||||
|
||||
let mut vec : Vec<String> = vec![];
|
||||
|
||||
reader.lines().for_each(|elem| {
|
||||
vec.push(elem.unwrap());
|
||||
});
|
||||
|
||||
vec
|
||||
|
||||
}
|
||||
|
||||
Err(_) => vec![]
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fn main() {
|
||||
|
||||
let inp :Vec<String> = read_file("input.txt");
|
||||
|
||||
a1::run(inp.clone());
|
||||
|
||||
a2::run(inp);
|
||||
|
||||
}
|
1
d09/target/.rustc_info.json
Normal file
1
d09/target/.rustc_info.json
Normal file
@ -0,0 +1 @@
|
||||
{"rustc_fingerprint":15594459422025777716,"outputs":{"4614504638168534921":{"success":true,"status":"","code":0,"stdout":"rustc 1.65.0 (897e37553 2022-11-02)\nbinary: rustc\ncommit-hash: 897e37553bba8b42751c67658967889d11ecd120\ncommit-date: 2022-11-02\nhost: x86_64-pc-windows-msvc\nrelease: 1.65.0\nLLVM version: 15.0.0\n","stderr":""},"15697416045686424142":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\n","stderr":""},"8623966523033996810":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\n","stderr":""},"8204103499295538959":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\nC:\\Users\\tfuec\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"msvc\"\ntarget_family=\"windows\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"windows\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"pc\"\nwindows\n","stderr":""},"10376369925670944939":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\nC:\\Users\\tfuec\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"msvc\"\ntarget_family=\"windows\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"windows\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"pc\"\nwindows\n","stderr":""}},"successes":{}}
|
3
d09/target/CACHEDIR.TAG
Normal file
3
d09/target/CACHEDIR.TAG
Normal file
@ -0,0 +1,3 @@
|
||||
Signature: 8a477f597d28d172789f06886806bc55
|
||||
# This file is a cache directory tag created by cargo.
|
||||
# For information about cache directory tags see https://bford.info/cachedir/
|
0
d09/target/debug/.cargo-lock
Normal file
0
d09/target/debug/.cargo-lock
Normal file
@ -0,0 +1 @@
|
||||
a62220af2acc103e
|
@ -0,0 +1 @@
|
||||
{"rustc":2347157018072859861,"features":"[]","target":16997346216964277088,"profile":7309141686862299243,"path":1684066648322511884,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\d05-54bad1502471c435\\dep-bin-d05"}}],"rustflags":[],"metadata":7797948686568424061,"config":2202906307356721367,"compile_kind":0}
|
BIN
d09/target/debug/.fingerprint/d05-54bad1502471c435/dep-bin-d05
Normal file
BIN
d09/target/debug/.fingerprint/d05-54bad1502471c435/dep-bin-d05
Normal file
Binary file not shown.
@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
@ -0,0 +1 @@
|
||||
e737b342d3e62e08
|
@ -0,0 +1 @@
|
||||
{"rustc":2347157018072859861,"features":"[]","target":16997346216964277088,"profile":9251013656241001069,"path":1684066648322511884,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\d05-60235cbe9d69ff8a\\dep-bin-d05"}}],"rustflags":[],"metadata":7797948686568424061,"config":2202906307356721367,"compile_kind":0}
|
BIN
d09/target/debug/.fingerprint/d05-60235cbe9d69ff8a/dep-bin-d05
Normal file
BIN
d09/target/debug/.fingerprint/d05-60235cbe9d69ff8a/dep-bin-d05
Normal file
Binary file not shown.
@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
Binary file not shown.
@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
@ -0,0 +1 @@
|
||||
f0fa31a79957e157
|
@ -0,0 +1 @@
|
||||
{"rustc":2347157018072859861,"features":"[]","target":16997346216964277088,"profile":1021633075455700787,"path":1684066648322511884,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\d05-cd6375c08847f9de\\dep-test-bin-d05"}}],"rustflags":[],"metadata":7797948686568424061,"config":2202906307356721367,"compile_kind":0}
|
Binary file not shown.
@ -0,0 +1 @@
|
||||
This file has an mtime of when this was started.
|
@ -0,0 +1 @@
|
||||
0d7e854818e28c48
|
@ -0,0 +1 @@
|
||||
{"rustc":2347157018072859861,"features":"[]","target":16997346216964277088,"profile":17729903187224061422,"path":1684066648322511884,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\d05-f895f0c441658393\\dep-test-bin-d05"}}],"rustflags":[],"metadata":7797948686568424061,"config":2202906307356721367,"compile_kind":0}
|
1
d09/target/debug/d05.d
Normal file
1
d09/target/debug/d05.d
Normal file
@ -0,0 +1 @@
|
||||
C:\personal\Programmierdaten\rust\advent_of_code\y2022\d09\target\debug\d05.exe: C:\personal\Programmierdaten\rust\advent_of_code\y2022\d09\src\a1.rs C:\personal\Programmierdaten\rust\advent_of_code\y2022\d09\src\a2.rs C:\personal\Programmierdaten\rust\advent_of_code\y2022\d09\src\main.rs
|
BIN
d09/target/debug/d05.exe
Normal file
BIN
d09/target/debug/d05.exe
Normal file
Binary file not shown.
BIN
d09/target/debug/d05.pdb
Normal file
BIN
d09/target/debug/d05.pdb
Normal file
Binary file not shown.
7
d09/target/debug/deps/d05-54bad1502471c435.d
Normal file
7
d09/target/debug/deps/d05-54bad1502471c435.d
Normal file
@ -0,0 +1,7 @@
|
||||
c:\personal\Programmierdaten\rust\advent_of_code\y2022\d09\target\debug\deps\d05-54bad1502471c435.rmeta: src\main.rs src\a1.rs src\a2.rs
|
||||
|
||||
c:\personal\Programmierdaten\rust\advent_of_code\y2022\d09\target\debug\deps\d05-54bad1502471c435.d: src\main.rs src\a1.rs src\a2.rs
|
||||
|
||||
src\main.rs:
|
||||
src\a1.rs:
|
||||
src\a2.rs:
|
7
d09/target/debug/deps/d05-cd6375c08847f9de.d
Normal file
7
d09/target/debug/deps/d05-cd6375c08847f9de.d
Normal file
@ -0,0 +1,7 @@
|
||||
c:\personal\Programmierdaten\rust\advent_of_code\y2022\d09\target\debug\deps\d05-cd6375c08847f9de.rmeta: src\main.rs src\a1.rs src\a2.rs
|
||||
|
||||
c:\personal\Programmierdaten\rust\advent_of_code\y2022\d09\target\debug\deps\d05-cd6375c08847f9de.d: src\main.rs src\a1.rs src\a2.rs
|
||||
|
||||
src\main.rs:
|
||||
src\a1.rs:
|
||||
src\a2.rs:
|
7
d09/target/debug/deps/d05-f895f0c441658393.d
Normal file
7
d09/target/debug/deps/d05-f895f0c441658393.d
Normal file
@ -0,0 +1,7 @@
|
||||
C:\personal\Programmierdaten\rust\advent_of_code\y2022\d09\target\debug\deps\d05-f895f0c441658393.exe: src\main.rs src\a1.rs src\a2.rs
|
||||
|
||||
C:\personal\Programmierdaten\rust\advent_of_code\y2022\d09\target\debug\deps\d05-f895f0c441658393.d: src\main.rs src\a1.rs src\a2.rs
|
||||
|
||||
src\main.rs:
|
||||
src\a1.rs:
|
||||
src\a2.rs:
|
BIN
d09/target/debug/deps/d05-f895f0c441658393.exe
Normal file
BIN
d09/target/debug/deps/d05-f895f0c441658393.exe
Normal file
Binary file not shown.
BIN
d09/target/debug/deps/d05-f895f0c441658393.pdb
Normal file
BIN
d09/target/debug/deps/d05-f895f0c441658393.pdb
Normal file
Binary file not shown.
7
d09/target/debug/deps/d05.d
Normal file
7
d09/target/debug/deps/d05.d
Normal file
@ -0,0 +1,7 @@
|
||||
C:\personal\Programmierdaten\rust\advent_of_code\y2022\d09\target\debug\deps\d05.exe: src\main.rs src\a1.rs src\a2.rs
|
||||
|
||||
C:\personal\Programmierdaten\rust\advent_of_code\y2022\d09\target\debug\deps\d05.d: src\main.rs src\a1.rs src\a2.rs
|
||||
|
||||
src\main.rs:
|
||||
src\a1.rs:
|
||||
src\a2.rs:
|
BIN
d09/target/debug/deps/d05.exe
Normal file
BIN
d09/target/debug/deps/d05.exe
Normal file
Binary file not shown.
BIN
d09/target/debug/deps/d05.pdb
Normal file
BIN
d09/target/debug/deps/d05.pdb
Normal file
Binary file not shown.
0
d09/target/debug/deps/libd05-54bad1502471c435.rmeta
Normal file
0
d09/target/debug/deps/libd05-54bad1502471c435.rmeta
Normal file
0
d09/target/debug/deps/libd05-cd6375c08847f9de.rmeta
Normal file
0
d09/target/debug/deps/libd05-cd6375c08847f9de.rmeta
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user