RosettaCodeData/Task/Ethiopian-multiplication/Rust/ethiopian-multiplication.rust
2015-11-18 06:14:39 +00:00

35 lines
650 B
Text

fn double(a: i32) -> i32 {
2*a
}
fn halve(a: i32) -> i32 {
a/2
}
fn is_even(a: i32) -> bool {
a % 2 == 0
}
fn ethiopian_multiplication(mut x: i32, mut y: i32) -> i32 {
let mut sum = 0;
while x >= 1 {
print!("{} \t {}", x, y);
match is_even(x) {
true => println!("\t Not Kept"),
false => {
println!("\t Kept");
sum += y;
}
}
x = halve(x);
y = double(y);
}
sum
}
fn main() {
let output = ethiopian_multiplication(17, 34);
println!("---------------------------------");
println!("\t {}", output);
}