mirror of https://github.com/01-edu/public.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1.7 KiB
1.7 KiB
iterators
Instructions
Create a method new
that takes one number usize
and initializes the Number
struct.
This method will have to determinate if the given number is even or odd.
After that you will implement an iterator for the struct Number
that returns a tuple (usize,usize,usize) containing each field of the struct Number.
The first position of the tuple will have the even numbers, the second will have the odd numbers, and the third will have the factorial numbers.
That being said, You will have to follow this rules:
- If the number is even you will have to calculate the factorial of the next odd number.
- If the number is odd you will have to calculate the factorial of the next even number.
- The tupple has to return all the numbers in the right positions.
Example:
If a = 5
, 5 is odd, the next even is 6, so the factorial of 6 is 720. Your program will return the following:
Some((6, 5, 720))
Notions
Expected functions
impl Number {
pub fn new(nbr: usize) -> Number {
}
}
impl Iterator for Number {
pub fn next(&mut self) -> Option<Self::Item> {}
}
Usage
Here is a program to test your function.
use iterators::*;
struct Number {
even: usize,
odd: usize,
fact: usize,
}
fn main() {
let mut a = Number::new(4);
println!("{:?}", a.next());
println!("{:?}", a.next());
println!("{:?}", a.next());
println!("{:?}", b.next());
println!("{:?}", b.next());
}
And its output:
$ cargo run
Some((6, 5, 720))
Some((6, 7, 5040))
Some((8, 7, 40320))
Some((8, 9, 362880))
Some((10, 9, 3628800))
$