pub mod roman {
pub trait Roman {
fn roman(&self) -> String;
}
impl Roman for &str {
fn roman(&self) -> String {
let mut ord: i64;
let mut min_ord: String = String::new();
let mut encoded: Vec<String> = Vec::new();
let alphabet: Vec<(&str, i64)> =
vec![("M", 1000), ("CM", 900),
("D", 500), ("CD", 400),
("C", 100), ("XC", 90),
("L", 50), ("XL", 40),
("X", 10), ("IX", 9),
("V", 5), ("IV", 4),
("I", 1)];
for c in self.chars() {
ord = c as i64;
for (symbol, value) in &alphabet {
while value <= &ord {
min_ord += symbol;
ord -= value;
}
}
encoded.push(min_ord);
min_ord = String::new();
}
return encoded.join(" ");
}
}
}