Prepare for course 2 assignment 1
This commit is contained in:
13
src/main.rs
13
src/main.rs
@@ -1,13 +1,16 @@
|
|||||||
mod merge_sort;
|
mod merge_sort;
|
||||||
mod quick_sort;
|
mod quick_sort;
|
||||||
|
mod ssc;
|
||||||
mod min_cut;
|
mod min_cut;
|
||||||
mod util;
|
mod util;
|
||||||
|
|
||||||
use crate::util::read_to_graph;
|
use crate::util::read_to_graph;
|
||||||
|
use crate::util::read_to_directed_graph;
|
||||||
use crate::util::read_to_vector;
|
use crate::util::read_to_vector;
|
||||||
use crate::min_cut::min_cut;
|
use crate::min_cut::min_cut;
|
||||||
use crate::quick_sort::quick_sort;
|
use crate::quick_sort::quick_sort;
|
||||||
use crate::merge_sort::merge_sort_inversions;
|
use crate::merge_sort::merge_sort_inversions;
|
||||||
|
use crate::ssc::ssc;
|
||||||
|
|
||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
fn c1a2() {
|
fn c1a2() {
|
||||||
@@ -44,8 +47,16 @@ fn c1a4() {
|
|||||||
println!("course 1 assignment 4: {:?}", smalles_min_cut);
|
println!("course 1 assignment 4: {:?}", smalles_min_cut);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
|
fn c2a1() {
|
||||||
|
let g = read_to_directed_graph("data/course_2_assignment_1.txt").unwrap();
|
||||||
|
let s = ssc(g);
|
||||||
|
println!("{:?}", s);
|
||||||
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
// c1a2();
|
// c1a2();
|
||||||
// c1a3();
|
// c1a3();
|
||||||
c1a4();
|
// c1a4();
|
||||||
|
c2a1();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,7 @@
|
|||||||
use rand::Rng;
|
use rand::Rng;
|
||||||
|
use crate::util::Graph;
|
||||||
use std::convert::TryInto;
|
use std::convert::TryInto;
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
|
||||||
pub struct Graph {
|
|
||||||
pub nodes: Vec<u32>,
|
|
||||||
pub edges: Vec<(u32, u32)>,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn min_cut(mut g: Graph) -> u32 {
|
pub fn min_cut(mut g: Graph) -> u32 {
|
||||||
let mut rng = rand::thread_rng();
|
let mut rng = rand::thread_rng();
|
||||||
// println!("min_cut({:?})\n", g);
|
// println!("min_cut({:?})\n", g);
|
||||||
|
|||||||
5
src/ssc.rs
Normal file
5
src/ssc.rs
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
use crate::util::Graph;
|
||||||
|
|
||||||
|
pub fn ssc(_g: Graph) -> u32 {
|
||||||
|
0
|
||||||
|
}
|
||||||
23
src/util.rs
23
src/util.rs
@@ -1,9 +1,13 @@
|
|||||||
use crate::min_cut::Graph;
|
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::io::{BufRead, BufReader, Error, ErrorKind};
|
use std::io::{BufRead, BufReader, Error, ErrorKind};
|
||||||
use std::vec::Vec;
|
use std::vec::Vec;
|
||||||
|
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub struct Graph {
|
||||||
|
pub nodes: Vec<u32>,
|
||||||
|
pub edges: Vec<(u32, u32)>,
|
||||||
|
}
|
||||||
|
|
||||||
pub fn read_to_vector(path: &str) -> Result<Vec<i64>, io::Error> {
|
pub fn read_to_vector(path: &str) -> Result<Vec<i64>, io::Error> {
|
||||||
let file = File::open(path)?;
|
let file = File::open(path)?;
|
||||||
@@ -45,3 +49,20 @@ pub fn read_to_graph(path: &str) -> Result<Graph, io::Error> {
|
|||||||
}
|
}
|
||||||
Ok(g)
|
Ok(g)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn read_to_directed_graph(path: &str) -> Result<Graph, io::Error> {
|
||||||
|
let mut g = Graph { nodes: vec![], edges: vec![] };
|
||||||
|
let file = File::open(path)?;
|
||||||
|
let br = BufReader::new(file);
|
||||||
|
|
||||||
|
for line in br.lines() {
|
||||||
|
let line = line?;
|
||||||
|
let mut nodes = line.split_whitespace();
|
||||||
|
let first_node = nodes.next().unwrap().parse().unwrap();
|
||||||
|
let second_node = nodes.next().unwrap().parse().unwrap();
|
||||||
|
let edge = (first_node, second_node);
|
||||||
|
g.edges.push(edge);
|
||||||
|
}
|
||||||
|
println!("{:?}", g);
|
||||||
|
Ok(g)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user