Browse Source

Add the subject and test of the exercise `matrix`

content-update
Augusto 3 years ago
parent
commit
a110657678
  1. 19
      rust/tests/matrix_test/Cargo.lock
  2. 10
      rust/tests/matrix_test/Cargo.toml
  3. 55
      rust/tests/matrix_test/src/main.rs
  4. 57
      subjects/matrix/README.md

19
rust/tests/matrix_test/Cargo.lock diff.generated

@ -0,0 +1,19 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
[[package]]
name = "lalgebra_scalar"
version = "0.1.0"
[[package]]
name = "matrix"
version = "0.1.0"
dependencies = [
"lalgebra_scalar",
]
[[package]]
name = "matrix_test"
version = "0.1.0"
dependencies = [
"matrix",
]

10
rust/tests/matrix_test/Cargo.toml

@ -0,0 +1,10 @@
[package]
name = "matrix_test"
version = "0.1.0"
authors = ["Augusto <aug.ornelas@gmail.com>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
matrix = { path = "../../../../rust-piscine-solutions/matrix"}

55
rust/tests/matrix_test/src/main.rs

@ -0,0 +1,55 @@
// First exercise
// # Instructions
// Define a data structure to represent a matrix of any size and
// implement the basic operations for this you will need to follow the
// next steps:
// You can use a 2 dimensional Vec<T>'s
// We will consider a matrix as a rectangular arrangements of scalars
// You can use the definition of scalars done in the last exercise:
// `lalgebra_scalar`
// Then define the associated function `identity` that returns the identity matrix
// of size n
// Ex:
// Matrix::identity(3) == [[1,0,0], [0,1,0], [0,0,1]]
// And the associated function `zero` that returns a matrix of size
// `row x col` with all the positions filled by zeroes
// Ex:
// Matrix::zero(3, 3) == [[0,0,0],[0,0,0],[0,0,0]]
// Resources: https://doc.rust-lang.org/book/ch19-03-advanced-traits.html
use matrix::Matrix;
#[allow(dead_code)]
fn main() {
let m: Matrix<u32> = Matrix(vec![vec![0, 0, 0, 0], vec![0, 0, 0, 0], vec![0, 0, 0, 0]]);
println!("{:?}", m);
println!("{:?}", Matrix::<i32>::identity(4));
println!("{:?}", Matrix::<i32>::zero(3, 4));
}
#[test]
fn zero_property() {
let matrix: Matrix<u32> = Matrix::zero(3, 4);
let expected: Matrix<u32> = Matrix(vec![vec![0, 0, 0, 0], vec![0, 0, 0, 0], vec![0, 0, 0, 0]]);
assert_eq!(matrix, expected);
let matrix: Matrix<u32> = Matrix::zero(2, 2);
let expected: Matrix<u32> = Matrix(vec![vec![0, 0], vec![0, 0]]);
assert_eq!(matrix, expected);
}
#[test]
fn identy_matrix() {
let matrix: Matrix<u32> = Matrix::identity(2);
let expected: Matrix<u32> = Matrix(vec![vec![1, 0], vec![0, 1]]);
assert_eq!(matrix, expected);
let matrix: Matrix<u32> = Matrix::identity(3);
let expected: Matrix<u32> = Matrix(vec![vec![1, 0, 0], vec![0, 1, 0], vec![0, 0, 1]]);
assert_eq!(matrix, expected);
}

57
subjects/matrix/README.md

@ -0,0 +1,57 @@
## matrix
### Instructions
Define a data structure to represent a matrix of any size and implement the basic operations for this you will need to follow the next steps:
You can use a 2 dimensional Vec<T>'s We will consider a matrix as a rectangular arrangements of scalars.
You have to use the definition of scalars done in the last exercise: `lalgebra_scalar`
Then define the associated function `identity` that returns the identity matrix of size n
And the associated function `zero` that returns a matrix of size `row x col` with all the positions filled by zeroes
### Notions
[Traits]( https://doc.rust-lang.org/book/ch19-03-advanced-traits.html )
### Expected Functions and Structure
```rust
pub struct Matrix<T>(pub Vec<Vec<T>>);
impl Matrix<T> {
pub fn new() -> Matrix<T> {
}
pub fn zero(row: usize, col: usize) -> Matrix<T> {
}
pub fn identity(n: usize) -> Matrix<T> {
}
}
```
### Usage
Here is a program to test your function.
```rust
fn main() {
let m: Matrix<u32> = Matrix(vec![vec![0, 0, 0, 0], vec![0, 0, 0, 0], vec![0, 0, 0, 0]]);
println!("{:?}", m);
println!("{:?}", Matrix::<i32>::identity(4));
println!("{:?}", Matrix::<f64>::zero(3, 4));
}
```
And its output
```console
student@ubuntu:~/[[ROOT]]/test$ cargo run
Matrix([[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]])
Matrix([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]])
Matrix([[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]])
student@ubuntu:~/[[ROOT]]/test$
```
Loading…
Cancel
Save