-
Notifications
You must be signed in to change notification settings - Fork 1
/
create_bitvec.rs
48 lines (42 loc) · 1.12 KB
/
create_bitvec.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
extern crate bv;
extern crate rand;
extern crate fp_succinct_trees_1;
use bv::{BitVec, BitsMut};
use fp_succinct_trees_1::bp_tree::*;
use fp_succinct_trees_1::common::succinct_tree::SuccinctTree;
use fp_succinct_trees_1::common::errors::InvalidBitvecError;
fn main() {
while true {
let tree: Result<BPTree<i32>, InvalidBitvecError> = BPTree::from_bitvec(generate_bits());
match tree {
Ok(tree) => {
println!("Found {:?}", tree);
tree.save_to("testdata/bphuge.benchdata".to_string());
break;
},
Err(_) => {}
}
}
}
fn generate_bits() -> BitVec<u8> {
let mut bv: BitVec<u8> = BitVec::new();
let mut excess = 0;
for i in 0..10000 {
let bit = rand::random::<bool>();
bv.push(bit);
if bit {
excess += 1;
} else { excess -= 1; }
}
while excess != 0 {
if excess < 0 {
bv.push( true);
excess += 1;
} else {
bv.push(false);
excess -= 1;
}
}
// println!("Generated bv: {:?}", bv);
bv
}