Phil 2 rokov pred
rodič
commit
35215d9b4f
3 zmenil súbory, kde vykonal 605 pridanie a 0 odobranie
  1. 8 0
      aoc05/Cargo.toml
  2. 511 0
      aoc05/src/input.txt
  3. 86 0
      aoc05/src/main.rs

+ 8 - 0
aoc05/Cargo.toml

@@ -0,0 +1,8 @@
+[package]
+name = "aoc05"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]

+ 511 - 0
aoc05/src/input.txt

@@ -0,0 +1,511 @@
+[Q] [J]                         [H]
+[G] [S] [Q]     [Z]             [P]
+[P] [F] [M]     [F]     [F]     [S]
+[R] [R] [P] [F] [V]     [D]     [L]
+[L] [W] [W] [D] [W] [S] [V]     [G]
+[C] [H] [H] [T] [D] [L] [M] [B] [B]
+[T] [Q] [B] [S] [L] [C] [B] [J] [N]
+[F] [N] [F] [V] [Q] [Z] [Z] [T] [Q]
+ 1   2   3   4   5   6   7   8   9 
+
+move 1 from 8 to 1
+move 1 from 6 to 1
+move 3 from 7 to 4
+move 3 from 2 to 9
+move 11 from 9 to 3
+move 1 from 6 to 9
+move 15 from 3 to 9
+move 5 from 2 to 3
+move 3 from 7 to 5
+move 6 from 9 to 3
+move 6 from 1 to 6
+move 2 from 3 to 7
+move 5 from 4 to 5
+move 7 from 9 to 4
+move 2 from 9 to 5
+move 10 from 4 to 2
+move 6 from 5 to 4
+move 2 from 7 to 6
+move 10 from 2 to 3
+move 21 from 3 to 5
+move 1 from 3 to 6
+move 3 from 6 to 9
+move 1 from 8 to 9
+move 5 from 4 to 5
+move 4 from 9 to 3
+move 17 from 5 to 1
+move 1 from 6 to 2
+move 16 from 5 to 1
+move 3 from 3 to 6
+move 6 from 6 to 4
+move 1 from 2 to 4
+move 4 from 1 to 2
+move 2 from 6 to 2
+move 28 from 1 to 3
+move 1 from 9 to 7
+move 1 from 8 to 7
+move 1 from 5 to 4
+move 1 from 2 to 6
+move 1 from 3 to 1
+move 3 from 2 to 5
+move 1 from 6 to 3
+move 4 from 4 to 7
+move 5 from 5 to 2
+move 1 from 5 to 6
+move 6 from 1 to 3
+move 1 from 6 to 2
+move 26 from 3 to 6
+move 2 from 7 to 9
+move 4 from 7 to 3
+move 19 from 6 to 3
+move 6 from 2 to 4
+move 5 from 3 to 2
+move 1 from 9 to 7
+move 26 from 3 to 8
+move 6 from 4 to 3
+move 1 from 3 to 8
+move 1 from 6 to 7
+move 6 from 3 to 6
+move 6 from 6 to 4
+move 1 from 9 to 2
+move 2 from 4 to 9
+move 22 from 8 to 2
+move 2 from 6 to 5
+move 1 from 9 to 1
+move 1 from 6 to 5
+move 1 from 7 to 5
+move 3 from 6 to 7
+move 2 from 6 to 1
+move 1 from 1 to 5
+move 3 from 5 to 9
+move 4 from 8 to 4
+move 2 from 1 to 4
+move 18 from 2 to 1
+move 2 from 7 to 8
+move 3 from 9 to 5
+move 8 from 1 to 9
+move 5 from 9 to 3
+move 1 from 9 to 8
+move 2 from 9 to 4
+move 2 from 7 to 8
+move 5 from 5 to 7
+move 1 from 9 to 3
+move 4 from 8 to 4
+move 1 from 7 to 8
+move 4 from 4 to 3
+move 2 from 8 to 3
+move 1 from 8 to 9
+move 2 from 1 to 8
+move 3 from 4 to 5
+move 1 from 8 to 4
+move 1 from 9 to 3
+move 1 from 8 to 5
+move 8 from 1 to 8
+move 11 from 2 to 9
+move 12 from 3 to 5
+move 1 from 3 to 9
+move 1 from 8 to 5
+move 11 from 9 to 3
+move 4 from 5 to 9
+move 3 from 8 to 7
+move 3 from 7 to 8
+move 1 from 5 to 8
+move 7 from 4 to 3
+move 1 from 4 to 5
+move 1 from 2 to 8
+move 3 from 7 to 6
+move 3 from 4 to 8
+move 1 from 7 to 9
+move 2 from 4 to 7
+move 5 from 8 to 1
+move 3 from 6 to 5
+move 2 from 4 to 2
+move 1 from 9 to 4
+move 1 from 8 to 6
+move 1 from 2 to 9
+move 1 from 8 to 5
+move 3 from 8 to 4
+move 3 from 4 to 2
+move 4 from 3 to 9
+move 17 from 5 to 9
+move 9 from 9 to 6
+move 1 from 9 to 3
+move 5 from 6 to 3
+move 3 from 6 to 3
+move 8 from 9 to 5
+move 2 from 8 to 5
+move 1 from 4 to 8
+move 1 from 5 to 3
+move 1 from 8 to 5
+move 3 from 2 to 6
+move 3 from 1 to 4
+move 7 from 5 to 1
+move 1 from 2 to 6
+move 13 from 3 to 6
+move 2 from 7 to 8
+move 13 from 6 to 5
+move 3 from 5 to 7
+move 6 from 5 to 6
+move 1 from 7 to 6
+move 2 from 7 to 3
+move 1 from 6 to 8
+move 13 from 3 to 5
+move 9 from 5 to 9
+move 7 from 5 to 7
+move 17 from 9 to 2
+move 3 from 4 to 7
+move 9 from 2 to 9
+move 10 from 9 to 3
+move 8 from 7 to 8
+move 2 from 5 to 3
+move 4 from 2 to 6
+move 11 from 3 to 9
+move 9 from 6 to 5
+move 5 from 9 to 8
+move 1 from 3 to 1
+move 3 from 9 to 1
+move 2 from 5 to 2
+move 1 from 7 to 9
+move 2 from 9 to 4
+move 2 from 9 to 8
+move 13 from 1 to 8
+move 3 from 8 to 5
+move 27 from 8 to 1
+move 10 from 5 to 9
+move 1 from 7 to 2
+move 2 from 4 to 3
+move 10 from 9 to 6
+move 1 from 8 to 7
+move 15 from 1 to 9
+move 13 from 9 to 5
+move 15 from 5 to 7
+move 5 from 1 to 3
+move 8 from 7 to 1
+move 7 from 7 to 1
+move 16 from 1 to 8
+move 4 from 3 to 9
+move 4 from 1 to 7
+move 4 from 9 to 6
+move 5 from 2 to 7
+move 15 from 8 to 6
+move 1 from 9 to 1
+move 3 from 3 to 4
+move 1 from 9 to 7
+move 1 from 2 to 7
+move 1 from 2 to 7
+move 1 from 8 to 1
+move 3 from 4 to 8
+move 3 from 8 to 1
+move 8 from 6 to 8
+move 7 from 1 to 4
+move 11 from 6 to 8
+move 14 from 6 to 5
+move 13 from 8 to 7
+move 4 from 7 to 5
+move 15 from 7 to 4
+move 6 from 5 to 4
+move 2 from 5 to 9
+move 1 from 5 to 2
+move 3 from 8 to 5
+move 19 from 4 to 7
+move 10 from 5 to 8
+move 2 from 6 to 8
+move 1 from 4 to 8
+move 2 from 7 to 9
+move 9 from 7 to 4
+move 6 from 4 to 6
+move 11 from 4 to 8
+move 2 from 5 to 4
+move 5 from 6 to 4
+move 1 from 6 to 7
+move 3 from 9 to 5
+move 3 from 8 to 5
+move 3 from 7 to 6
+move 11 from 8 to 7
+move 1 from 9 to 5
+move 1 from 6 to 8
+move 1 from 2 to 1
+move 5 from 4 to 9
+move 2 from 4 to 1
+move 2 from 1 to 4
+move 1 from 1 to 9
+move 4 from 5 to 1
+move 1 from 4 to 6
+move 17 from 7 to 5
+move 9 from 8 to 7
+move 6 from 9 to 7
+move 3 from 1 to 9
+move 12 from 7 to 9
+move 12 from 9 to 5
+move 5 from 7 to 9
+move 17 from 5 to 3
+move 7 from 3 to 1
+move 5 from 1 to 5
+move 5 from 9 to 2
+move 4 from 3 to 5
+move 1 from 4 to 8
+move 5 from 2 to 1
+move 22 from 5 to 9
+move 3 from 7 to 6
+move 6 from 6 to 9
+move 2 from 5 to 4
+move 1 from 6 to 3
+move 2 from 4 to 1
+move 3 from 8 to 2
+move 1 from 3 to 4
+move 24 from 9 to 1
+move 4 from 3 to 9
+move 2 from 2 to 9
+move 2 from 3 to 1
+move 1 from 8 to 6
+move 1 from 6 to 9
+move 1 from 8 to 9
+move 2 from 7 to 4
+move 1 from 8 to 3
+move 1 from 4 to 7
+move 3 from 9 to 8
+move 1 from 2 to 1
+move 9 from 9 to 3
+move 1 from 8 to 7
+move 1 from 4 to 3
+move 2 from 9 to 7
+move 1 from 9 to 3
+move 2 from 8 to 4
+move 12 from 3 to 8
+move 2 from 1 to 7
+move 1 from 4 to 3
+move 30 from 1 to 5
+move 6 from 5 to 7
+move 12 from 7 to 2
+move 1 from 3 to 4
+move 2 from 1 to 3
+move 1 from 4 to 9
+move 10 from 5 to 7
+move 10 from 2 to 6
+move 8 from 8 to 3
+move 3 from 1 to 3
+move 5 from 6 to 3
+move 2 from 8 to 5
+move 1 from 9 to 2
+move 2 from 8 to 6
+move 4 from 7 to 2
+move 3 from 2 to 7
+move 2 from 7 to 5
+move 1 from 4 to 9
+move 11 from 3 to 1
+move 7 from 6 to 9
+move 3 from 2 to 3
+move 10 from 1 to 7
+move 14 from 7 to 5
+move 3 from 7 to 6
+move 5 from 9 to 7
+move 29 from 5 to 7
+move 6 from 3 to 9
+move 2 from 9 to 7
+move 15 from 7 to 5
+move 11 from 5 to 6
+move 5 from 9 to 5
+move 10 from 5 to 8
+move 1 from 2 to 4
+move 1 from 8 to 2
+move 2 from 4 to 3
+move 2 from 5 to 9
+move 8 from 8 to 9
+move 11 from 9 to 3
+move 1 from 1 to 8
+move 18 from 7 to 3
+move 1 from 9 to 3
+move 28 from 3 to 5
+move 12 from 6 to 7
+move 1 from 2 to 9
+move 15 from 7 to 2
+move 1 from 8 to 1
+move 10 from 2 to 9
+move 10 from 5 to 3
+move 2 from 2 to 3
+move 18 from 3 to 4
+move 6 from 9 to 4
+move 1 from 1 to 7
+move 1 from 6 to 4
+move 1 from 8 to 2
+move 1 from 9 to 4
+move 2 from 9 to 4
+move 19 from 4 to 3
+move 1 from 7 to 9
+move 1 from 9 to 7
+move 1 from 6 to 8
+move 3 from 2 to 8
+move 2 from 9 to 5
+move 15 from 3 to 1
+move 7 from 5 to 1
+move 3 from 4 to 9
+move 1 from 7 to 2
+move 3 from 3 to 1
+move 6 from 5 to 2
+move 3 from 3 to 9
+move 4 from 9 to 2
+move 5 from 5 to 3
+move 1 from 3 to 5
+move 3 from 5 to 7
+move 3 from 8 to 5
+move 1 from 7 to 5
+move 4 from 5 to 1
+move 4 from 4 to 2
+move 2 from 7 to 8
+move 12 from 1 to 6
+move 1 from 8 to 6
+move 6 from 2 to 3
+move 9 from 3 to 8
+move 1 from 3 to 4
+move 3 from 6 to 1
+move 2 from 9 to 2
+move 1 from 4 to 5
+move 2 from 8 to 3
+move 10 from 2 to 1
+move 2 from 4 to 7
+move 12 from 1 to 4
+move 1 from 5 to 1
+move 7 from 4 to 9
+move 2 from 3 to 2
+move 6 from 9 to 2
+move 1 from 9 to 1
+move 1 from 7 to 8
+move 5 from 6 to 7
+move 3 from 6 to 1
+move 6 from 2 to 3
+move 2 from 4 to 3
+move 1 from 6 to 8
+move 1 from 6 to 7
+move 8 from 3 to 9
+move 2 from 4 to 5
+move 3 from 2 to 4
+move 10 from 8 to 2
+move 22 from 1 to 9
+move 9 from 2 to 4
+move 1 from 1 to 3
+move 1 from 3 to 2
+move 3 from 2 to 4
+move 2 from 7 to 1
+move 14 from 4 to 2
+move 2 from 1 to 8
+move 2 from 4 to 5
+move 4 from 7 to 8
+move 24 from 9 to 6
+move 3 from 5 to 9
+move 1 from 9 to 8
+move 1 from 5 to 2
+move 1 from 6 to 7
+move 6 from 9 to 1
+move 1 from 7 to 3
+move 5 from 8 to 6
+move 9 from 6 to 3
+move 4 from 1 to 4
+move 2 from 1 to 2
+move 11 from 6 to 3
+move 13 from 3 to 2
+move 2 from 9 to 8
+move 8 from 3 to 8
+move 2 from 8 to 5
+move 1 from 7 to 5
+move 3 from 6 to 3
+move 11 from 8 to 5
+move 13 from 2 to 4
+move 10 from 5 to 2
+move 2 from 3 to 4
+move 2 from 5 to 7
+move 15 from 4 to 9
+move 2 from 7 to 4
+move 2 from 4 to 2
+move 2 from 4 to 9
+move 2 from 4 to 2
+move 1 from 3 to 8
+move 1 from 8 to 1
+move 1 from 1 to 2
+move 1 from 6 to 3
+move 7 from 2 to 4
+move 1 from 5 to 3
+move 7 from 9 to 1
+move 7 from 1 to 2
+move 4 from 6 to 9
+move 12 from 9 to 7
+move 6 from 7 to 5
+move 1 from 3 to 5
+move 7 from 4 to 7
+move 3 from 7 to 8
+move 3 from 8 to 6
+move 18 from 2 to 9
+move 7 from 2 to 3
+move 15 from 9 to 4
+move 3 from 3 to 9
+move 1 from 3 to 1
+move 3 from 5 to 4
+move 1 from 1 to 2
+move 1 from 9 to 2
+move 2 from 6 to 2
+move 5 from 7 to 6
+move 5 from 2 to 7
+move 3 from 3 to 4
+move 5 from 5 to 3
+move 6 from 7 to 4
+move 9 from 4 to 2
+move 18 from 4 to 9
+move 6 from 2 to 1
+move 1 from 1 to 9
+move 4 from 7 to 4
+move 7 from 2 to 4
+move 1 from 2 to 8
+move 1 from 4 to 2
+move 4 from 3 to 4
+move 16 from 9 to 5
+move 9 from 9 to 8
+move 1 from 9 to 7
+move 4 from 1 to 2
+move 2 from 5 to 4
+move 10 from 5 to 4
+move 4 from 2 to 1
+move 5 from 1 to 2
+move 1 from 8 to 5
+move 1 from 6 to 5
+move 4 from 8 to 5
+move 2 from 6 to 9
+move 3 from 6 to 2
+move 2 from 9 to 1
+move 1 from 7 to 6
+move 1 from 3 to 8
+move 9 from 5 to 9
+move 4 from 8 to 1
+move 2 from 8 to 2
+move 1 from 5 to 7
+move 9 from 9 to 8
+move 1 from 7 to 5
+move 9 from 8 to 2
+move 6 from 1 to 6
+move 6 from 2 to 6
+move 10 from 2 to 5
+move 5 from 2 to 1
+move 1 from 3 to 5
+move 8 from 5 to 4
+move 5 from 1 to 3
+move 10 from 6 to 8
+move 3 from 6 to 9
+move 4 from 3 to 1
+move 5 from 8 to 2
+move 4 from 5 to 9
+move 1 from 3 to 7
+move 1 from 7 to 3
+move 1 from 8 to 6
+move 1 from 6 to 1
+move 15 from 4 to 8
+move 5 from 9 to 2
+move 1 from 9 to 1
+move 1 from 1 to 3
+move 6 from 4 to 8
+move 12 from 8 to 7
+move 1 from 3 to 5
+move 3 from 1 to 9
+move 13 from 4 to 9
+move 5 from 7 to 2
+move 1 from 5 to 4
+move 8 from 9 to 5
+move 6 from 2 to 5
+move 2 from 5 to 6

+ 86 - 0
aoc05/src/main.rs

@@ -0,0 +1,86 @@
+use std::fs::File;
+use std::io::{BufReader,BufRead};
+
+fn main() {
+    let filename = "input.txt";
+    let file = File::open(filename).unwrap();
+    let reader = BufReader::new(file);
+    //ugly beacuse fuck rust and its weird array inits
+    let mut containers = [Vec::new(),Vec::new(),Vec::new(),Vec::new(),Vec::new(),Vec::new(),Vec::new(),Vec::new(),Vec::new()];
+    for (index,line) in reader.lines().enumerate(){
+        let line = line.unwrap();
+        //parse containers
+        if index < 8 {
+            let mut charpos = 0;
+            for c in line.chars(){
+                charpos += 1;
+                match c{
+                    '[' | ']' | ' ' => continue,
+                    _ => {
+                        let pos = (charpos + 2) / 4;
+                        containers[pos - 1].push(c);
+                        //println!("{c} - {charpos} - {pos}");
+                    }
+                }
+            }
+        }
+        if index == 9{
+            fix_containers(&mut containers);
+            print_containers(&containers);
+        }
+        //move containers
+        if index > 9{
+            let parts: Vec<&str> = line.split(' ').collect();
+            let ammount = parts[1].parse::<i32>().unwrap();
+            let from = parts[3].parse::<usize>().unwrap();
+            let to = parts[5].parse::<usize>().unwrap();
+            r#move(ammount,from,to,&mut containers);
+            println!("{line}");
+            print_containers(&containers);
+        }
+
+    }
+    let mut top: String = String::new();
+    for mut v in containers{
+        top.push(v.pop().unwrap());
+    }
+    println!("{top}");
+}
+
+fn print_containers(con: &[Vec<char>;9]){
+    println!("");
+    println!("");
+   for i in 0..9{
+       let mut line: String = String::new();
+       line.push_str(&(i+1).to_string());
+        for c in &con[i]{
+            line.push(*c);
+        }
+        println!("{line}");
+   }
+    println!("--------------------------------------------");
+}
+//apparenty move is a keyword and we can escape those with r# dunno how im ganna call this
+fn r#move(ammount: i32,from: usize, to: usize, containers: &mut [Vec<char>;9]){
+    for i in 0..ammount{
+        let crane: char = containers[from - 1].pop().unwrap();
+        containers[to - 1].push(crane);
+    }
+
+}
+
+
+fn fix_containers(con: &mut [Vec<char>;9]){
+    for i in 0..9{
+        let mut tmp = con[i].clone();
+        let tlen = tmp.len();
+        let clen = con[i].len();
+        println!("fixin tmp with length {tlen} form con with len {clen}");
+        con[i] = Vec::new();
+        for j in 0..tmp.len() {
+            let movin = tmp.pop().unwrap();
+            println!("{movin} - {j}");
+            con[i].push(movin);
+        }
+   }
+}