Browse Source

remake of rust exercise iterators

pull/883/head
MSilva95 3 years ago
parent
commit
16974fa502
  1. 38
      subjects/iterators/README.md

38
subjects/iterators/README.md

@ -2,15 +2,26 @@
### Instructions
Create a method `new` that takes one number `usize` and initializes the struct `Number`.
This method will have to determinate if the given number is even or odd. If it is even you will have to increment it by one to the next odd number and if it is odd you have to increment by one to the next even number.
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 be the even number, the second will be the odd number, and the third will be the factorial 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.
So the purpose is to return the given number in the right position. If it is even it will be at the first position, and if it is odd it will be in the second position. Apart from that you have to return the factorial of the given number in the third position.
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:
```console
Some((6, 5, 720))
```
### Notions
@ -44,13 +55,10 @@ struct Number {
}
fn main() {
let mut a = Number::new(5);
let mut a = Number::new(4);
println!("{:?}", a.next());
println!("{:?}", a.next());
println!("{:?}", a.next());
println!();
let mut b = Number::new(18);
println!("{:?}", b.next());
println!("{:?}", b.next());
println!("{:?}", b.next());
}
@ -60,12 +68,10 @@ And its output:
```console
$ cargo run
Some((6, 5, 120))
Some((8, 7, 720))
Some((10, 9, 5040))
Some((18, 19, 6402373705728000))
Some((20, 21, 121645100408832000))
Some((22, 23, 2432902008176640000))
Some((6, 5, 720))
Some((6, 7, 5040))
Some((8, 7, 40320))
Some((8, 9, 362880))
Some((10, 9, 3628800))
$
```

Loading…
Cancel
Save