a few days

This commit is contained in:
Tim Nope
2022-12-21 20:04:44 +01:00
parent 83c28369c7
commit 2292e4a65f
741 changed files with 8372 additions and 98 deletions

View File

@ -1,4 +1,95 @@
pub fn run(inp :Vec<String>) {
}
fn decript_message(mut mes: Vec<(i32, usize)>) -> Vec<(i32, usize)> {
let n = mes.len();
let mut index = 0;
while index < n {
// look for current index
let i = mes.iter().position(|elem| elem.1 == index).unwrap();
let e = mes[i].0;
let rang_num = mes[i].1;
if e == 0 {
println!("{}, {}, {}", e, i, rang_num);
}
if e > 0 {
let mut new_index = i as i32 + e;
//let mut to_add = new_index;
//while {
// to_add /= mes.len() as i32;
// to_add >= mes.len() as i32
//} {}
//new_index = (new_index % mes.len() as i32) + to_add;
while new_index >= mes.len() as i32 {
new_index -= mes.len() as i32;
new_index += 1;
}
mes.remove(i);
mes.insert(new_index as usize, (e, rang_num));
} else if e < 0 {
let mut new_index = i as i32 + e;
//let to_sub = new_index.abs() / mes.len() as i32;
//new_index = (new_index % mes.len() as i32) - to_sub;
while new_index < 0 {
new_index += mes.len() as i32;
new_index -= 1;
}
mes.remove(i);
mes.insert(new_index as usize, (e, rang_num));
}
index += 1;
}
mes
}
pub fn run(inp: Vec<String>) {
let parsed_inp: Vec<(i32, usize)> = inp
.iter()
.enumerate()
.map(|elem| (elem.1.parse::<i32>().unwrap(), elem.0))
.collect();
let decripted_message = decript_message(parsed_inp);
println!("{:?}", decripted_message);
// find index of 0:
for (i, e) in decripted_message.iter().enumerate() {
if e.0 == 0 {
let a = decripted_message[(i + 1000) % decripted_message.len()].0;
let b = decripted_message[(i + 2000) % decripted_message.len()].0;
let c = decripted_message[(i + 3000) % decripted_message.len()].0;
println!("a:{}; b:{}, c:{}", a, b, c);
println!("a1: {}", a + b + c);
}
}
}

View File

@ -1,5 +1,106 @@
pub fn run(inp :Vec<String>) {
fn decript_message(mut mes: Vec<(i64, usize)>) -> Vec<(i64, usize)> {
}
let n = mes.len();
for _ in 0..10 {
let mut index = 0;
while index < n {
// look for current index
let i = mes.iter().position(|elem| elem.1 == index).unwrap();
let e = mes[i].0;
let rang_num = mes[i].1;
if e == 0 {
println!("{}, {}, {}", e, i, rang_num);
}
if e > 0 {
let mut new_index = i as i64 + e;
/*
let mut to_add = new_index / mes.len() as i64;
while {
to_add = to_add / mes.len() as i64;
to_add >= mes.len() as i64
} {}
*/
//let to_add = new_index / mes.len() as i64;
//new_index = (new_index % mes.len() as i64) + to_add;
/*
while new_index >= mes.len() as i64 {
new_index -= mes.len() as i64;
new_index += 1;
}
*/
mes.remove(i);
mes.insert(new_index as usize, (e, rang_num));
} else if e < 0 {
let mut new_index = i as i64 + e;
//let to_sub = new_index.abs() / mes.len() as i64;
//new_index = (new_index % mes.len() as i64) - to_sub;
while new_index < 0 {
new_index += mes.len() as i64;
new_index -= 1;
}
mes.remove(i);
mes.insert(new_index as usize, (e, rang_num));
}
index += 1;
}
}
mes
}
pub fn run(inp: Vec<String>) {
const DECRIPTION_KEY :i64 = 811589153;
let parsed_inp: Vec<(i64, usize)> = inp
.iter()
.enumerate()
.map(|elem| (elem.1.parse::<i64>().unwrap() * DECRIPTION_KEY, elem.0))
.collect();
let decripted_message = decript_message(parsed_inp);
println!("{:?}", decripted_message);
// find index of 0:
for (i, e) in decripted_message.iter().enumerate() {
if e.0 == 0 {
let a = decripted_message[(i + 1000) % decripted_message.len()].0;
let b = decripted_message[(i + 2000) % decripted_message.len()].0;
let c = decripted_message[(i + 3000) % decripted_message.len()].0;
println!("a:{}; b:{}, c:{}", a, b, c);
println!("a2: {}", a + b + c);
}
}
}

View File

@ -3,7 +3,7 @@ use std::io::BufRead;
mod a1;
mod a2;
fn read_file(path :&str) -> Vec<String> {
pub fn read_file(path :&str) -> Vec<String> {
let file = std::fs::File::open(path);
@ -32,7 +32,7 @@ fn read_file(path :&str) -> Vec<String> {
fn main() {
let inp :Vec<String> = read_file("input.txt");
let inp :Vec<String> = read_file("test_input.txt");
a1::run(inp.clone());