41 lines
862 B
Plaintext
41 lines
862 B
Plaintext
extern crate rand;
|
|
|
|
trait Balanced {
|
|
/// Returns true if the brackets are balanced
|
|
fn is_balanced(&self) -> bool;
|
|
}
|
|
|
|
impl<'a> Balanced for str {
|
|
fn is_balanced(&self) -> bool {
|
|
let mut count = 0;
|
|
|
|
for bracket in self.chars() {
|
|
let change = match bracket {
|
|
'[' => 1,
|
|
']' => -1,
|
|
_ => panic!("Strings should only contain brackets")
|
|
};
|
|
|
|
count += change;
|
|
if count < 0 { return false; }
|
|
}
|
|
|
|
count == 0
|
|
}
|
|
}
|
|
|
|
/// Generates random brackets
|
|
fn generate_brackets(num: usize) -> String {
|
|
use rand::random;
|
|
|
|
(0..num).map(|_| if random() { '[' } else { ']' }).collect()
|
|
}
|
|
|
|
fn main() {
|
|
for i in (0..10) {
|
|
let brackets = generate_brackets(i);
|
|
|
|
println!("{} {}", brackets, brackets.is_balanced())
|
|
}
|
|
}
|