diff --git a/.gitignore b/.gitignore index 5da92f7..6f6f9cd 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,6 @@ Cargo.lock # Sublime algos.sublime-project algos.sublime-workspace + +# Data for the exercises. Some files are big so don't check them in. +data/c2a4.txt diff --git a/misc/birthday_problem.py b/misc/birthday_problem.py new file mode 100644 index 0000000..174f8b7 --- /dev/null +++ b/misc/birthday_problem.py @@ -0,0 +1,16 @@ +def p_all_different(n): + p = 1 + free_days = 365 + days_year = 365 + for i in range(0, n): + p = p * (free_days / days_year) + free_days -= 1 + return p + + +if __name__ == "__main__": + for i in range(1, 30): + print(f"p_all_different({i})={p_all_different(i)}") + if p_all_different(i) < 0.5: + break + diff --git a/png/dijkstra_1.png b/misc/dijkstra_1.png similarity index 100% rename from png/dijkstra_1.png rename to misc/dijkstra_1.png diff --git a/png/dijkstra_2.png b/misc/dijkstra_2.png similarity index 100% rename from png/dijkstra_2.png rename to misc/dijkstra_2.png diff --git a/png/dijkstra_3.png b/misc/dijkstra_3.png similarity index 100% rename from png/dijkstra_3.png rename to misc/dijkstra_3.png diff --git a/src/merge_sort.py b/misc/merge_sort.py similarity index 100% rename from src/merge_sort.py rename to misc/merge_sort.py diff --git a/src/heap.rs b/src/heap.rs index 7251e6c..005ca85 100644 --- a/src/heap.rs +++ b/src/heap.rs @@ -91,9 +91,9 @@ impl MinHeap { } } -pub fn heap(v: &Vec) -> i32 { - let mut hl: MinHeap = MinHeap::new(); - let mut hh: MinHeap = MinHeap::new(); +pub fn heap(v: &Vec) -> i64 { + let mut hl: MinHeap = MinHeap::new(); + let mut hh: MinHeap = MinHeap::new(); let mut iter = v.into_iter(); let mut current_median = *iter.next().unwrap(); diff --git a/src/main.rs b/src/main.rs index 40d10f6..a04d0d1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,15 +5,16 @@ mod min_cut; mod quick_sort; mod ssc; mod util; +mod two_sum; use std::cmp::min; - use crate::dijkstra::dijkstra; use crate::heap::heap; use crate::merge_sort::merge_sort_inversions; use crate::min_cut::min_cut; use crate::quick_sort::quick_sort; use crate::ssc::ssc; +use crate::two_sum::find_two_sums; #[allow(dead_code)] fn c1a2() { @@ -70,16 +71,24 @@ fn c2a2() { #[allow(dead_code)] fn c2a3() { - let vec = util::read_to_vector("data/c2a3.txt").unwrap(); - let r = heap(&vec); + let v = util::read_to_vector("data/c2a3.txt").unwrap(); + let r = heap(&v); println!("c2a3={:?}", r); } +#[allow(dead_code)] +fn c2a4() { + let v = util::read_to_vector("data/c2a4.txt").unwrap(); + let r = find_two_sums(v); + println!("c2a4={:?}", r); +} + fn main() { // c1a2(); // c1a3(); // c1a4(); // c2a1(); // c2a2(); - c2a3(); + // c2a3(); + c2a4(); } diff --git a/src/two_sum.rs b/src/two_sum.rs new file mode 100644 index 0000000..cd38aa0 --- /dev/null +++ b/src/two_sum.rs @@ -0,0 +1,13 @@ + +fn two_sum(t: i64, xs_vec: &Vec) { + +} + +pub fn find_two_sums(xs: Vec) -> usize { + + + + 0 +} + + diff --git a/src/util.rs b/src/util.rs index eab8a95..1073b74 100644 --- a/src/util.rs +++ b/src/util.rs @@ -23,7 +23,7 @@ pub struct DirectedWeightedGraph { pub distance: Vec, } -pub fn read_to_vector(path: &str) -> Result, io::Error> { +pub fn read_to_vector(path: &str) -> Result, io::Error> { let file = File::open(path)?; let br = BufReader::new(file); let mut v = Vec::new();