mirror of https://github.com/01-edu/public.git
Add exercicio copy's subject and tests
This commit is contained in:
parent
52851af20a
commit
f9dd27e4eb
|
@ -0,0 +1,12 @@
|
|||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
[[package]]
|
||||
name = "copy"
|
||||
version = "0.1.0"
|
||||
|
||||
[[package]]
|
||||
name = "copy_test"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"copy",
|
||||
]
|
|
@ -0,0 +1,10 @@
|
|||
[package]
|
||||
name = "copy_test"
|
||||
version = "0.1.0"
|
||||
authors = ["lee <lee-dasilva@hotmail.com>"]
|
||||
edition = "2018"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
copy = { path = "../../../../rust-piscine-solutions/copy"}
|
|
@ -0,0 +1,105 @@
|
|||
/*
|
||||
## copy
|
||||
|
||||
### Instructions
|
||||
|
||||
Your objective is to fix the program so that all functions work.
|
||||
|
||||
- `nbr_function`, returns a tuple with the original value, the exponential and logarithm of that value
|
||||
- `str_function`, returns a tuple with the original value and the exponential of that value as a string
|
||||
- `vec_function`, returns a tuple with the original value and the logarithm of each value
|
||||
|
||||
The objective is to now how ownership works with different types.
|
||||
|
||||
### Example
|
||||
|
||||
```rust
|
||||
fn main() {
|
||||
let a = String::from("1 2 4 5 6");
|
||||
let b = vec![1, 2, 4, 5];
|
||||
let c: u32 = 0;
|
||||
|
||||
println!("{:?}", nbr_function(c));
|
||||
// output: (12, 162754.79141900392, 2.4849066497880004)
|
||||
println!("{:?}", vec_function(b));
|
||||
// output: ([1, 2, 4], [0.0, 0.6931471805599453, 1.3862943611198906])
|
||||
println!("{:?}", str_function(a));
|
||||
// output: ("1 2 4", "2.718281828459045 7.38905609893065 54.598150033144236")
|
||||
}
|
||||
```
|
||||
|
||||
### Notions
|
||||
|
||||
- https://doc.rust-lang.org/rust-by-example/scope/move.html
|
||||
*/
|
||||
|
||||
use copy::*;
|
||||
|
||||
#[allow(dead_code)]
|
||||
fn main() {
|
||||
let a = String::from("1 2 4 5 6");
|
||||
let b = vec![1, 2, 4, 5];
|
||||
let c: u32 = 0;
|
||||
|
||||
println!("{:?}", nbr_function(c));
|
||||
// output: (12, 162754.79141900392, 2.4849066497880004)
|
||||
println!("{:?}", vec_function(b));
|
||||
// output: ([1, 2, 4], [0.0, 0.6931471805599453, 1.3862943611198906])
|
||||
println!("{:?}", str_function(a));
|
||||
// output: ("1 2 4", "2.718281828459045 7.38905609893065 54.598150033144236")
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn ownership_nbr_test() {
|
||||
assert_eq!(
|
||||
nbr_function(12),
|
||||
(12, 162754.79141900392, 2.4849066497880004)
|
||||
);
|
||||
assert_eq!(nbr_function(1), (1, 2.718281828459045, 0.0));
|
||||
assert_eq!(nbr_function(0), (0, 1.0, std::f64::INFINITY));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn ownership_vec_test() {
|
||||
assert_eq!(
|
||||
vec_function(vec![1, 2, 4]),
|
||||
(
|
||||
vec![1, 2, 4],
|
||||
vec![0.0, 0.6931471805599453, 1.3862943611198906]
|
||||
)
|
||||
);
|
||||
assert_eq!(
|
||||
vec_function(vec![0, 1]),
|
||||
(vec![0, 1], vec![std::f64::INFINITY, 0.0])
|
||||
);
|
||||
assert_eq!(
|
||||
vec_function(vec![1, 2, 4, 5]),
|
||||
(
|
||||
vec![1, 2, 4, 5],
|
||||
vec![
|
||||
0.0,
|
||||
0.6931471805599453,
|
||||
1.3862943611198906,
|
||||
1.6094379124341003
|
||||
]
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn ownership_str_test() {
|
||||
assert_eq!(
|
||||
str_function(String::from("1 2 4")),
|
||||
(
|
||||
"1 2 4".to_string(),
|
||||
"2.718281828459045 7.38905609893065 54.598150033144236".to_string()
|
||||
)
|
||||
);
|
||||
assert_eq!(
|
||||
str_function(String::from("1 0")),
|
||||
(("1 0".to_string(), "2.718281828459045 1".to_string()))
|
||||
);
|
||||
assert_eq!(str_function(
|
||||
String::from("1 2 4 5 6")),
|
||||
(("1 2 4 5 6".to_string(), "2.718281828459045 7.38905609893065 54.598150033144236 148.4131591025766 403.4287934927351".to_string())));
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
## copy
|
||||
|
||||
### Instructions
|
||||
|
||||
Your objective is to fix the program so that all functions work.
|
||||
|
||||
- `nbr_function`, returns a tuple with the original value, the exponential and logarithm of that value
|
||||
- `str_function`, returns a tuple with the original value and the exponential of that value as a string
|
||||
- `vec_function`, returns a tuple with the original value and the logarithm of each value
|
||||
|
||||
The objective is to now how ownership works with different types.
|
||||
|
||||
### Notions
|
||||
|
||||
- https://doc.rust-lang.org/rust-by-example/scope/move.html
|
||||
|
||||
### Expected Functions
|
||||
|
||||
```rust
|
||||
pub fn nbr_function(c: u32) -> (u32, f64, f64) {
|
||||
}
|
||||
|
||||
pub fn str_function(a: String) -> (String, String) {
|
||||
}
|
||||
|
||||
pub fn vec_function(b: Vec<u32>) -> (Vec<u32>, Vec<f64>) {
|
||||
}
|
||||
```
|
||||
|
||||
### Usage
|
||||
|
||||
Here is a possible program to test your function :
|
||||
|
||||
```rust
|
||||
fn main() {
|
||||
let a = String::from("1 2 4 5 6");
|
||||
let b = vec![1, 2, 4, 5];
|
||||
let c: u32 = 0;
|
||||
|
||||
println!("{:?}", nbr_function(c));
|
||||
// output: (12, 162754.79141900392, 2.4849066497880004)
|
||||
println!("{:?}", vec_function(b));
|
||||
// output: ([1, 2, 4], [0.0, 0.6931471805599453, 1.3862943611198906])
|
||||
println!("{:?}", str_function(a));
|
||||
// output: ("1 2 4", "2.718281828459045 7.38905609893065 54.598150033144236")
|
||||
}
|
||||
```
|
||||
|
||||
And its output:
|
||||
|
||||
```console
|
||||
student@ubuntu:~/[[ROOT]]/test$ cargo run
|
||||
(0, 1.0, inf)
|
||||
([1, 2, 4, 5], [0.0, 0.6931471805599453, 1.3862943611198906, 1.6094379124341003])
|
||||
("1 2 4 5 6", "2.718281828459045 7.38905609893065 54.598150033144236 148.4131591025766 403.4287934927351")
|
||||
student@ubuntu:~/[[ROOT]]/test$
|
||||
```
|
Loading…
Reference in New Issue