This repository has been archived on 2024-10-09. You can view files and clone it, but cannot push or open issues or pull requests.
2023-05-31 12:47:31 +02:00

90 lines
2.2 KiB
Rust

use std::{fs::File, io::Read};
pub fn fill_with_random(matrix: &mut Vec<Vec<usize>>, size: usize) {
for i in 0..size {
matrix.push(vec![]);
for j in 0..size {
if i == j {
matrix[i].push(0);
continue;
}
matrix[i].push(fastrand::usize(0..2));
}
}
}
pub fn mult(matrix1: &Vec<Vec<usize>>, matrix2: &Vec<Vec<usize>>) -> Vec<Vec<usize>> {
let mut product: Vec<Vec<usize>> = vec![];
let mut sum: usize;
for i in 0..matrix1.len() {
product.push(vec![]);
for j in 0..matrix1.len() {
sum = 0;
for k in 0..matrix1.len() {
sum += matrix1[i][k] * matrix2[k][j];
}
product[i].push(sum);
}
}
product
}
pub fn show(matrix: &Vec<Vec<usize>>) {
for vector in matrix {
for int in vector {
print!("{int} ");
}
println!();
}
}
pub fn read_csv() -> Vec<Vec<usize>> {
let matrix: Vec<Vec<usize>> = vec![
vec![0, 0, 1, 1, 0],
vec![0, 0, 1, 1, 0],
vec![1, 1, 0, 1, 0],
vec![1, 1, 1, 0, 1],
vec![0, 0, 0, 1, 0]
];
/*
let mut csv = File::open("/home/rene/projects/Java/graphprogram/csv/art-brck.csv").unwrap();
let mut content = String::new();
csv.read_to_string(&mut content).unwrap();
println!("{content}");
now I need regex to filter and put everything into a two dim vector
See https://crates.io/crates/regex for regex crate
See https://docs.rs/regex/1.8.3/regex/struct.Regex.html for regex crate documentation
See https://doc.rust-lang.org/std/fs/struct.File.html for file ops
*/
matrix
}
pub fn test() {
let matrix1: Vec<Vec<usize>> = vec![
vec![0, 0, 1, 1, 0],
vec![0, 0, 1, 1, 0],
vec![1, 1, 0, 1, 0],
vec![1, 1, 1, 0, 1],
vec![0, 0, 0, 1, 0]
];
let matrix2: Vec<Vec<usize>>;
matrix2 = matrix1.clone();
println!("A:");
show(&matrix1);
let mut product: Vec<Vec<usize>> = mult(&matrix1, &matrix2);
println!("\nA²:");
show(&product);
product = mult(&product, &matrix1);
println!("\nA³:");
show(&product);
}